2017C語言程序設(shè)計實驗報告

字號:

實驗名稱 計算出1000以內(nèi)10個大素數(shù)之和
    實驗?zāi)康?BR>    1、熟練掌握if、if…else、if…else if語句和witch語句格式及使用方法,掌握if語句中的嵌套關(guān)系和匹配原則,利用if語句和switch語句實現(xiàn)分支選擇結(jié)構(gòu)。
    2、熟練掌握while語句、do…while語句和for語句格式及使用方法,掌握三種循環(huán)控制語句的循環(huán)過程以及循環(huán)結(jié)構(gòu)的嵌套,利用循環(huán)語句實現(xiàn)循環(huán)結(jié)構(gòu)。
    3、掌握簡單、常用的算法,并在編程過程中體驗各種算法的編程技巧。進一步學(xué)習(xí)調(diào)試程序,掌握語法錯誤和邏輯錯誤的檢查方法。
    實驗內(nèi)容
    計算并輸出1000以內(nèi)大的10個素數(shù)以及它們的和。
    要求:
    在程序內(nèi)部加必要的注釋。
    由于偶數(shù)不是素數(shù),可以不考慮對偶數(shù)的處理。
    雖然在1000以內(nèi)的素數(shù)超過10個,但是要對1000以內(nèi)不夠10個素數(shù)的情況進行處理。
    輸出形式為:素數(shù)1+素數(shù)2+素數(shù)3+…+素數(shù)10=總和值。
    算法描述流程圖
    Main函數(shù):
    判斷素數(shù):
    源程序
    #include
    #include
    int sushu(int n)/* 判斷素數(shù)的函數(shù) */
    {
    int t,i;
    t=sqrt(n);
    for(i=2;i<=t;i++)
    if(n%i==0)/* 如果不是素數(shù),返回 0 */
    return 0;
    return n;/* 如果是素數(shù),返回該數(shù) */
    }
    void main()
    {
    int i,j=0,n,m=0,a[1000],x;
    /*clrscr();*/
    printf("Please input a number form 1 to 1000:");
    scanf("%d",&x);
    if(x==2)/* x=2時的處理 */
    printf("%d\n",x);
    else if(x<=1) /* x在1~1000范圍外時的處理 */
    printf("Error!\n");
    else
    {
    if(x%2==0)/* x為偶數(shù)時,把x變?yōu)槠鏀?shù) */
    x--;
    for(i=x;i>1;i-=2)/* x為奇數(shù)時,做函數(shù)計算 */
    {
    n=sushu(i); /* 做判斷素數(shù)的函數(shù)調(diào)用 */
    ( 勵志天下 www.lizhi123.net )
    if(n!=0)/* 對素數(shù)的處理 */
    {
    a[j]=n;/* 把素數(shù)由大至小存入數(shù)組a[ ]中 */
    j++;
    if(j<11)
    m+=n;      /* 統(tǒng)計前10個素數(shù)之和 */
    }
    }
    if(j<10)/* 當(dāng)素數(shù)個數(shù)小于10個時,結(jié)果輸出 */
    {
    for(i=0;i
    {
    n=a[i];
    printf("%d",n);
    printf("+");
    }
    printf("2=");
    printf("%d\n",m+2);
    }
    else for(i=0;i<10;i++)/* 當(dāng)素數(shù)個數(shù)大于等于10個時,結(jié)果輸出 */
    {
    n=a[i];
    printf("%d",n);
    if(i<9)
    printf("+");
    else
    {
    printf("=");
    printf("%d\n",m);
    }
    }
    }
    }
    測試數(shù)據(jù)
    分別輸入1000、100、10測試。
    運行結(jié)果
    出現(xiàn)問題及解決方法
    當(dāng)素數(shù)個數(shù)小于10時的處理不夠完善,考慮不夠周全。把“+2”的處理做的太勉強。
    程序過大,不夠精簡,無用文字太多。
    學(xué)習(xí)耐心與細心不足,如scanf(“%d”,&n);中的“&”經(jīng)常忘記。
    編程思想不夠發(fā)散,例如如何判斷素數(shù),只能想出2種方式(其中1種為參考教科書上內(nèi)容);在今后學(xué)習(xí)中應(yīng)更多的動腦,綜合運用所學(xué)。
    基本功不夠,如清屏clrscr()等函數(shù)用的不好,有時同樣的問題多次犯,給實驗課老師帶來很大的麻煩。這說明我的知識不夠廣,有很多有用但不做考試要求的書中內(nèi)容沒有學(xué)好,認(rèn)識程度不夠深刻。就算以后C語言這門課程結(jié)束后,也應(yīng)多看相關(guān)東西,多上機練習(xí),才能真正從本質(zhì)上提高自己。
    物理實驗報告 ·化學(xué)實驗報告 ·生物實驗報告 ·實驗報告格式 ·實驗報告模板
    知識不夠廣泛,如VC++6.0等程序,自己試了好一陣也不會用;說明我電腦水平還是不夠,自學(xué)能力不夠。已會的東西掌握的還是不夠好。