2013秋江苏省计算机二级C上机真题第1套 |
2013秋江苏省高校计算机等级考试 二级 C语言上机试卷第1套 (本试卷完成时间为70分钟) 一、改错题(16分) 【程序功能】 统计一组单词(本题中含2个单词)中的每个单词在一篇文章中各自出现的次数,单词中的字母字符区分大小写。 【测试数据与运行结果】 测试数据: 文章正文: The Olympic Games will be held just outside the capital and the whole area will be called 'Olympic City'. 被统计的一组单词:Olympic, will 屏幕输出:Olympic:2 wi11:2 【含有错误的源程序】 以下源程序已保存在T盘myf1.c文件内,考生可直接打开该文件调试程序。 1 #include< stdio.h> 2 #include< conio.h> 3 #include< string.h> 4 #include< ctype.h> 5 void count( char str[] ,char substr[][10] ,int ct[],int n) 6 { 7 int i,j,k =0,m =0; 8 char t[]; 9 for(i=0;str[i];i++) 10 { 11 for(j=i;isalpha(str[j]);i++) 12 { 13 t[m]=str[j]; 14 j++;m++; 15 } 16 t[m]=’/0'; 17 for(k=0;k<n;k++) 18 if( t == substr[k]) 19 ct[k]++; 20 m=0; 21 } 22 } 23 int main() 24 { 25 char line[]="The Olympic Games will be held just outside the capital and the whole area will be 26 called 'Olympic City,.”; 27 char word[][10]={”Olympic”,”will”}; 28 int i,c[2]={0}; 29 count(line[] ,word[][],c,2); 30 for(i=0;i<2;i++) 31 printf("\n%8s:%2d",word[i],c[i]); 32 getch(); 33 return 0; 34 } 【要求】 1.打开T盘中myfl.c文件或将上述程序录入到myfl.c文件中,根据题目要求及程序中 语句之间的逻辑关系对程序中的错误进行修改。 2.改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预 处理命令,但不能增加其他语句,也不能删去整条语句。 3.改正后的源程序(文件名myfl.c)保存在T盘中供阅卷使用,否则不予评分。 二、编程题(24分) 【程序功能】 找出[a,b]区间内所有满足以下条件的整数:(1)该数是素数;(2)该数的十进制表示是 4位数并且是降序数(即从高位到低位的各位数字依次减小或不增加的整数)。例如,4211既是素数又是4位降序数,因此4211是满足上述条件的整数。 【编程要求】 1.编写函数int decend(long n1,long n2,long x[])。函数功能:找出[n1,n2]区间内满足上述条件的所有整数并依次存放到x指向的一维数组中,函数返回满足条件的整数个数。 2.编写main函数。函数功能:声明变量a、b及一维数组c,键盘输入a、b的值,调用decend函数找出[a,b]区间内所有满足上述条件的整数并保存到c数组,输出c数组中的结果数据到屏幕及文件myf2.out中,最后将考生本人的准考证号输出到文件myf2.out中。 【测试数据与运行结果】 测试数据:a =1000 b=5000 屏幕输出:2111 2221 3221 3331 4111 4211 4421 4441 【要求】 1.源程序文件名为myf2.c,输出结果文件名为myf2.out。 2.数据文件的打开、使用、关闭均用C语言标准库中的文件操作函数实现。 3.源程序文件和运行结果文件均需保存在T盘中供阅卷使用。 4.不要复制扩展名为obj和exe的文件到T盘中。 参考答案 一、改错题 第8行 char t[]; 改为t[10] 第16行 t[m]='/0'; 改为'\0' 第18行 if(t== substr[k]) 改为 !strcmp(t,substr[k])或strcmp(t, substr[k] ==0) 第29行 count (line[] ,word[][],c,2); 改为 (line, word,c,2) 二、编程题 #include <stdio.h> #include <stdlib.h> #include <conio.h> int prime(long n) { int i =2; while( n%i&&i<=n/2)i++; if(i<n/2) return 0; else return 1; } int decend( long n1 ,long n2, long x[]) { long int i,y; int a[4] ,k,j =0; for(i=n1;i<=n2;i++) if( prime(i)) {k=0;y=i; while(y){a[k++]=y% 10;y/= 10;} if(k==4) { k--; while(k>0&&a[k]>=a[k-1])k--; if(k==0) x[j++]=i; } } return j; } int main() { FILE *fp; int k,i; long a,b,c[100]; printf( "a,b: "); scanf("%ld%ld",&a,&b); fp=fopen( "myf2.out","w"); if( fp==NULL) {printf( "Create File myf2. out failed ! \n") ; exit(0) ;} k = decend( a,b,c) ; for(i = 0; i<k; i++ ) { printf("%10ld",c[i] ) ; fprintf(fp,"%lOld",c[i] ) ; } fprintf( fp, "my examination number is 00123456789\n") ; fclose ( fp) ; getch( ) ; return 0; } |