2010年秋江苏二级C上机真题 |
江苏省高等学校非计算机专业学生 计算机基础知识和应用能力等级考试上机试卷(2010年秋) 二级C语言 (试卷代号C01) (本试卷完成时间70分钟) 一、改错题(16分) 【程序功能】 查找介于n1与n2(O<n1<n2<32768)之间所有满足下列条件的整数:(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<stdio.h> #include<math.h> int validate(int n) { int i,j,k=0,num[5]={0},size=0; do { num[size]=n%10; n=n/10; size++; }while(n<0); for(i=0;i<size-1;i++) for(j=i+1;j<size;j++) if(num[i]==num[j]) k=k+1; if(k>1) 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("%d\t",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指向的数组中字符串应为"a4b 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:a4b 【要求】 1.源程序文件名为myf2.c,输出结果文件名为myf2.out。 2.数据文件的打开、使用、关闭均用C语言标准库中缓冲文件系统的文件操作函数实现。 3.源程序文件和运行结果文件均需保存在T:盘根目录中供阅卷使用 4.不要复制扩展名为obj和exe的文件到T:盘中。 |