★2013年3月17日江苏省高校计算机等级考试二级C语言4套上机题(C01、C04、C05、C06)及其解答_张柏雄_第1页
★2013年3月17日江苏省高校计算机等级考试二级C语言4套上机题(C01、C04、C05、C06)及其解答_张柏雄_第2页
★2013年3月17日江苏省高校计算机等级考试二级C语言4套上机题(C01、C04、C05、C06)及其解答_张柏雄_第3页
★2013年3月17日江苏省高校计算机等级考试二级C语言4套上机题(C01、C04、C05、C06)及其解答_张柏雄_第4页
★2013年3月17日江苏省高校计算机等级考试二级C语言4套上机题(C01、C04、C05、C06)及其解答_张柏雄_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2013年3月17日江苏省高校计算机等级考试二级c语言4套上机题(c01、c04、c05、c06)及其解答【上机题命题评述】1、 总评价:近年来江苏省高校上机题目难度有所下降。本轮上机命题的难度系数与全国计算机等级考试二级c语言接近。2、 对任课教师建议:从考生临场发挥来看,学生对编程题中的“文件操作”部份比较生疏,有的考生错误认为,题目要求将本人准考号输出到文件“myf2.out”,错误将文件名myf2.c修改为123456789_myf2.c;有的考生新建“myf2.out”文件,然后输入本人准考号等。建议教师结合第十章“对文件输入和输出”,将下面标准程序段(结合c06题目蓝色字体)教给学

2、生,并要求记忆。#include /库函数exit(0)需要#include /库函数getch()需要.void main() struct student am=2,li,81,1,ma,83,4,zhao,85; struct student bn=7,zhang,80,3,guo,84,5,wu,86,6,ye,88; struct student c10;file *fp; int i; if(fp=fopen(myf2.out,w)=null) printf(ncant open the file!); exit (0); merge(a,m,b,n,c); for(i=0;im+

3、n;i+) printf(n%2s%6s %f,ci.num,, ci.score),fprintf(fp, n%2s%6s %f,ci.num,, ci.score);printf(nmy number is:120992340n); fprintf(fp,nmy number is:1292340n); fclose(fp); /*操作结束,关闭文件fp 书p334 */ getch();3、 对考生建议:需要对c语言编程的特点熟悉:程序模块化;通用函数要熟记(通用素数判别、通用的回文数、回文素数、回文字符串、简单排序法、多项式部份和;闰年运算;求根等);掌握文

4、件输出操作。4、 今后江苏省高校计算机二级c语言上机编程题可能出题有四大范围:字符串处理:2013春素数处理:2012秋矩阵处理:2012春特殊数处理(初等数学:合数、真因子或质因子之和、3位和4位陷阱数、水仙花数、亲密数、完数、数制转换、哥德巴赫猜想等):历年关注最多的出题方向。详情可分别参阅:豆丁网上:预测计算机等级考试的c语言上机编程题之二_矩阵_张柏雄.doc、预测江苏省高校计算机二级c考试上机编程题之三_素数_张柏雄.doc、预测江苏省计算机c语言等级考试的八道上机编程题之一_特殊数_张柏雄.doc和预测江苏省计算机c语言等级考试的八道上机编程题之四_字符串处理_张柏雄.doc苏州科

5、技学院教师 张柏雄()目录c01(上午8:00-9:10)c04(下午13:00-14:10)c05(下午14:30-15:40)c06(下午16:00-17:10)江苏省高等学校非计算机专业学生(c01)计算机基础知识和应用能力等级考试上机试卷(2013春)二级 c语言(试卷代号c01)(本试卷完成时间 70分钟)一、 改错题(16分)【程序功能】判断一个nn方阵(n为奇数)是否为魔方阵。魔方阵的判定条件是:方阵中每行、每列、主对角线及副对角线上的数据之和均相等。例如,以下方阵中,主对角线的数据是8、5、2之和是15,副对角线上的数据6、5、4之和也是15,并

6、且每行、每列数据之和15,因此该项方阵是魔方阵。8 1 63 5 74 9 2【测试数据与运行结果】屏幕输出: 8 1 63 5 74 9 2the array x is a magic square.1 2 35 6 49 8 7the array x isnt a magic square.【含有错误的源程序】以下源程序已保存在t盘myf1.c文件内,考生可直接打开该文件测试程序。#include #include #include #define n 3void fun(int (*a)n) int i,j,m1,m2,row,colum; m1=m2=0; for(i=0; in; i

