2022年春江苏省高校计算机等级考试二级C语言上机题 .pdf
2012 春上机题 _C01 第 1 页 共 3 页江苏省高等学校非计算机专业学生计算机基础知识和应用能力等级考试上机试卷(2012春)二级C 语言( 试卷代号 C01) (本试卷完成时间70 分钟)一、改错题 (16 分)【程序功能 】以下程序中函数void csort(char strN,int n) 对 str 指向的二级数组前n 行中存储的n 个字符串分别做如下处理:从中间将字符串一分为二,左半部分字符子串按字符的ASCII 码从大到小排序(若字符串长度为奇数,则中间字符不参加排序)。【测试数据与运行结果】测试字符串:” abcdefgh” , ” 123498765”屏幕输出: dcbaefgh 432198765 【含有错误的源程序】#include #include #include #define N 80 void csort(char strN,int n); void main() char s2N=abcdefgh,123498765; /char s2N=abcdefghertyt,123498765; /二维字符串赋值需要在数值两边加大括弧/char s10= we hunt the dog; int i; csort(s,2); for(i=0;i2;i+) puts(s); /puts(si); si表示第 i 行字符串getch(); void csort(char strN,int n) int i,j,k,len,half; char temp; for(i=0;in;i+) len=strlen(stri0); /len=strlen(stri); half=len/2; / half=len/2+1; 因为下面两行循环终止值是half-1 for(j=0;j half-1; j+) for(k=j+1; khalf-1; k+) if(strijstrik) temp=strij; strij=strik; strik=temp; 【要求】名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 3 页 - - - - - - - - - 2012 春上机题 _C01 第 2 页 共 3 页1.打开 T 盘中 myfl.c 文件或将上述程序录入到myf1.c 文件中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。2.改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其它语句,也不能删去整条语句。3.改正后的源程序(文件名myfl.c)保存在T 盘的根目录中供阅卷使用,否则不予评分。二、编程题( 24 分)【程序功能】对于所给的一个自然数n,查找并输出所有满足以下条件的等差数列:公差为1;数列中各项数值之和等于n。【编程要求】1、编写函数int found(int a30, int n)。函数功能:查找满足上述条件的所有等差数列并依次将其保存到a 指向的数组中(一行保存一个数列),函数返回找到的数列个数。2、编写函数main()。函数功能:声明一个二级整型数组用于保存查找结果,输入一个整数并保存到变量n 中( n 600) 。用 n 和整型数组作实参调用found 函数,将找到的所有等差数列输出到屏幕及数据文件myf2.out 中。最后将考生本人的准考证号输出到文件myf2.out 中。【测试数据与运行结果】输入 m=500 屏幕输出:8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 59 60 61 62 63 64 65 66 98 99 100 101 102 500 My number is 11234567 【要求】1.源程序文件名为myf2.c,输出结果文件名为myf2.out。2.数据文件的打开、使用、关闭均用C 语言标准库中文件操作函数实现。3.源程序文件和运行结果文件均需保存到T 盘上,供阅卷使用。4.不要复制扩展名为obj 和 exe的文件到T 盘上。【编程题解答: myf2.c】#include #include int found(int a30, int n); /分析:/从 2开始/3,4,5,6,7,8,9.500 /请同学们考虑,若公差是3,如何修改程序void main() FILE *fp; int a1030=0; int n; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 3 页 - - - - - - - - - 2012 春上机题 _C01 第 3 页 共 3 页 int i,j,k; if(fp=fopen(myf2.out,w)=NULL) printf(It is not open this file!n); exit(0); scanf(%d,&n); while(n600|n0) scanf(%d,&n); k=found(a,n); for(i=0;ik;i+) for(j=0;j30;j+) if(aij=0) break; printf(%d ,aij); fprintf(fp,%d ,aij); printf(n); fprintf(fp,n); fprintf(fp,e5345435); fclose(fp); int found(int a30, int n) int i,j,k,x=0,m; for(i=1;i=n;i+) k=0; for(j=i;j=n) break; if(k=n) /说明: i 到 j 之间的等差数列之和等于n,将 i 到 j 之间的数列写到数组中去; int xiabiao=0; for(m=i;m=j;m+) axxiabiao=m; xiabiao+; x+; return x; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 3 页 - - - - - - - - -