江苏省计算机等级考试二级C上机考试模拟试题江苏省计算机等级考试二级C上机考试模拟试题C01一、改错题(18分)【程序功能】下列程序中函数fun的功能是:首先将s数组中的字符串按以下规则复制到t数组:对于下标值为偶数位置上的字符复制n次(n=下标值+1),对于下标值为奇数位置上的字符只复制一次;其次将t数组中的字符串按字符编码从小到大的顺序排序。【测试数据与运行结果】当s中的字符串为“abcdefg”时,运行结果应为“abcccdeeeeefggggggg”当s中的字符串为“136254”时,运行结果应为“123455555666”【含有错误的源程序】#includestdio.h#includeconio.hvoidfun(char*s,char*t){inti,j,k,n=0;chartemp;for(i=0;s[i]!='\0';++i)if(i%2=0)for(k=0;ki+1;++k){t[n]=s[i];n++;}elset[n]=s[i];t[n]='\0';for(i=0;in-1;i++){k=i;for(j=0;jn;j++)if(t[j]t[k])k=j;if(k!=i){temp=t[i];t[i]=t[k];t[k]=temp;}}}main(){chars[20],t[100];printf(\nPleaseenterstrings:);gets(s);fun(s);printf(Theresultis:%s\n,t);getch();}【要求】1.将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。2.改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其它语句,也不能删去整条语句。3.改正后的源程序(文件名myf1.c)保存在考试软盘的根目录中供阅卷使用,否则不予评分。二、编程题(22分)江苏省计算机等级考试二级C上机考试模拟试题【程序功能】验证对于任意一个不超过9位的自然数按下列步骤经过有限次的变换得到的新数最终收敛到123:①统计该数中偶数数字的个数a,该数中奇数数字的个数b,该数的总位数c。②用a、b、c按以下规则组成一个新数:当a≠0时,a为百位,b为十位,c为个位;当a=0时,b为百位,a为十位,c为个位。③当这个新数不等于123时,对这个新数重复上述操作。经过多次重复,新数最终收敛到123,数学上称123为陷阱数。【编程要求】1.编写函数intfun(longn,longa[]),对给定的一个长整型数n根据上述规则作变换,直到新生成的数收敛到123。在转换过程中,把n及转换过程中生成的所有数依次保存到数组a中,函数返回a数组中数据个数。2.编写main函数,从键盘输入n的值,调用函数fun判断n是否收敛到123,将n及转换过程中生成的所有数依次输出到屏幕并用写文件函数保存到结果文件myf2.out,最后将考生本人的准考证号字符串也保存到结果文件myf2.out中。【测试数据与运行结果】当n=12345678时,输出结果为:12345678,448,303,123当n=13579时,输出结果为:13579,505,123myexamnumberis:考生本人准考证号字符串C02一、改错题(18分)【程序功能】找到并输出2~100之间的所有素数及互逆素数对。互逆素数对:若一个素数的反序数也是素数,则称该素数和其反序数为互逆素数对。例如,13是素数,13的反序数31也是素数,故(13,31)是互逆素数对。算法提示:函数prime的功能是先用筛法求出保存在a指向的结构数组元素的成员i中2~n之间的所有素数,再从中选出大于11的互逆素数对。存放互逆素数对的方法是:将互逆素数对分别存放于同一结构数组的i和flag成员中。例如:13和31是互逆素数对,故a[13].i=13,a[13].flag=31;a[31].i=31,a[31].flag=13。【测试数据与运行结果】运行结果:235711131719232931374143475359616771737983899713,3117,7131,1337,7371,1773,3779,9797,79【含有错误的源程序】#includestdio.h#includeconio.h#includemath.h#defineN101structPR{inti;intflag;};江苏省计算机等级考试二级C上机考试模拟试题voidprime(structPRa[],intn){inti,j;for(i=2;isqrt(n);i++)if(a[i].i)for(j=i+1;jn;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){intk=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(){structPRa[N]=0;inti;for(i=2;iN;i++)a[i]=i;prime(a,N);for(i=2;iN;i++)if(a[i].i)printf(%3d,a[i].i);printf(\n);for(i=10;iN;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.编写函数voidconv(char*ss),其功能是:从左至右依次扫描字符串ss,把小写字母o左边的所有字符移到该串的右边,并把该小写字母o删除,继续扫描字符串ss并做上述操作,直到所有的小写字母o被删除为止。2.编写main函数,声明一个长度为80的字符数组并用测试数据初始化该数组,调用conv函数对数组中的字符串作上述变换,将变换后的结果字符串输出到屏幕并用写文件函数保存到结果文件myf2.out中,最后将考生本人的准考证号字符串也保存到结果文件江苏省计算机等级考试二级C上机考试模拟试题myf2.out中。【测试数据与运行结果】测试数据:Youcancreateanindexonanyfield.输出结果:nanyfield.Yucancreateanindexmyexamnumberis:考生本人准考证号字符串C03一、改错题(18分)【程序功能】验证:在72000之间的所有素数中存在这样的两个素数,它们的差恰好是1898。算法提示:main函数先将72000之间的所有素数放入a数组中,然后调用fun函数验证命题。若命题成立,则fun函数将找到的两个素数保存到x和y指向的两个变量中,fun函数返回1,否则返回0。main函数根据fun函数的返回值或输出满足条件的这两个素数,或输出“notfound!”。【测试数据与运行结果】运行结果为:1951-53=1898【含有错误的源程序】#includestdio.h#includeconio.hintprime(intn){inti;for(i=2;i=n/2;i++)if(n%i==0)return0;elsereturn1;}intfun(inta[],intn,int*x,int*y){inti,j;for(i=0;in-1;i++)for(j=1;jn;j++)if(a[j]-a[i]==1898){x=i,y=j;return1;}return0;}main(){inta[1000]=0;inti,k=0,flag,m,n;for(i=7;i2000;i+=2)if(prime(i))a[k++]=i;flag=fun(a,k,m,n);if(flag)printf(%d-%d=%d\n,a[n],a[m],a[n]-a[m]);elseprintf(notfound!\n);getch();江苏省计算机等级考试二级C上机考试模拟试题}【要求】1.将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。2.改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其它语句,也不能删去整条语句。3.改正后的源程序(文件名myf1.c)保存在考试软盘的根目录中供阅卷使用,否则不予评分。二、编程题(22分)【程序功能】以矩阵的行作为排序的交换单位,使得排序后的矩阵按指定列的元素值递减有序。【编程要求】1.编写函数voidsort(intx[][4],intn,intcol)。函数功能:对x指向的二维数组(该数组中保存了一个n4矩阵的数据)以行作为交换单位,按照下标为col的列元素值做递减排序。2.编写main函数。函数功能:声明一个3行4列二维数组并用测试数据初始化该数组,调用sort函数对该数组中保存的矩阵按第3列(列下标为2)排序,将排序后二维数组中的矩阵输出到屏幕并用写文件函数保存到结果文件myf2.out中。最后将考生本人的准考证号字符串也保存到结果文件myf2.out中。【测试数据与运行结果】测试数据(排序前):101806090102709050103607080运行结果(按第3列排序后):102709050103607080101806090myexamnumberis:考生本人准考证号字符串C04一、改错题(18分)【程序功能】下列程序中fun函数的功能是:从键盘接收若干个字符串(不超过10个),将它们依次连接并保存到string数组中,直到输入的字符串为done为止(不连接done),统计连接的字符串个数并存放到n指向的变量中。main函数中首先将字符串0422400110存储到结构变量str的成员number中,然后调用fun函数并把连接的字符串个数存入结构变量str的count成员中,最后将string数组起始地址保存到结构变量str的string成员中。【测试数据与运行结果】输入的字符串依次为:abCRxyzCR1234CRdoneCR(注:CR代表回车)输出结果为:0422400110,3abxyz1234【含有错误的源程序】#includestdio.h#includestring.h江苏省计算机等级考试二级C上机考试模拟试题#includeconio.htypedefstruct{charnumber[12];char*string;intcount;}CAR;charstring[100];voidfun(int*n){charp[10],*strp;intlimit=0;strp=string;gets(p);while(limit10){if(p==done)break;strcat(strp,p);strp+=strlen(p);*n++;gets(p);limit++;}}main(){CARstr={0,0,0};str.number=0422400110;fun(str.count);str.string=string;printf(%s,%d\n,str.number,str.count);printf(%s\n,str.string);getch();}【要求】1.将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。2.改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其它语句,也不能删去整条语句。3.改