1. <small id="kntrr"><delect id="kntrr"></delect></small>
    2. <sub id="kntrr"></sub>
        1. <form id="kntrr"><listing id="kntrr"></listing></form>
            江蘇省高校計算機等級考試命題研究院 江蘇省高校計算機等級考試輔導
            2012春江蘇省計算機二級C上機考試真題1

                2012春江蘇省高校計算機等級考試

                 二級C語言上機試卷1

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

              一、改錯題(16)

              【程序功能】

              以下程序中函數void csort(char str[][N],int n)str指向的二維數組前n行中存儲的n

            個字符串分別作如下處理:從中間將字符串一分為二,左半部分字符子串按字符的ASCII碼值

            從大到小排序(若字符串的長度為奇數,則中間字符不參加排序)。

              【測試數據與運行結果】

              測試字符串:"abcdefgh","123498765"

              屏幕輸出:dcbaefgh

                       432198765

              【含有錯誤的源程序】

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

            1    #include<stdio.h>

            2    #include<string.h>

            3    #include<conio.h>

            4    #define N 80

            5    void csort(char str[][N],int n);

            6    void main()

            7    {char s[2][N]="abcdefgh","123498765";

            8     int i;

            9     csort(s,2);

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

            11      puts(s);   

            12    getch();

            13    }

            14    void csort(char str[][N],int n)

            15    {  int i,j,k,len,half;

            16       char temp;

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

            18       {len=strlen(str[i][0]);

            19        half=len/2;

            20        for(j=0;j<half-1;j++)

            21          for(k=j+1;k<half-1;k++)

            22            if(str[i][j]<str[i][k])

            23            {temp=str[i][j];

            24             str[i][j]=str[i][k];

            25             str[i][k]=temp;

            26            }

            27      }

            28    }

                【要求】

                1.打開T盤中myf1.c文件或將上述程序錄入到myf1.c文件中,根據題目要求及程序中

            語句之間的邏輯關系對程序中的錯誤進行修改。

                2.改錯時,可以修改語句中的一部分內容,調整語句次序,增加少量的變量說明或編譯預

            處理命令,但不能增加其他語句,也不能刪去整條語句。

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

                二、編程題(24)

                【程序功能】

                對于所給的一個自然數n,查找并輸出所有滿足以下條件的等差數列:(1)公差為1;

            (2)數列中各項數值之和等于n。

                【編程要求】

                1.編寫函數int found(int a[][30],int n)。函數的功能:查找滿足上述條件的所有等差

            數列并依次將其保存到a指向的數組中(一行保存一個數列),函數返回找到的數列個數。

                2.編寫函數main()。函數的功能:聲明一個二維整型數組用于保存查找結果,輸入一個整

            數并保存到變量n(n600)。用n和整型數組作實參調用found函數,將找到的所有等差數

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

                【測試數據與運行結果】

                輸入:n=500

                屏幕輸出:

                8 9 10 11 12 13 14 15 16 17 18 19 20 2l 22 23 24 25 26 27 28 29 30 31 32

                59 60 6l 62 63 64 65 66

                98 99 100 101 102

                500

            【要求】

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

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

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

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

                參考答案

            一、改錯題

            7  {char s[2][N]="abcdefgh","123498765";  改為{"abcdefgh","123498765"}

            11 puts(s);    改為puts(s[i])

            18 {len=strlen(str[i][0]);    改為str[i]

            21 for(k=j+1;k<half-1;k++)    改為k<half

            二、編程題

                #include<stdio.h>

                #include<conio.h>

                int found(int a[][30],int n)   

                {  int i,k=0,s=0,j,count,l=0;

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

                   {  for(s=0,j=i;s<n;j++)

                        s=s+j;

                      if(s==n)

                      {count=0;

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

                        a[1][count++]=k;

                       l++;

                      }

                   }

                return l;

                }

                void main()

                {int i,j,n,m,a[10][30]={0};

                 FILE *fp;

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

                 printf("input n:");

                 scanf("%d",&n);

                 m=found(a,n);

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

                 {

                  for(j=0;a[i][j];j++)

                  {printf("%d",a[i][j]);

                   fprintf(fp,"%d",a[i][j]);

                   printf("\n");

                   fprintf(fp,"\n");

                  }

                  fprintf(fp,"My exam number is:0012400124"); fclose(fp);

                  getch();

                }

            国产在线精品一区二区三区不卡_亚洲第一极品精品无码_永久免费无码网站在线观看_亚洲av综合日韩