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

            2007年(春)上機試卷(01)

            (考試時間70分鐘)

            一、改錯題(18分)

            [程序功能]

                下列程序中函數fun的功能是:

                首先將s數組中的字符串按以下規則復制到t數組:對于下標值為偶數位置上的字符復制n次(n=下標值+1),對于下標值為奇數位置上的字符只復制一次;其次將t數組中的字符串按字符編碼從小到大的順序排序。

            [測試數據與運行結果]

            s中的字符串為“abcdefg”時,程序運行結果應為“abcccdeeeeefggggggg”

            s中的字符串為“136254”時,程序運行結果應為“123455555666”

            [含有錯誤的源程序]*/

            #include "stdio.h"

            #include "conio.h"

            void fun(char *s,char *t)

            {int i,j,k,n=0; char temp;

             for(i=0;s[i]!='\0'; ++i)

              if(i%2=0)

               for(k=0;k<i+1;++k)

               {t[n]=s[i]; n++; }

              else  t[n]=s[i];

             t[n]='\0';

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

             {k=i;

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

               if(t[j]<t[k]) k=j;

              if(k!=i)

              { temp=t[i]; t[i]=t[k]; t[k]=temp; }

             }

            }

            main()

            {char s[20],t[100];

             printf("\nPlease enter string s:"); gets(s);

             fun(s);

             printf("The result is: %s",t);

             getch();

            }

            /*

            二、編程題(22分)

            [程序功能]

              驗證對于任意一個不超過9位的自然數按下列步驟經過有限次的變換得到的新數最終轉換成123并(1)統計該數中偶數數字的個數a0被當作偶數對待),該數中奇數數字的個數b,該數的總位數c。

            2)用a,b,c按以下規則組成一個新數:當a!=0時,a為百位,b為十位,c為個位;當a=0時,b為百位,a為十位,c為個位。(3)當這個新數不等于123時,對這個新數重復上述操作。經過多次重復,新數最終轉換成123。數學上稱123為陷阱數。

            [編程要求]

            1、編寫函數int fun(long n,long a[]),對給定的一個長整型數n根據上述規則作變換,直到新生成的數等于123。在轉換過程中,把n及轉換過程中生成的所有數依次保存到數組a中,函數返回a數組中數據個數。

            2、編寫main函數,從鍵盤輸入n的值,調用函數fun判斷n是否轉換成123,將n及轉換過程中生成的所有數依次輸出到屏幕并用寫文件函數保存保存到結果文件myf2.out,最后將考生本人的準考證號字符串也保存到結果文件myf2.out中。

            [測試數據與運行結果]

            n=12345678時輸出結果為:

              12345678,448,303,123

              my exam number is :考生本人準考證號字符串

             

            2007年(春)上機試卷(02)

            (考試時間70分鐘)

            一、改錯題(18)

            [程序功能]

            找到并輸出2~100之間的所有互逆素數對;ツ嫠財祵Γ喝粢粋素數的反序數也是素數,則稱該素數和其反序數為互逆素數對。例如,13是素數,13的反序數31也是素數,故(13,31)是互逆素數對。

            算法提示:函數prime的功能是先用篩選法求出保存在a指向的結構數組元素的成員i2~n范圍內的所有素數,再從中選出大于11的互逆素數對。存放互逆素數對的方法是:將互逆素數對分別存放于同一結構數組的iflag成員中。例如,1331是互逆素數對,故a[13].i=13,a[13].flag=31;a[31].i=31,a[31].flag=13。

            [測試數據與運行結果]

            運行結果

            2  3  5  7  11  13  17  19  23  29  31  37  41  43  47  53  59  61  67  71  73  79  83  89  97

            13,   31

            17,   71

            31,   13

            37,   73

            71,   17

            73,   37

            79,   97

            97,   79

            [含有錯誤的源程序]

            #include<math.h>

            #define N 101

            struct PR{ int i;int flag; };

            void prime(struct PR a[],int n)

            { int i,j;

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

                if(a[i].i)

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

                   if(a[j].i && a[j].i%a[i].i=0)

                     a[j].i=0;

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

                if(a[i].i)

                { int k=i,s=0;

                  while(k) { s=s*10+k%10;k/=10; }

                  if(a[s].i)

                  { a[k].flag=i;a[i].flag=k;}   

                }

            }

             main()

             { struct PR a[N]=0;int i;

               clrscr();

               for(i=2;i<N;i++) a[i]=i;

               prime(a,N);

               for(i=2;i<N;i++)

                 if(a[i].i) printf("%3d",a[i].i);

               printf("\n");

               for(i=10;i<N;i++)

                 if(a[i].flag) printf("%4d,%4d\n",a[i].i,a[i].flag);

               getch();

             }

            要求:

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

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

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

            二、編程題(22)

            [程序功能]

             字符串變換

            [編程要求]

            1  編寫函數void conv(char *ss),其功能是:從左到右依次掃描字符串ss,把小寫字母o左邊的所有字符移到該串的右邊,并把該小寫字母o刪除,繼續掃描字符串ss并做上述操作,直到字符串ss中所有的小寫字母o被刪除為止。

            2  編寫main函數,聲明一個長度為80的字符數組并用測試數據初始化該數組,調用conv函數對數組中的字符串作上述變換,將變換后的結果字符串輸出到屏幕并用寫文件函數保存到結果文件myf2.out中,最后將考生本人的準考證號字符串也保存到結果文件myf2.out中。

            [測試數據與運行結果]

            測試數據:

            You can create an index on any field.

            輸出結果:

            n any field.Yu can create an index

            My exam number is: 考生本人準考證號字符串

            [要求]

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

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

            3  源程序文件和運行結果文件均須保存在考試盤的根目錄下,供閱卷用。

            4  不要復制擴展名為OBJEXE的文件到考試盤上。

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