<samp id="uu9tx"></samp>
        <samp id="uu9tx"><tr id="uu9tx"><nav id="uu9tx"></nav></tr></samp>
        <delect id="uu9tx"><legend id="uu9tx"><meter id="uu9tx"></meter></legend></delect>
                <samp id="uu9tx"><tr id="uu9tx"><meter id="uu9tx"></meter></tr></samp><nav id="uu9tx"></nav>
                <samp id="uu9tx"></samp>
                  <samp id="uu9tx"><tr id="uu9tx"><meter id="uu9tx"></meter></tr></samp>
                  江蘇省高校計算機等級考試命題研究院 江蘇省高校計算機等級考試輔導
                  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();

                      }

                   

                  亚洲欧美日韩国产一区二区三区_全亚洲免费一级黄片_国产一区二区三区不卡视频手机版_国产污三级网站在线观看