江蘇省高校計算機等級考試命題研究院 江蘇省高校計算機等級考試輔導
2011秋江蘇省計算機二級C上機真題

2011秋二級C語言上機試卷

(本試卷完成時間為70分鐘)

  一、改錯題(16)

  【程序功能】

  驗證猜想:當f41,x分別取1,2,3,4,...,40,由多項式x -x+f產生的數均為素數。

  以下程序首先用多項式x -x+f產生40個整數存放在a指向的數組中,然后判斷a數組中各元素的值是否均為素數,如果是則輸出"YES",并將a指向的數組中的素數按每行10個數的形式輸出;否則輸出"NO"

    【測試數據與運行結果】

    屏幕輸出:

    YES

    41   43   47   53   61   71   83   97   113  131

    151  173  197  223  251  281  313  347  383  421

    461  503  547  593  641  691  743  797  853  911

    971  1033 1097  1163 1231  1301 1373 1447  1523  1601

 

  【含有錯誤的源程序】

  以下源程序已保存在Tmyf1.c文件內,考生可直接打開該文件調試程序。

  1    #include <stdio.h>

  2    #include <conio.h>

  3    int allprime(int n,int a[])

  4    {   int i,j,b[];

  5        for(i=0;i<n;i++)

  6        {  b[i]=1;

  7           for(j=1;j<a[i]/2;j++)

  8             if(a[i]%j==0) b[i]=0;

  9        }

  10       for(i=0;i<n;i++)

  11          if(0=b[i])

  12           return 0;

  13       return 1;

  14    }

  15    void main()

  16    {int i,j,x0=1,x1=40,f=41,a[40];

  17     for(j=x0;j<=x1;j++)

  18       a[j-1]=j*j-j+f;

  19     j--;

  20     if(allprime(j,a[]))   

  21     {printf("\nYES\n");

  22      for(i=0;i<j;i++)

  23      {printf("%d\t",a[i]);

  24       if((i+1)%10==0)printf("\n");

  25      }

  26     }

  27     else

  28      printf("\nNO\n");

  29     getch();

  30   }

  【要求】

  1.打開T盤中myf1.c文件或將上述程序錄入到myf1.c文件中,根據題目要求及程序中語句之間的邏輯關系對程序中的錯誤進行修改。

  2.改錯時,可以修改語句中的一部分內容,調整語句次序,增加少量的變量說明或編譯預處理命令,但不能增加其他語句,也不能刪去整條語句。

  3.改正后的源程序(文件名myf1.c)保存在T盤中供閱卷使用,否則不予評分。

二、編程題(24)

    【程序功能】

    在已有的一份姓名登記表中刪除重復出現的姓名,輸出處理后的姓名登記表。

    【編程要求】

    1.編寫函數int del_name(char s[][20],int n)。函數功能:在s指向的數組前n行中存儲的n個字符串中刪除重復出現的字符串,只保留第一次出現的字符串,函數返回s指向的數組中剩余的字符串個數。

    2.編寫函數main()。函數功能:聲明數組name并用測試數據初始化,name作實參調用函數del_name,將經過刪除后name數組中剩余的字符串輸出到屏幕及數據文件Myf2.out中。最后將考生本人準考證號輸出到文件Myf2.out中。

  【測試數據與運行結果】

  測試數據:"Ann","Belle","David","Ann","Mary","Belle","Ken","Ann","Mark","Mary"

  屏幕輸出:Ann

           Belle

           David 

           Mary

           Ken

           Mark

  【要求】

  1.源程序文件名為Myf2.c,輸出結果文件名為Myf2.out

  2.數據文件的打開、使用和關閉均用C語言標準庫中的文件操作函數實現。

  3.源程序文件和運行結果文件均需保存在T盤中供閱卷使用。

  4.不要復制擴展名為objexe的文件到T盤中。

    參考答案

  一、改錯題

  4  {int i,j,b[];              改為b[40]

  7    for(j=1;j<a[i]/2;j++)    改為j=2

  11   if(0=b[i])               改為==

  20   if(allprime(j,a[]))        改為a

  二、編程題

    #include<stdio.h>

    #include<string.h>

    #include<conio.h> 

    #define M 20

    #define N 100   

    int del_name(char s[][M],int n)

    {int i,j,k;

     for(i=0;i<n;i++)

     {  j=i+1;

        while(j<n)

          if(strcmp(s[i],s[j])==0)

          {for(k=j;k<n-1;k++)strcpy(s[k],s[k+1]);

           s[k][0]=0;

           n--;

          }

          else  j++;

     }

     return n;

    }

    void main()

    {char name[N][M]={"Ann","Belle","David","Ann","Mary",

                      "Belle","Ken","Ann","Mark","Mary"};

     int k,n=10;

     FILE *fp;

     fp=fopen("Myf2.out","w");

     n=del_name(name,n);

     for(k=0;k<n;k++)

     {puts(name[k]);

      fputs(name[k],fp);

     }

     fprintf(fp,"\nMy Exam number is:0112400123");

     fclose(fp);

     getch();

    }  

彩票30选5开奖结果