<source id="v77gz"></source>
    <u id="v77gz"><p id="v77gz"></p></u>

      <samp id="v77gz"></samp>

      <var id="v77gz"><td id="v77gz"><ins id="v77gz"></ins></td></var>

      <video id="v77gz"></video>
      <source id="v77gz"></source>
    1. 江蘇省高校計算機等級考試命題研究院 江蘇省高校計算機等級考試輔導
      2010春C上機真題第一套

          二級  C語言上機試卷

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

        一、改錯題(16)

        【程序功能】

        驗證3(n范圍內的任意兩個相鄰素數的平方之間至少存在4個素數。例如,57是兩個相鄰素數,5^2(25)7^2(49)之間存在6個素數:29 31 37 41 43 47。

        【測試數據與運行結果】

        顯示:input n

        輸入:10

        輸出:

          3~5    k=5

            11  13   17   19    23

          5~7    k=6

          29    31    37    41    43    47

        【含有錯誤的源程序】

          #include<stdio.h>

          include<math.h> 

          int prime(int n)

          {int i,flag=1;

          for(i=1;i<=sqrt(n);i++) 

            if(n%i==0)flag=0;

            return flag; 

          }

          int fun(int a[],int n)

          { int i,k=0;

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

             if(prime(i)) a[k++]=i;

          return k;

        void fun1(int m,int n, int b[])

          {  int i,k=0;

             if(m>n) return 0;

            for(i=m*m;i<n*n;i++)

              if(prime(i)) b[k++]=i;

            return k;

          }

          void main()

          {int a[50]={0},b[100]={0},i,m,k,j,n;

          printf("input n");

          scanf("%d",&n);   

          m=fun(a,n);

          for(i=O;i<m-1;i++)

          {k=fun1(a[i],a[i+1],b[O]);

          printf("%d~%d  k=%d",a[i],a[i+1],k);

          if(k<4){printf("false");break;}

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

          {if(j%10=O)prinff("\n");

           printf("%5d",b[j]);

          }  

          printf("\n");

          }

          getch();

          }

        【要求】

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

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

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

       二、編程題(24)

          【程序功能】

          在給定范圍內查找k使得用公式k^2+k+17生成的整數滿足以下條件:該數的十進制表示中低3位數字相同,去掉低3位后的整數是回文數。例如,k=461時用公式生成的整數

      212999,該數滿足所給條件。

        【編程要求】

          1.編寫函數int findnum(int n1,int n2,long a[][2])實現以下功能:k依次取n1~n2范圍

      內的每個整數,分別用每個k及公式k2+k+17生成整數y,y滿足給定條件,則將k值及y

      值保存到a指向的數組中,函數返回a數組中k的個數。

          2.編寫函數main實現以下功能:聲明二維數組a和變量n1、n2,輸入兩個整數并保存到

      n1、n2,n1、n2a數組作實參調用findnum函數,按所給格式輸出a數組中的數據到屏

      幕及文件myf2.out中。最后將考生本人的準考證號輸出到文件myf2out中。

          【測試數據與運行結果】

          輸入:n1=1,n2=10000

          輸出:k    number

               461    212999

               586    343999

               3839    14741777

          【要求】

          1.源程序文件名為myf2c,輸出結果文件名為myf2out。

          2.數據文件的打開、使用、關閉均用c語言標準庫中緩沖文件系統的文件操作函數實現。

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

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

          參考答案

          一、改錯題

          for(i=1;i<=sqrt(n);i++)    改為i=2

          void fun1(int m,int n,int b[])    改為int

          {k=fun1(a[i],a[i+1],b[0]);    改為b

          {if(j%10=0)printf("\n");    改為j%10==0

          二、編程題

          #include<stdio.h>

          int findnum(int n1,int n2,long a[][2])

          {  int i=0,j;

            long x1,x2,x3,y,k;

            for(k=n1;k<=n2;k++)

            {y=k*k+k+17;

             x1=x2=y/1000;x3=0;

             while(x1>0)

             {x3=x3*10+x1%10;x1=x1/10;}

             if(x2==x3&y%10==y/10%10&&y%10==y/100%10)

             {  a[i][0]=k;a[i++][1]=y;

             }

            }

          return i;   

          }

          main()

          {int i,j;long a[10][2],n1,n2;  FILE *fp;

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

           scanf("%d%d",&n1,&n2);

           j=findnum(n1,n2,a);

           printf("\n k\t number");

           for(i=0;i<j;i++)prinff("\n%ld\t%ld",a[i][0],a[i][1]);

           fprintf(fp,"\n k \t number");

           for(i=0;i<j;i++) fprintf(fp,"\n%ld\t%ld",a[i][0],a[i][1]);

           fprintf(fp,"\n My exam number is :0112400123");

           fclose(fp);getch();

          }

       

      中文在线字幕第一页_中文字幕高跟丝袜作品番号_亚洲中文无无码第_日本亚洲欧美国产日韩a??y_在线观看亚洲av无码专区