2010-2012年江苏省计算机二级C上级考试试题及答案上机_第1页
2010-2012年江苏省计算机二级C上级考试试题及答案上机_第2页
2010-2012年江苏省计算机二级C上级考试试题及答案上机_第3页
2010-2012年江苏省计算机二级C上级考试试题及答案上机_第4页
2010-2012年江苏省计算机二级C上级考试试题及答案上机_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

2012春江苏省高校计算机等级考试 二级C语言上机试卷1 (本试卷完成时间为70分钟) 一、改错题(16分) 【程序功能】 以下程序中函数void csort(char strN,int n)对str指向的二维数组前n行中存储的n个字符串分别作如下处理:从中间将字符串一分为二,左半部分字符子串按字符的ASCII码值从大到小排序(若字符串的长度为奇数,则中间字符不参加排序)。 【测试数据与运行结果】 测试字符串:abcdefgh, 屏幕输出:dcbaefgh 【含有错误的源程序】 以下源程序已保存在T盘myf1.c文件内,考生可直接打开该文件的调试程序。1 #include2 #include3 #include4 #define N 805 void csort(char strN,int n);6 void main()7 char s2N=abcdefgh,;8 int i;9 csort(s,2);10 for(i=0;i2;i+)11 puts(s); 12 getch();13 14 void csort(char strN,int n)15 int i,j,k,len,half;16 char temp;17 for(i=0;in;i+)18 len=strlen(stri0);19 half=len/2;20 for(j=0;jhalf-1;j+)21 for(k=j+1;khalf-1;k+)22 if(strijstrik)23 temp=strij;24 strij=strik;25 strik=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 a30,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.不要复制扩展名为obj和exe的文件到T盘中。 参考答案一、改错题第7行 char s2N=abcdefgh,; 改为abcdefgh,第11行 puts(s); 改为puts(si)第18行 len=strlen(stri0); 改为stri第21行 for(k=j+1;khalf-1;k+) 改为khalf二、编程题 #include #include int found(int a30,int n) int i,k=0,s=0,j,count,l=0; for(i=1;i=n;i+) for(s=0,j=i;sn;j+) s=s+j; if(s=n) count=0; for(k=i;kj;k+) a1count+=k; l+; return l; void main() int i,j,n,m,a1030=0; FILE *fp; fp=fopen(myf2.out,w); printf(input n:); scanf(%d,&n); m=found(a,n); for(i=0;im;i+) for(j=0;aij;j+) printf(%d,aij); fprintf(fp,%d,aij); printf(n); fprintf(fp,n); fprintf(fp,My exam number is:); fclose(fp); getch(); 2011春江苏省二级C上机考试真题第2套江苏省高等学校非计算机专业学生计算机基础知识和应用能力等级考试上机试卷(2011年春)二级C语言 (试卷代号C02)(本试卷完成时间70分钟)一、改错题(16分)【程序功能】 统计一个字符串中包含的字母串个数并找出其中最长的字母串。 所谓字母串是指一个连续的字母序列(不区分大小写),字母串之间用非字母字符分隔。函数count的功能是统计p指向的字符串中包含的字母串个数,找出的最长字母串存放在pmax指向的数组中,函数返回字母串的个数。【测试数据与运行结果】 测试数据:you are teaeher234too. 屏幕输出:a=you are teacher234too. number is 4 max string is:teacher【含有错误的源程序】 #include #include #include int count(char p,char pmax) int j=0,k,m=0; char temp100; while(*p) while(!isalpha(*p) & *p) p+; k=0; if(*p!=0) m+; while(isalpha(*p) tempk+=*p+; tempk=0; if(kj) j=k; pmax=temp; return m; void main() char a100=you are teacher234too.,max100; int i; i=count(a,max); if(i=0) printf(a=%S: No letter strings!n,a); else prinff(a=%snnumber is %dnmax string is:%sn,a,i,max); 【要求】 1.将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。 2.改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其他语句,也不能删去整条语句。 3.改正后的源程序(文件名myf1.c)保存在T:盘根目录中供阅卷使用,否则不予评分二、编程题(24分)【程序功能】 将一个二维数组中的若干行数据按要求插入到另一个二维数组中。【编程要求】 1.定义符号常量N代表4 2.编写函数int insert_row(int aN,int n,int bN,int m)。已知形参a指向的二维数组(简称a数组)前n行数据已按每行数据之和升序排列,形参b指向的二维数组中有m行数据。insert_row函数实现将b数组中m行数据插入到a数组中,完成插入操作后a数组中所有行的数据仍按每行数据之和升序排列。函数返回a数组中有效数据的行数。 3.编写main函数。函数功能是声明两个二维数组x和y并用测试数据初始化,用x和y数组作为实参调用insert_row函数将y数组中的两行数据插入到x数组中。输出x数组中全部数据到屏幕及文件myf2.out中。最后将考生本人的准考证号字符串输出到文myf2.out中。【测试数据与运行结果】 测试数据: x数组原数据: 2 2 3 4 9 10 11 12 y数组数据: 1 3 5 7 5 10 15 20 屏幕输出: 2 2 3 4 1 3 5 7 9 10 11 12 5 10 15 20【答案】改错1:将第13行 temp0=0 修改为 temp0=0改错2:将第14行 if(kj)改错3:将第16行 pmax=temp,修改为 strcpy(pmax,temp);改错4:将第24行i=count(a,max)修改为i=count(a,max);2011春江苏省计算机二级C上机真题1二级C语言上机试卷 (本试卷完成时间为70分钟) 一、改错题(16分) 【程序功能】 对存储在string数组内的英文句子中所有以a开始并以e结尾的单词做加密处理。加密规则:若单词长度为偶数个字符,则将组成该单词的所有字母循环左移一次;否则循环右移一次。例如,单词able经循环左移一次后变为blea;单词abide经循环右移一次后变为eabid。 【测试数据与运行结果】 测试数据:she is able to abide her. 屏幕输出:she is blea to eabid her. 【含有错误的源程序】 #include #include void wordchange(char str) int i,j,k,m; char c; for(i=0;stri;i+) for(j=i,k=i;isalpha(strk);k+); if(strj=a | strk-1=e) if(k-j)%2=0) c=strj; for(m=k-1;mj;m-) strm=strm+1; strk-1=c; else c=strk-1; for(m=k-1;mj;m-) strm=stym-1; strj=c; i=k; 。 void main() char string80=she is able to abide her.; wordchange(string80); puts(string); 【要求】 1.将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。 2.改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其他语句,也不能删去整条语句。 3.改正后的源程序(文件名myf1.c)保存在T盘根目录中供阅卷使用,否则不予评分。 二、编程题(24分) 【程序功能】 矩阵数据生成及排序。 【编程要求】 1.编写函数void cresort(int a3,int n)。函数功能是先根据a指向的二维数组中第1列(列下标为0)和第2列(列下标为1)的值按下表所列规则生成第3列各元素的值,再以行为单位重排a数组的各行,使得所有行按第3列元素值从小到大排列。 第3列生成规则: 对任意的i(0=ij;m-) 改为m=j;mk-1;m+ wordchange(string80); 改为string二、编程题 #include #define N 5 int isprime(int m) int i; for(i=2;i=m/2;i+) if(m%i=0)return 0; retum 1; void cresort(int a3,int n) int i,j,k,m,c,t; for(i=0;in;i+) c=isprime(ai0)+isprime(ai1); switch(c) case 0:ai2=1;break; case 2:ai2=4;break; case 1:if(isprime(ai0)ai2=3; else ai2=2;break; for(i=0;in-1;i+) k=i; for(j=i+1;jn;j+)江苏省高等学校非计算机专业学生 计算机基础知识和应用能力等级考试上机试卷(2010年秋) 二级C语言 (试卷代号C01) (本试卷完成时间70分钟) 一、改错题(16分) 【程序功能】 查找介于n1与n2(On1n232768)之间所有满足下列条件的整数:(1)该数的十进 制表示中有且仅有两个相同的数字位;(2)该数是素数。 【测试数据与运行结果】 测试数据: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 【含有错误的源程序】 #inelude #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) int i; for(i=2;i=(int)sqrt(n);i+) if(n%i=0)retum 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. 将上述程序录入到文件myf1.C中,根据题目要求及程序中语句之间的逻辑关系对程序 中的错误进行修改。2. 改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预 处理命令,但不能增加其他语句,也不能删去整条语句。3. 改正后的源程序(文件名myf1.c)保存在T:盘根目录中供阅卷使用,否则不予评分。二、编程题(24分)【程序功能】 字符串变换。【编程要求】1. 编写函数void change(char *a,char *b,char *c)。函数功能是首先把b指向的字符串逆向存放,然后将a指向的字符串和b指向的字符串按排列顺序交叉合并到c指向的数组中,两个字符串中过长的剩余字符接在c指向数组的尾部。例如,当a指向的字符串为abcdefg,b指向的字符串为1324时,C指向的数组中字符串应为a4b2c3dlefg。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:a4b2c3dlefg【要求】 1.源程序文件名为myf2.c,输出结果文件名为myf2.out。2.数据文件的打开、使用、关闭均用C语言标准库中缓冲文件系统的文件操作函数实现。3.源程序文件和运行结果文件均需保存在T:盘根目录中供阅卷使用4.不要复制扩展名为obj和exe的文件到T:盘中。二级 C语言上机试卷2010春C上机真题第一套 (本试卷完成时间为70分钟) 一、改错题(16分) 【程序功能】 验证3(n范围内的任意两个相邻素数的平方之间至少存在4个素数。例如,5和7是两个相邻素数,52(25)与72(49)之间存在6个素数:29 31 37 41 43 47。 【测试数据与运行结果】 显示:input n: 输入:10 输出: 35 k=5 11 13 17 19 23 57 k=6 29 31 37 41 43 47 【含有错误的源程序】 #include 样include int prime(int n) int i,flag=1; for(i=1;i=sqrt(n);i+) if(n%i=0)flag=0; return flag; int fun(int a,int n) int i,k=0; for(i=3;in) return 0; for(i=m*m;in*n;i+) if(prime(i) bk+=i; return k; void main() int a50=0,b100=0,i,m,k,j,n; printf(input n:); scanf(%d,&n); m=fun(a,n); for(i=O;im-1;i+) k=fun1(ai,ai+1,bO); printf(%d%d k=%d,ai,ai+1,k); if(k4)printf(false);break; for(j=0;jk;j+) if(j%10=O)prinff(n); printf(%5d,bj); printf(n); getch(); 【要求】 1将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。 2改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其它语句,也不能删去整条语句。 3改正后的源程序(文件名myf1.c)保存在T:盘根目录中供阅卷使用,否则不予评分。 二、编程题(24分) 【程序功能】 在给定范围内查找k使得用公式k2+k+17生成的整数满足以下条件:该数的十进制表示中低3位数字相同,去掉低3位后的整数是回文数。例如,当k=461时用公式生成的整数是,该数满足所给条件。 【编程要求】 1编写函数int findnum(int n1,int n2,long a2)实现以下功能:k依次取n1n2范围内的每个整数,分别用每个k及公式k2+k+17生成整数y,若y满足给定条件,则将k值及y值保存到a指向的数组中,函数返回a数组中k的个数。 2编写函数main实现以下功能:声明二维数组a和变量n1、n2,输入两个整数并保存到n1、n2中,用n1、n2及a数组作实参调用findnum函数,按所给格式输出a数组中的数据到屏幕及文件myf2.out中。最后将考生本人的准考证号输出到文件myf2out中。 【测试数据与运行结果】 输入:n1=1,n2=10000 输出:k number 461 586 3839 【要求】 1源程序文件名为myf2c,输出结果文件名为myf2out。 2数据文件的打开、使用、关闭均用c语言标准库中缓冲文件系统的文件操作函数实现。 3源程序文件和运行结果文件均需保存在T:盘根目录中供阅卷使用。 4不要复制扩展名为obj和exe的文件到T:盘中。 参考答案 一、改错题 for(i=1;i=sqrt(n);i+) 改为i=2 void fun1(int m,int n,int b) 改为int k=fun1(ai,ai+1,b0); 改为b if(j%10=0)printf(n); 改为j%10=0 二、编程题 #include int findnum(int n1,int n2,long a2) int i=0,j; long x1,x2,x3,y,k; for(k=n1;k0) x3=x3*10+x1%10;x1=x1/10; if(x2=x3&y%10=y/10%10&y%10=y/100%10) ai0=k;ai+1=y; return i; main() int i,j;long a102,n1,n2; FILE *fp; fp=fopen(Myf2.out,w); scanf(%d%d,&n1,&n2); j=findnum(n1,n2,a); printf(n kt number); for(i=0;ij;i+)prinff(n%ldt%ld,ai0,ai1); fprintf(fp,n k t number); for(i=0;ij;i+) fprintf(fp,n%ldt%ld,ai0,ai1); fprintf(fp,n My exam number is :); fclose(fp);getch(); #include main() FILE *in, *out; char ch,infile10 , outfil

温馨提示

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

最新文档

评论

0/150

提交评论