7、+) m1+=aii; m2+=ain-i-1; if(m1!=m2) return 0; for(i=0; in; i+) row=colum=i; for(j=0; jn; j+) row+=aij; colum+=aji; if(row!=colum)|(row!=m1) return 0; return 1; void print(int xn) int i,j; for(i=0; in; i+) for(j=0; jn; j+) printf(%3d,xij); printf(n); int main() int xn,n=8,1,6,3,5,7,4,9,2,yn,n=1,2,3,5

8、,6,4,9,8,7; print(x); if(fun(x) printf(the array x is a magic square.n); else printf(the array x isnt a magic square.n); print(y); if(fun(y) printf(the array y is a magic square.n); else printf(the array y isnt a magic square.n); getch(); return 0;【要求】1. 打开t盘中myfl.c文件或将上述程序录入到myf1.c文件中,根据题目要求及程序中语句之

9、间的逻辑关系对程序中的错误进行修改。2. 改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其它语句,也不能删去整条语句。3. 改正后的源程序(文件名myfl.c)保存在t盘的根目录中供阅卷使用,否则不予评分。二、编程题(24分)【程序功能】检查一个字符串中中所有数字字符所对应整数(例如,字符1所对应的整数为1,其他依次类推)之和是否为3的倍数;判断该字符串是否回文字符串(回文字符串:正序和倒序相同的字符串。例如,ab121ba是回文字符串)。【编程要求】1、编写函数int palindrome(char *str, char *r)。函数功能:检

10、查str指向的字符串中所有数字字符所对应的整数之和是否为3的倍数,若是则将yes存储到r指向的数组中,否则将no存储到r指向的数组中.判断str指向的字符串是否是回文字符串,若是则函数返回1,否则返回0。2、编写函数main()。函数功能:声明字符型数组a和r,输入一个字符串到a数组,用a、r作实寻调用palindrome函数,若字符串中所有数字字符所对应的整数之和是3的倍数且字符串双是回文字符串,则输出该字符串及yes到屏幕及数据文件myf2.out中,否则输出no到屏幕及数据文件myf2.out中。最后将考生本人的准考证号字符串输出到文件myf2.out中。【测试数据与运行结果】测试数据:

11、33abbba66屏幕输出: no测试数据:12abcba21屏幕输出: yes【要求】1. 源程序文件名为myf2.c,输出结果文件名为myf2.out。2. 数据文件的打开、使用、关闭均用c语言标准库中文件操作函数实现。3. 源程序文件和运行结果文件均需保存到t盘上,供阅卷使用。4. 不要复制扩展名为obj和exe的文件到t盘上。说明:由于豆丁网不容许存放压缩文档,所以练习用的江苏省高校计算机二级c语言考试c01环境的安装包“江苏省高校计算机等级考试(二级)考试环境安装包2013春_c01上机题_张柏雄.exe”放置在网站/user/admin/uuxz

12、hang 上。该压缩包能自动释放在桌面上,双击执行文件,进入“练习模式”,帐户名及密码均为“0102400000”。待改错文件“myf1.c”存放在桌面“二级考试”文件夹下。【改错题解答:myf1.c】此题比较简单。原程序存在4个错误,由于不需要输入所以每个错误,若改正,则得4分。#include #include #include #define n 3int fun(int (*a)n) /1、函数要求调用有返回值,void fun(int (*a)n)函数类型设置错误 int i,j,m1,m2,row,colum; m1=m2=0; for(i=0; in; i+) m1+=aii;

13、m2+=ain-i-1; if(m1!=m2) return 0; for(i=0; in; i+) row=colum=i; for(j=0; jn; j+) row+=aij; colum+=aji; if(row!=colum)&(row!=m1) /2、逻辑表达式出错:(row!=colum)|(row!=m1) return 0; return 1; void print(int xn) int i,j; for(i=0; in; i+) for(j=0; jn; j+) printf(%3d,xij); /3、输出格式出错:printf(%3d,xij ); printf(n);

14、int main() int xnn=8,1,6,3,5,7,4,9,2,ynn=1,2,3,5,6,4,9,8,7; /4、数组下标定义出错:xn,n和yn,n print(x); if(fun(x) printf(the array x is a magic square.n); else printf(the array x isnt a magic square.n); print(y); if(fun(y) printf(the array y is a magic square.n); else printf(the array y isnt a magic square.n);

15、getch(); return 0;【编程题解题思路】编程的关键是知道库函数所需要的相应的头文件名。除主函数和函数palindrome外,根据c语言模块化设计特点,增加了能判断一串字符串是否是回文字符串的自编函数int judger(char a),其中判断回文字符串的函数必须要熟记之,与此同时也要记住判断回文数(data_palindrome)和回文素数的通用函数:#include int data_palindrome(long s) long k=s,h=0; while(k) h=h*10+k%10,k/=10; if(h=s) return 1; return 0;int main(

16、) long a; scanf(%ld,&a); if(data_palindrome(a) printf(%ld is palindrome,a); else printf(%ld isnt palindrome,a);【编程题解答:myf2.c】#include #include /库函数exit(0)需要#include /库函数strlen()需要#include /库函数isdigit()、strcpy()需要,书p386#include /库函数getch()需要int judger(char a) /判断字符串a是否是回文字符串的通用函数 int n=0,i,j; n=strle

17、n(a); for(i=0,j=n-1;ij;i+,j-) if(ai!=aj) return 0; return 1;int palindrome(char *str, char *r) int i=strlen(str)-1,j=0,m=0; while(stri!=-1) /计算字符串str中数字字符的数字量值之和 if(isdigit(stri) m+=(stri-48); i-; if(m%3=0&judger(str) /满足字符串的数字量之和是3的倍数和回文字符串时返回1,并将yes存入数组元素 strcpy(r,yes);j+; return 1;else /不满足字符串的数字

18、量之和是3的倍数和回文字符串时返回0,并将no存入数组元素 strcpy(r,no); j+; return 0;void main() int i;char a210=33abbba66,12abcba21,r210;file *fp; if(fp=fopen(myf2.out,w)=null) printf(ncant open the file!); exit (0); for(i=0;i2;i+) if(palindrome(ai,ri) printf(n%sn%s,ai,ri),fprintf(fp,n%sn%s,ai,ri); else printf(n%sn%s,ai,ri),f

19、printf(fp,n%sn%s,ai,ri); printf(nmy number is:120992340n); fprintf(fp,nmy number is:1292340n); fclose(fp); /*操作结束,关闭文件fp 书p334 */ getch(); 江苏省高等学校非计算机专业学生(c04)计算机基础知识和应用能力等级考试上机试卷(2013春)二级 c语言(试卷代号c04)(本试卷完成时间 70分钟)一、 改错题(16分)【程序功能】子串查找并替换。函数substition的功能是在s指向的字符串(简称s串)中查找t指向的子串(简称t串),并用g指向的字符串(简称g串

20、)替换s串中所有的t串。【测试数据与运行结果】测试数据: s: aaacdaaaaaaaefaaaghaa t: aaa g: 22屏幕输出: 22cd2222aef22ghaa 【含有错误的源程序】以下源程序已保存在t盘myf1.c文件内,考生可直接打开该文件测试程序。#include #include #include void substitution(char*,char*,char*); int main() char s80= aaacdaaaaaaaefaaaghaa,t2=aaa,g=22; puts(s); substitution(s,t,g); puts(s); getc

21、h();void substitution(char *,char *,char *) ; int i,j,k; char temp80; for(i=0;si=0;i+) for(j=i,k=0;sj=tk&tk!=0;j+,k+); if(tk=0) temp=s+j; strcpy(s+i,g); strcat(s,temp); i+=strlen(g)-1; 【要求】1打开t盘中myfl.c文件或将上述程序录入到myf1.c文件中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。2 改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不

22、能增加其它语句,也不能删去整条语句。3 改正后的源程序(文件名myfl.c)保存在t盘的根目录中供阅卷使用,否则不予评分。二、编程题(24分)【程序功能】在一组数值不全全的整数中查找次大数。【编程要求】1、编写函数int findsecmax(int data, int count)。函数功能:在data数组的前count个整数中查找次大数。2、编写函数main()。函数功能:声明一个整型数组a并用测试数据初始化,用数组a及数组元素个数作实参调用findsecmax 函数找出次大数,然后将原数组及次大数输出到屏幕及数据文件myf2.out中。最后将考生本人的准考证号字符串输出到文件myf2.o

23、ut中。【测试数据与运行结果】测试数据:1,9,2,8,3,7,4,6,10,10屏幕输出: 1 9 2 8 37 4 6 10 10sec_max: 9【要求】1.源程序文件名为myf2.c,输出结果文件名为myf2.out。2.数据文件的打开、使用、关闭均用c语言标准库中文件操作函数实现。3.源程序文件和运行结果文件均需保存到t盘上,供阅卷使用。4.不要复制扩展名为obj和exe的文件到t盘上。说明:由于豆丁网不容许存放压缩文档,所以练习用的江苏省高校计算机二级c04考试环境的安装包“江苏省高校计算机等级考试(二级)考试环境安装包2013春_c04上机题_张柏雄.exe”放置在网站http

24、://user/admin/uuxzhang 上。该压缩包能自动释放在桌面上,双击执行文件,进入“练习模式”,帐户名及密码均为“0102400000”。待改错文件“myf1.c”存放在桌面“二级考试”文件夹下。【改错题解答:myf1.c】此题比较简单。按照标准,原程序存在6个错误,所以每个错误,若改正,则得3分。实际命题教师只认4个错误:1、2、5、6,此时每题4分。#include #include #include void substitution(char*s,char*t,char*g); /1、自定义函数的声明语句出错void substitution(ch

25、ar*,char*,char*);int main() char s80= aaacdaaaaaaaefaaaghaa,t4=aaa,g3=22; /2、字符串数组下标填写为大于或等于字符数加1 puts(s); substitution(s,t,g); puts(s); getch(); return 0; /3、主函数有类型定义,在tc30编译时必须有返回语句void substitution(char *s,char *t,char *g) /4、自定义函数的函数头出错void substitution(char*,char*,char*); int i,j,k; char temp80

26、; for(i=0;si!=0;i+) /5、循环语句终结条件出错:si=0。否则不执行循环语句 for(j=i,k=0;sj=tk&tk!=0;j+,k+); if(tk=0) strcpy(temp,s+j); /6、字符串赋值用库函数strcpy:temp=s+j; strcpy(s+i,g); strcat(s,temp); i+=strlen(g)-1; 【编程题解答:myf2.c】解题思路:。编程的关键是需要知道库函数所需要的相应的头文件名。此题较简单。#include #include /库函数exit(0)需要#include /库函数getch()需要int findsecm

27、ax(int data, int count) int i, j=0,secmax=0,max=data0,b10; for(i=1;imax) max=datai;for(i=0;icount;i+) /排除最大值后的整数数据放入临时数组b if(datai!=max) bj+=datai;for(i=0;isecmax) secmax=datai; return secmax;void main() int i,a20=1,9,2,8,3,7,4,6,10,10,count=10,sec_max;file *fp; if(fp=fopen(myf2.out,w)=null) printf(

28、ncant open the file!); exit (0); sec_max=findsecmax(a,count);for(i=0;icount;i+) printf(i+1)%5=0?%4dn:%4d,ai),fprintf(fp,i%5=0?%4dn:%4d,ai);printf(nsec_max:%4d,sec_max),fprintf(fp, nsec_max:%4d,sec_max);printf(nmy number is:120992340n); fprintf(fp,nmy number is:1292340n); fclose(fp); /*操作结束,关闭文件fp 书p

29、334 */ getch(); 江苏省高等学校非计算机专业学生(c05)计算机基础知识和应用能力等级考试上机试卷(2013春)二级 c语言(试卷代号c05)(本试卷完成时间 70分钟)一、 改错题(16分)【程序功能】找出找出所有符合条件的数列:由6个素数组成;数列中每一项的值在7360之间;数列是一个公差为30的等差数列。简称这样的数列为等差素数数列。例如,7 37 67 97 127 157就是符合上述条件的一个等差素数数列。函数series将xy范围内所有符合上述条件的等差素数数列依次保存到a指向的二维数组中(一行保存一个数列)。【测试数据与运行结果】屏幕输出: 7 37 67 127

30、157 107 137 167 197 227 257【含有错误的源程序】以下源程序已保存在t盘myf1.c文件内,考生可直接打开该文件测试程序。#include#include #includeint prime(int n;) int i; for(i=2;i=(int)sqrt(n);i+) if(n%i=0) return 0; return 1;int series(int a6,int x,int y) int d=30,i=0,n=x,j,f; while(n=2|prime(n) n+; while(ny-5*d) f=1; for(j=0;j6; j+) if(prime(n

31、+j*d)=0) f=0; break; if(f) for(j=0;j6;j+) aij=n+j*d; i+; n+=2; return i;int main() int a306,i,j,count; count=series(int a6,7,360); for(i=0;icount;i+) for(j=0;j6;j+) printf(%5d,aij); printf(n); getch(); return 0; 【要求】1.打开t盘中myfl.c文件或将上述程序录入到myf1.c文件中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。2.改错时,可以修改语句中的一部分内容

32、,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其它语句,也不能删去整条语句。3.改正后的源程序(文件名myfl.c)保存在t盘的根目录中供阅卷使用,否则不予评分。二、编程题(24分)【程序功能】将一个字符串中所有数字字符顺序交移,其他字符顺序后移,生成一个新的字符串。【编程要求】1、编写函数void move(char *s)。函数功能:将s指向的字符串中所有数字字符顺序前移,其他字符顺序后移,所生成的新字符串仍然存放在s指向的数组中。2、编写函数main()。函数功能:声明一个字符型数组s并用测试数据初始化,用s作实参调用move 函数,将结果字符串输出到屏幕及数据文件myf

33、2.out中。最后将考生本人的准考证号字符串输出到文件myf2.out中。【测试数据与运行结果】测试数据:asd123fgh5#43df屏幕输出:123543asdfgh#df 【要求】1.源程序文件名为myf2.c,输出结果文件名为myf2.out。2.数据文件的打开、使用、关闭均用c语言标准库中文件操作函数实现。3.源程序文件和运行结果文件均需保存到t盘上,供阅卷使用。4.不要复制扩展名为obj和exe的文件到t盘上。说明:由于豆丁网不容许存放压缩文档,所以练习用的江苏省高校计算机二级c05考试环境的安装包“江苏省高校计算机等级考试(二级)考试环境安装包2013春_c05上机题_张柏雄.e

34、xe”放置在网站/user/admin/uuxzhang 上。该压缩包能自动释放在桌面上,双击执行文件,进入“练习模式”,帐户名及密码均为“0102400000”。待改错文件“myf1.c”存放在桌面“二级考试”文件夹下。【改错题解答:myf1.c】按照标准,原程序存在3个错误,所以每个错误,若改正,则得4、8、4分。第2个错误是本改错题关键所在。其分值较高。该段程序的目的是确保初始值n是素数。读者也可用实参a,4,360去试验,同样可得相同结果。但考生一般会修改为while(a=0&prime(n),这样用实参a,4,360去试,则使下面程序为死循环,对此

35、要扣8分的。#include#include #includeint prime(int n) /1、函数的形参出错 int n;int n int i; for(i=2;i=(int)sqrt(n);i+) if(n%i=0) return 0; return 1;int series(int a6,int x,int y) int d=30,i=0,n=x,j,f; while(!prime(n) /2、逻辑表达式出错 n=2|prime(n)!prime(n) ,不改则造成下面程序死循环 n+; /其实这段循环目的是确保n是素数。读者可改变实参为6,360,程序也能得出正确结果。 whi

36、le(ny-5*d) f=1; for(j=0;j6; j+) if(prime(n+j*d)=0) f=0; break; if(f) for(j=0;j6;j+) aij=n+j*d; i+; n+=2; return i;int main() int a306,i,j,count; count=series(a,7,360); /3、函数调用的实参出错:int a6,7,360a,7,360 for(i=0;icount;i+) for(j=0;j6;j+) printf(%5d,aij); printf(n); getch(); return 0;【编程题解题思路】此题解题思路是挑字符

37、串s中数字字符存入数组a;其余数字存入数组b,最后将其合并,再由合并后的字符串复制入形参数组s。其次是,需要知道库函数所需要的相应的头文件名,下面一一予以注释。【编程题解答:myf2.c】#include #include /库函数strcat()和strcpy()需要#include /库函数isdigit()需要#include /库函数exit(0)需要#include /库函数getch()需要void move(char *s) int i=0, j=0,k,m=strlen(s); char a20,b20; for(k=0;km;k+) if(isdigit(sk) ai+=sk

38、; /数字串s中数字字符顺序存入数组a else bj+=sk; /其余字符顺序存入数组bai=0; bj=0; /加字符串的截止符strcat(a,b); /变化后字符全部存入数组astrcpy(s,a);void main() char s20=asd123fgh5#43df;file *fp; if(fp=fopen(myf2.out,w)=null) printf(ncant open the file!); exit (0); move(s); printf(n%s,s),fprintf(fp, n%s,s); printf(nmy number is:120992340n); fp

39、rintf(fp,nmy number is:1292340n); fclose(fp); /*操作结束,关闭文件fp 书p334 */ getch();江苏省高等学校非计算机专业学生(c06)计算机基础知识和应用能力等级考试上机试卷(2013春)二级 c语言(试卷代号c06)(本试卷完成时间 70分钟)一、 改错题(16分)【程序功能】任何一个合数都可以成若干个质因数相乘的形式,例如,120=22235。以下程序实现将输入的一个合数分解成质因数相乘的形式,其中,函数fun的功能是分解num的质因数,将得到的全部质因数存放在a指向的数组中,质因数的个数通过指针count带回主函数。【测试数据与运行结果】测试数据: n=120屏幕输出: 120=22235【含有错误的源程序】以下源程序已保存在t盘myf1.c文件内,考生可直接打开该文件测试程序。#include#include int pri

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论