![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
江苏计算机二级c2009春上机试题2 |
2009春第二套 一:改错题: 程序功能: 函数mergeu的功能是:合并两个字符集合为一个新集合,每个字符串在新集合中仅出现一次,函数返回新集合中字符串的个数 [测试数据与运行结果] 测试数据: s1集合{“while”,”for”,”switch”,”if”,”continue”} s2集合{“for”,”case”,”do”,”else”,”char”,”switch”} 运行结果: while for switch if break continue case do else char [含有错误的源代码] #include <stdio.h> #include <string.h> int merge(char s1[ ][10],char s2[ ][10],char s3[ ][10],int m,int n) {int i,j,k=0; for(i=0;i<m;i++) s3[k++]=s1[i]; for(i=0;i<n;i++) {for(j=0;j<m;j++) if(strcmp(s2[i],s1[j])) break; if(j>m) strcpy(s3[k++],s2[i]); } return k; } void main() {int i,j; char s1[6][10]={“while”,”for”,”switch”,”if”,”break”,”continue”}, s2[6][10]={“for”,”case”,”do”,”else”,”char”,”switch”},s3[20][10]; j=merge(s1[][10],s2[][10],s3[ ][10],6,6); for(i=0;i<j;i++) printf(“%s “,s3[i]); } 【要求】 1. 将上述程序录入到文件myf1.C中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。 2. 改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其它语句,也不能删去整条语句. 3. 改正后的源程序(文件名myfl.c)保存在T:盘根目录中供阅卷使用,否则不予评分。 二:编程题 [程序功能] 从一个指定的自然数n0开始,按以下公式生成一个数列,直到n(i+1)为1,计算数列的长度(数列中数的个数) 当n(i)是偶数时,n(i+1)=ni/2 当n(i)是奇数时,n(i+1)=3*ni+1 例如:当n0=7时生成的数列为:7,22,11。34,17,52,26,13,40,20,10,5。 16,8,4,2,1.该数列的长度为17。 【编程要求】 1.编写函数int linkrun(int a,int b,int *p),以[a,b]中所有自然数作为n0可以生成b-a+1个满足上述特性的数列,求出这些数列的长度并依次保存到p指向的数组中, 函数返回p数组中的最大值。 2.编写main函数,声明变量a、b和一维数组P,接收键盘输入的两个自然数保存到a、b变量中,以a、b和P作为实参调用linkrun函数,将P数组中存储的各数列的长度值和最大值输出到屏幕及结果文件myf2.out中。最后将考生本人的准考证号字符串也保存到结果文件myf2.out中。 【测试数据与运行结果】 测试数据:a=5 b=9 运行结果: 6 9 17 4 20 max=20 【要求】 1.源程序文件名为myf2.c,输出结果文件名为myf2.out。 2.数据文件的打开、使用、关闭均用C语言标准库中缓冲文件系统的文件操作函数实现. 3.源程序文件和运行结果文件均需保存在T:盘根目录中供阅卷使用. 4.不要复制扩展名为obj和exe的文件到T:盘中。
|