江苏省计算机等级考试C语言上机模拟题.docx
- 文档编号:23900036
- 上传时间:2023-05-22
- 格式:DOCX
- 页数:19
- 大小:26.19KB
江苏省计算机等级考试C语言上机模拟题.docx
《江苏省计算机等级考试C语言上机模拟题.docx》由会员分享,可在线阅读,更多相关《江苏省计算机等级考试C语言上机模拟题.docx(19页珍藏版)》请在冰豆网上搜索。
江苏省计算机等级考试C语言上机模拟题
江苏省等级考试(2级C)上机模拟题
模拟题一
一、改错题(18分)
【题目】
函数fun的功能是:
输出M行M列整数方阵,然后求两条对角线上各元素之和,返回此和数。
含有错误的程序如下:
#include
#include
#defineM5
intfun(intn,intxx[][])
{inti,j,sum;
printf("\nThe%dx%dmatrix:
\n",M,M);
for(i=0;i {for(j=0;j printf("%f",xx[i][j]); printf("\n"); } for(i=0;i sum+=xx[i][i]+xx[i][n-i]; return(sum); } main() {intaa[M][M]={{1,2,3,4,5},{4,3,2,1,0}, {6,7,8,9,0},{9,8,7,6,5},{3,4,5,6,7}}; clrscr(); printf("\nThesumofallelementson2diagnalsis%d.",fun(M,aa)); } 【要求】 1.将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。 2.改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译处理命令,但不能增加其他语句,也不能删去整条语句。 3.改正后的源程序(文件名myf1.c)必须放在考试软盘的根目录下,供阅卷用,否则不予评分。 二、编程题(22分) 【题目】 1.编写函数fun,函数的功能是: 移动字符串中的内容,移动的规则如下: 把第1到第m个字符平移到字符串的最后,把第m+1到最后的字符串移到字符串的前部。 例如: 字符串中原有的内容为: ABCDEFGHIJK,m的值为3,则移动后,字符串中的内容应该是: DEFGHIJKABC。 2.编写main函数,在main函数中初始化一个字符串,调用函数fun,将结果字符串及函数返回值写入到文件myf2.out中。 【要求】 1.源程序文件名必须取为myf2.c,输出结果文件名为myf2.out。 2.数据文件的打开、使用、关闭均用C语言标准库中缓冲文件系统的文件操作函数实现。 3.源程序文件和运行结果文件均需要保存在考试软盘的根目录中供阅卷使用。 4.不要复制扩展名为obj和exe的文件到考试软盘上。 模拟题二 一、改错题(18分) 【题目】 函数fun的功能是: 将p所指字符串中的所有字符复制到b中,要求每复制三个字符之后插入一个空格。 例如,在调用fun函数之前给a输入字符串: ABCDEFGHIJK, 调用函数之后,字符数组b中的内容则为: ABCDEFGHIJK。 含有错误的程序如下: #include voidfun(char*p,char*b) {inti,k=0; while(*p) {i=1; while(i<3&&*p) { b[k]=p; k++;p++;i++; } if(*p) { b[k++]=""; } } b[k]=''\0''; } main() {chara[80],b[80]; printf("Enterastring: ");gets(a); printf("Theoriginalstring: ");puts(a); fun(a,b); printf("\nThestringafterinsertspace: "); puts(b);printf("\n\n"); } 【要求】 1.将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。 2.改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译处理命令,但不能增加其他语句,也不能删去整条语句。 3.改正后的源程序(文件名myf1.c)必须放在考试软盘的根目录下,供阅卷用,否则不予评分。 二、编程题(22分) 【题目】 1.编写main函数,将N名学生的成绩在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。 并调用函数fun,将结果及函数返回值写入到文件myf2.out中。 2.请编写函数fun,它的功能是: 求出这N个学生的平均分,由函数值返回。 例如,若学生的成绩是: 85,76,69,85,91,72,64,87,则平均分应当是: 78.625。 【要求】 1.源程序文件名必须取为myf2.c,输出结果文件名为myf2.out。 2.数据文件的打开、使用、关闭均用C语言标准库中缓冲文件系统的文件操作函数实现。 3.源程序文件和运行结果文件均需要保存在考试软盘的根目录中供阅卷使用。 4.不要复制扩展名为obj和exe的文件到考试软盘上。 模拟题三 一、改错题(18分) 【题目】 N个有序整数列已放在一维数组中,下列给定程序中函数fun的功能是: 利用折半查找算法查找整数m在数组中的位置。 若找到,则返回其下标值,反之,则返回-1。 提示: 折半查找的基本算法是: 每次查找前先确定数组中待查的范围,low和high,然后把m与中间位置(mid)中元素的值进行比较,如果m的值大于中间位置元素中的值,则下一次的查找范围放在中间位置之后的元素中,反之,下一次的查找范围落在中间位置之前的元素中。 直到low 含有错误的程序如下: #include #defineN10 voidfun(inta[],intm) {intlow=0,high=N-1,mid; while(low<=high) {mid=(low+high)/2; if(m<=a[mid]) high=mid-1; elseif(m>=a[mid]) low=mid+1; return(mid); } return(-1); } main() {inti,a[N]={-3,4,7,9,13,45,67,89,100,180},k,m; printf(“a数组中的数据如下: ”); for(i=0;i printf(“Enterm: “);scanf(“%d”,&m); k=fun(a,m) if(k>=0)printf(“m=%d,index=%d\n”,m,k); elseprintf(“Notbefound! \n”); } 【要求】 1.将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。 2.改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译处理命令,但不能增加其他语句,也不能删去整条语句。 3.改正后的源程序(文件名myf1.c)必须放在考试软盘的根目录下,供阅卷用,否则不予评分。 二、编程题(22分) 【题目】 1.编写函数fun,它的功能是: 将3行4列矩阵x乘以4行3列矩阵y,结果放在3行3列矩阵xy中。 矩阵相乘的基本方法是: 矩阵xy中行列下标分别为i,j的元素的值,是矩阵x中第i行上4个元素与矩阵y中第j列上4个元素对应相乘的和。 例如: 矩阵x为 ,矩阵y为 ,则矩阵xy为 。 2.编写main函数,初始化两个数组,调用函数fun,将结果矩阵及函数返回值写入到文件myf2.out中。 【要求】 1.源程序文件名必须取为myf2.c,输出结果文件名为myf2.out。 2.数据文件的打开、使用、关闭均用C语言标准库中缓冲文件系统的文件操作函数实现。 3.源程序文件和运行结果文件均需要保存在考试软盘的根目录中供阅卷使用。 4.不要复制扩展名为obj和exe的文件到考试软盘上。 模拟题四 一、改错题(18分) 【题目】 函数fun的功能是: 将m(1≤m≤10)个字符连接起来,组成一个新串,放入pt所指字符串中。 例如: 把3个串: “abc”,“CD”,“EF”串连起来,结果是“abcCDEF”。 含有错误的程序如下: #include #include #include intfun(charstr[][],intm,*pt) { intk,q,i; for(k=0;k {q=strlen(str[k]); for(i=0;i pt[i]=str[k,i]; pt+=q; pt[0]=0; } } main() {intm,h; chars[10][10],p[120]; clrscr(); printf("\nPleaseenterm: "); scanf("%d",&m);gets(s); printf("\nPleaseenter%dstring: \n",m); for(h=0;h fun(s,p,m); printf("\nTheresultis: %s\n",p); NONO();/*本函数与考生答题无关,考生不得改动,否则后果自负。 */ } 【要求】 1.将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。 2.改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译处理命令,但不能增加其他语句,也不能删去整条语句。 3.改正后的源程序(文件名myf1.c)必须放在考试软盘的根目录下,供阅卷用,否则不予评分。 二、编程题(22分) 【题目】 1.编写一个函数voidfun(intarray[],intn),将array数组中的前n个整数按从大到小的顺序排序。 2.编写主函数main,从键盘上输入一个正整数,求出该位是几位数,按从左到右的顺序显示各位数字,用这些数字组成一个最小正整数(调用fun函数),将以上三项结果写入到文件myf2.out中。 【要求】 1.源程序文件名必须取为myf2.c,输出结果文件名为myf2.out。 2.数据文件的打开、使用、关闭均用C语言标准库中缓冲文件系统的文件操作函数实现。 3.源程序文件和运行结果文件均需要保存在考试软盘的根目录中供阅卷使用。 4.不要复制扩展名为obj和exe的文件到考试软盘上。 模拟题五 一、改错题(18分) 【题目】输入字符串s1和s2,函数find()判断s1中是否包含字符串s2,若s1包含s2,则输出字符串s2在s1中的开始位置,否则输出”Nosubstring! ”。 含有错误的源程序为: #include #include main() {inti; char*s1[200],*s2[100]; gets(s1);gets(s2); i=find(s1); if(i==-1) Printf(”s1=%ss2=%s\nNosubstring! \n”,s1,s2); Else Printf(”s1=%ss2=%s\nstartingposofsubstringis%d\n”,s1,s2,i);} Find(char*s1) {inti,k=0; while(*s1){ i=0; While(s1[i]==s2[i])i++; if(*s1)return(k); S1++;k++;} Return(-1);} 【要求】 (1)将上述源程序录入文件myf1.c中,然后根据题目要求以及程序中前后语句之间的逻辑关系,改正程序中的错误。 (2)改错时,除可增加说明语句、编译预处理命令或调换语句的顺序外,不允许增加或删除任何语句。 (3)将改正后的程序存入考试盘myf1.c文件中。 二、编程题(22分) 【题目】求能被3整除且其中至少有两位数字为6的四位数,并求出满足的四位数的个数。 如9696、9669均为满足条件的四位数。 【要求】 (1)将源程序存于myf2.c文件中。 (2)将程序运行的结果存于myf2.out文件中。 (3)数据文件的打开、使用和关闭均要使用c语言的文件管理语句来实现。 【注意】本题目完成后,必须将文件myf2.ou2、myf2.c拷贝到考试盘中,供阅卷使用,否则不予评分。 参考答案 模拟题一 一、改错题(18分) 1.intfun(intn,intxx[][])改为intfun(intn,intxx[][M]) 2.inti,j,sum;改为inti,j,sum=0; 3.printf("%f",xx[i][j]);改为printf("%d",xx[i][j]); 4.sum+=xx[i][i]+xx[i][n-i];改为sum+=xx[i][i]+xx[i][n-i-1]; 二、编程题(22分) #include #include #defineN80 voidfun(char*w,intm) { chara[N]; inti,j,n=strlen(w); for(i=0;i for(i=m,j=0;i for(i=0;i } main() { FILE*fp; chara[N]="ABCDEFGHIJK"; intm; fp=fopen("myf2.out","w"); if(fp==NULL){printf("Cannotopenthefile! \n");} fprintf(fp,"Theoriginalstring: "); fprintf(fp,"%s",a); printf("\nEnterm"); scanf("%d",&m); fun(a,m); fprintf(fp,"\nThestringaftermoving: "); fprintf(fp,"%s",a); fclose(fp); } 模拟题二 一、改错题(18分) 1.while(i<3&&*p)改为while(i<=3&&*p) 2.b[k]=p;改为b[k]=*p; 3.b[k++]="";改为b[k++]=''; 4.b[k]=''\0'';改为b[k]='\0' 二、编程题(22分) #include #include #defineN8 structslist {doubles; structslist*next; }; typedefstructslistSTREC; doublefun(STREC*h) { STREC*p; intnum=0; doublesum=0; p=h->next; do {sum+=p->s; p=p->next; num++; } while(p! =0); returnsum/num; } STREC*creat(double*s) {STREC*h,*p,*q;inti=0; h=p=(STREC*)malloc(sizeof(STREC));p->s=0; while(i {q=(STREC*)malloc(sizeof(STREC)); q->s=s[i];i++;p->next=q;p=q; } p->next=0; returnh; } main() {doubles[N]={85,76,69,85,91,72,64,87},ave; STREC*h; FILE*fp; inti=0; h=creat(s); fp=fopen("myf2.out","w"); if(fp==NULL){printf("Cannotopenthefile! \n");} while(s[i]>0) {fprintf(fp,"%6.1f",s[i]);i++;} ave=fun(h); fprintf(fp,"\nave=%6.3f\n",ave); fclose(fp); } 模拟题三 一、改错题(18分) 1.voidfun(inta[],intm)改为voidintfun(inta[],intm)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 江苏省 计算机等级考试 语言 上机 模拟