2010秋江苏省高校计算机等级考试C语言上机题及其参考答案_张柏雄.doc_第1页
2010秋江苏省高校计算机等级考试C语言上机题及其参考答案_张柏雄.doc_第2页
2010秋江苏省高校计算机等级考试C语言上机题及其参考答案_张柏雄.doc_第3页
2010秋江苏省高校计算机等级考试C语言上机题及其参考答案_张柏雄.doc_第4页
2010秋江苏省高校计算机等级考试C语言上机题及其参考答案_张柏雄.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

苏州科技学院天平学院张柏雄编写(),仅供参考江苏省高等学校非计算机专业学生计算机基础知识和应用能力等级考试上机试卷(2010秋)二级 C语言(试卷代号C01)(本试卷完成时间 70分钟)一、 改错题(16分)【程序功能】查找介于n1与n2(0n1n232768)之间所有满足下列条件的整数:该数的十进制表示中有且仅有两个相同的数字位;该数是素数。【测试数据与运行结果】测试数据:n1=900 n2=1200屏幕输出:911 919 929 977 991 997 1009 1013 1019 1021 1031 1033 1051 1061 1091 1103 1109 1123 1129 1153 1163 1187 1193【含有错误的源程序】#include #include int validate(int n) int i,j,k=0,num5=0,size=0; do numsize=n%10; n=n/10; size+; while(n0); for(i=0;isize-1;i+) for(j=i+1;j1)return 1;else return 0;int prime(int n) int i; for(i=2;i(int)sqrt(n);i+) if(n%i=0) return 0; return 1;void main() int i,count=0,n1,n2; scanf(%d%d,&n1,&n2); for(i=n1;i=n2;i+) if(validate(int i)&prime(int i) count+; printf(%dt,i); if(count%8=0) printf(n); 【要求】1. 将上述程序录入到文件myfl.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。2. 改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其它语句,也不能删去整条语句。3. 改正后的源程序(文件名myfl.c)保存在T:盘的根目录中供阅卷使用,否则不予评分。二、编程题(24分)【程序功能】字符串变换。【编程要求】1. 编写函数void change(char *a, char *b, char *c)。函数功能是首先把b指向的字符串逆向存放,然后将a指向的字符串和c指向的字符串按排列顺序交叉合并到c指向的数组中,两个字符串中过长的剩余字符接在c指向的数组的尾部。例如a指向的字符串为“abcdef”,b指向的的字符串为“1324”时,c指向的数组中字符串应为“a4b2c3d2efg”。2. 编写main函数。函数功能是声明字符数组s1、s2和t,用测试数据初始化数组s1和s2,再用s1、s2和t作为实参调用函数change,将s1、s2和t中的字符串输出到屏幕及文件myf2.out中。最后将考生本人的准考证号输出到文件myf2.out中。【测试数据与运行结果】测试数据:s1=abcdefg s2=1324屏幕输出: s1=abcdefg s2=4231 The result is :a4b2c3d1efg【要求】1. 源程序文件名必须取为myf2.c,输出结果文件名为myf2.out。2. 数据文件的打开、使用、关闭均用C语言标准库中缓冲文件系统的文件操作函数实现。3. 源程序文件和运行结果文件均需保存到T:盘上,供阅卷使用。4. 不要复制扩展名为obj和exe的文件到T:盘上。C语言(试卷代号C01)【C01改错题参考答案】#include /*2010秋C01改错题答案*/#include int validate(int n) int i,j,k=0,num5=0,size=0; do numsize=n%10; n=n/10; size+; while(n0); /*1.将n0*/ for(i=0;isize-1;i+) for(j=i+1;j1改为k=1*/return 1;else return 0;int prime(int n) int i; for(i=2;i(int)sqrt(n);i+) if(n%i=0) return 0; return 1;void main() int i,count=0,n1,n2; scanf(%d%d,&n1,&n2); for(i=n1;i=n2;i+) if(validate(i)&prime(i) /*3.函数调用错误:validate(int i)&prime(int i)改为validate(i)&prime(i)*/ count+; printf(%dt,i); if(count%8=0) printf(n); 【2010秋C01编程题参考答案一】#include #include #include void change(char *a, char *b, char *c) int i,m=0,j=strlen(b),k=0; char d, e5; for(i=0;ai!=0;i+) ck+=ai; if(j0) ck+=b-j; em+=bj; /*在穿插的同时,将倒序的字符存入字符串数组e*/ ck=0; em=0; /*两个字符串数组c和e各加结束符*/ strcpy(b,e); /*将倒序后的字符串e复制到字符串数组b*/void main() char s110=abcdefg,s210=1324,t20=; FILE *fp; if(fp=fopen(myf2.out,w)=NULL) printf(nCant open the file!); exit(0); printf(s1:%sn,s1); fprintf(fp,s1:%sn,s1); change(s1,s2,t); printf(s2:%sn,s2); fprintf(fp,s2:%sn,s2); printf(nThe result is:%sn,t); fprintf(fp,nThe result is:%sn,t); printf(nMy number is:0830107123n); fprintf(fp,nMy number is:0830107123n); fclose(fp); getch();【2010秋C01编程题参考答案二】#include #include #include void change(char *a, char *b, char *c) char d; int i,j=strlen(b),k=0,m=0; for(i=0;ij/2;i+) d=bi;bi=bj-1-i;bj-1-i=d; for(i=0;ai!=0;i+) ck+=ai; if(mj) ck+=bm+; ck=0;void main() char s110=abcdefg,s210=1324,t20=; FILE *fp; if(fp=fopen(myf2.out,w)=NULL) printf(nCant open the file!); exit(0); printf(s1:%sn,s1); fprintf(fp,s1:%sn,s1); change(s1,s2,t); printf(s2:%sn,s2); fprintf(fp,s2:%sn,s2); printf(nThe result is:%sn,t); fprintf(fp,nThe result is:%sn,t); printf(nMy number is:0830107123n); fprintf(fp,nMy number is:0830107123n); fclose(fp); getch();2010秋C01编程题两种方法评论:方法一: 程序查读性好,但程序较长;方法二: 程序简洁。江苏省高等学校非计算机专业学生计算机基础知识和应用能力等级考试上机试卷(2010秋)二级 C语言(试卷代号C02)(本试卷完成时间 70分钟)二、 改错题(16分)【程序功能】对一个字符串中每个字符(其编码用ch表示)做如下加密操作:如果ch是小写字母,就用(Ch+5)值的八进制数字字符串替换该字母;如果ch是大写字母,就用(Ch-5)值的十六进制数字字符串替换该字母;如果ch是非字母字符则保持原样。函数en的功能是将形参c中字符的编码转换成n进制数字字符串并保存到s指向的数组中。函数encrypt的功能是将a指向的字符串按以上要求做加密处理后保存到b指向的数组中【测试数据与运行结果】测试数据:No.1屏幕输出:49164.1【含有错误的源程序】#include #include void en(char c, int n, char s) int t,i=0; char temp; while(c!=0) t=c%n; if(t10) si+=t+0; else si+=t-10+A; c=c/10; si=0; for(t=i-1,i=0;i=a&ai=A&ai=Z) en(ai-5,16,s); else s0=ai,s1=0; strcpy(b,s); void main() static char a30=No.1, b100; encrypt(char a30, char b100);puts(b);【要求】4. 将上述程序录入到文件myfl.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。5. 改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其它语句,也不能删去整条语句。6. 改正后的源程序(文件名myfl.c)保存在T:盘的根目录中供阅卷使用,否则不予评分。二、编程题(24分)【程序功能】在所有三位整数中找出平方数中有连续的三位数字是该数本身的数。例如,250的平方是62500,250便是所要找的一个满足条件的三位整数。【编程要求】3. 编写函数int find(long a2)。函数功能是将三位数中所有满足上述条件的数及其平方数存入a指向的二维数组中,函数返回满足上述条件的三位数的个整数。4. 编写main函数。函数功能是声明二维数组a,用数组a作为实参调用函数find,输出满足条件的三位整数及其平方数到屏幕及文件myf2.out中。最后将考生本人的准考证号输出到文件myf2.out中。【测试数据与运行结果】屏幕输出: i power100 10000250 62500376 141376500 250000600 360000625 390625760 577600【要求】1、 源程序文件名必须取为myf2.c,输出结果文件名为myf2.out。2、 数据文件的打开、使用、关闭均用C语言标准库中缓冲文件系统的文件操作函数实现。3、 源程序文件和运行结果文件均需保存到T:盘上,供阅卷使用。4、不要复制扩展名为obj和exe的文件到T:盘上。2010秋C语言(试卷代号C02)【改错题参考答案】#include #include void en(char c, int n, char *s) /*1、char s改为 指针形式 char *s*/ int t,i=0; char temp; while(c!=0) t=c%n; if(t10) si+=t+0; else si+=t-10+A; c=c/n; /*2、c=c/10; 改为 标准形式 c=c/n;*/ si=0; for(t=i-1,i=0;i=a&ai=A&ai=Z) en(ai-5,16,s); else s0=ai,s1=0; strcat(b,s); /*3、字符串复制函数 strcpy 改为字符串接龙函数 strcat*/ void main() static char a30=No.1, b100; encrypt(a,b); /*4、encrypt(char a30, b100); 改为数组首地址encrypt(a,b);*/puts(b);【2010秋C02编程题参考答案】#include #include #include #include void reverse(long h, char y) long x=h; int k=0,i; char c; while(x0) yk+=x%10+0; x/=10; yk=0;int find(long a2) int i,j,k,m,n=0; char x10,y10; for(i=100;i999;i+) reverse(i,x); reverse(i*i,y); k=0,m=0; for(j=0;jstrlen(y);j+) if(yj=xm&yj+1=xm+1&yj+2=xm+2) an0=i;an1=i*i;n+; return n;void main() long b202=0; int n,i; FILE *fp; if(fp=fopen(myf

温馨提示

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

评论

0/150

提交评论