四川省计算机等级考试二级C语言机试题23.doc
《四川省计算机等级考试二级C语言机试题23.doc》由会员分享,可在线阅读,更多相关《四川省计算机等级考试二级C语言机试题23.doc(19页珍藏版)》请在咨信网上搜索。
四川省计算机等级考试二级C语言机试题(第二十三次) 2009-03-29 16:39:03 (第一套) (60分钟) 一、程序调试题( 文件名 test1-1.c )(40分) 磁盘上有一个名为test1-1.c的C程序文件,其功能是:输入一个字符串,将其中的每一个连续的数字序列看作一个整数,将这些整数检索出来后依次放入一个long int型数组中。请改正程序中的错误,使程序能得出正确的结果。 注意:不要增加或删除行,不要修改程序结构。 源程序如下: #include <stdio.h> #include <string.h> main() { char str[100], *p=str, help[15]; static long int num[50]; int i=0, k=0, m, sign=0; printf("\ninput the string:"); scanf("%s", p); do { if(*p>=0 && *p<=9) { sign=1; help[k++]=*p; } else if(sign=1) { int n=0; while(--k>=0) num[i]+=(help[k]-48)*((long int)pow(n++,10)); i++; k=0; sign=0; } else p++; }while(*(p-1)!='\0'); for(m=0; m<i; m++) printf("%d,", num[m]); } 二、编写程序( 程序文件名取为 test1-2.c )(60分) 请用函数调用方式编写程序,要求能实现: (1)在被调函数中求出1到1000之内能被7或11整除、但不能被7或11同时整除的所有整数,并把它们放到数组a中。 (2)在主函数中将符合上述条件的整数个数和所有整数输出到屏幕以及文件test1-2.dat中。(要求每行输出10个数) (第二套) (60分钟) 一、程序调试题( 文件名 test2-1.c )(40分) 磁盘上有一个名为test2-1.c的C程序文件,其功能是:求出数组中值最大的元素在数组中的下标,并将最大值增添在数组的最后。如: 876 675 896 101 301 401 980 431 451 777 (原数组) 876 675 896 101 301 401 980 431 451 777 980 (增添后的数组) 请改正程序中的错误,使程序能得出正确的结果。 注意:不要增加或删除行,不要修改程序结构。 源程序如下: #include <stdio.h> #define N 80 void fun(int *s, int *t, int k) { int i,m; *k=0; m=*s; for(i=1;i<(*t-1);i++) if(m<s+i) { m=*(s+i); k=i; } s[i+1]=m; *t++; } main() { int a[N]={876,675,896,101,301,401,980,431,451,777}; int i, n=10, mi; fun(a[N], &n, &mi); printf("\nThe index of max is:%d\n",mi); printf("The result:\n"); for(i=0;i<n;i++) printf("%4d", &a[i]); } 二、编写程序( 程序文件名取为 test2-2.c )(60分) 在三位整数(100至999)中寻找其中有两位数字相同的完全平方数,例如,144、676等,它们既是完全平方数,又有两位数字相同,将符合条件的整数依次从小到大存入数组aa中。要求: (1)编制函数fine()实现寻找满足条件的完全平方数,并将满足条件的完全平方数的个数通过函数fine()返回。 (2)在main()函数中把符合要求的完全平方数及个数输出到屏幕上和文件test2-2.dat中。 (第三套) (60分钟) 一、程序调试题( 文件名 test3-1.c )(40分) 磁盘上有一个名为test3-1.c的C程序文件,其功能是:实现将字符串中字母以外的其他字符去掉组成新的字符串输出。运行结果为:abcdEEEa 请改正程序中的错误,使程序能得出正确的结果。 注意:不要增加或删除行,不要修改程序结构。 源程序如下: #include <stdio.h> #include <string.h> void fun(char s) { int i,j; for(i=j=0;s[i];i++); if(isalpha(s[i])) s[j]=s[i]; s[i]='\0'; } void main() { char str[80]="a*b$c(d!EEE !!a."; fun(str[80]); printf("\n"); puts(str); } 二、编写程序( 程序文件名取为 test3-2.c )(60分) 编写main函数,从键盘输入任意5个4位正整数存入数组aa中,调用函数sort(),函数sort()的功能是: 按每个数后三位的大小进行升序排列,并将结果依次存入数组bb中,如果后三位的数组相等,则按4位正整数的大小进行降序排列。 例如:输入:6012,5099,9012,7025,8088,则输出结果为:9012,6012,7025,8088,5099。 最后,在main()函数中把排序后的结果输出到文件test3-2.dat中。 注意:程序中不得使用全局变量。 (第四套) (60分钟) 一、程序调试题( 文件名 test4-1.c )(40分) 磁盘上有一个名为test4-1.c的C程序文件,其功能是:从s所指向的串中,找出包含有t所指字符串的个数。例如:s所指向的串为abcdabfab,t所指字符串为ab,则所求个数为3。请改正程序中的错误,使程序能输出正确的结果。 注意:不得增行或删行,也不得更改程序的结构。 源程序如下: #include <stdio.h> #include <string.h> int fun(char s, char t) { int n=0 ; char *p , *r ; while(*s) { p=s; r=t ; while(*r) if(*r=*p) { r++; p++; } else continue; if(r=='\0') n++; r++; } return *s; } main() { int m ; char s[100], t[100]; printf("\nPlease enter string s:"); gets(s); printf("\nPlease enter string t:" ); gets(t); m=fun(s,t); printf("\nThe result is: m= %d\n",m); } 二、编写程序( 程序文件名取为 test4-2.c )(60分) 在main函数中定义一个二维数组a,从已给文件test4-2.in中读入n×n个整数到二维数组a中,其中n的大小由用户在运行程序过程中从键盘上输入(要求n<=5),调用fun函数,fun函数实现: (1)数组主对角线上各元素的值加1。 (2)其余元素以主对角线划分,右上角各元素的值乘以3,左下角各元素的值乘以2。 最后,在主函数中将修改后的数组按n行n列的格式输出到屏幕和磁盘文件test4-2.out中。 四川省计算机等级考试二级C语言机试题(第二十三次)答案 2009-03-29 16:39:32 23-1套 参考答案: 一、程序调试题(文件名为test1-1.c)(40分) #include <stdio.h> #include <string.h> /* 改为: math.h */ main() { char str[100], *p=str, help[15]; static long int num[50]; int i=0, k=0, m, sign=0; printf("\ninput the string:"); scanf("%s", p); do { if(*p>=0 && *p<=9) /* 改为:*p>=’0’ && *p<=’9’ 或 *p>=48 && *p<=57 */ { sign=1; help[k++]=*p; } else if(sign=1) /* 改为:==*/ { int n=0; while(--k>=0) num[i]+=(help[k]-48)*((long int)pow(n++,10)); /* 改为:pow(10,n++) */ i++; k=0; sign=0; } else /* 改为:else; */ p++; }while(*(p-1)!='\0'); for(m=0; m<i; m++) printf("%d,", num[m]); /* 改为:%ld (即长整型格式输出)*/ } 评分标准:每改对一处得6分,结果正确得4分 二、编程题(程序文件取名为 test1-2.c)(60分) 评分标准: 1.被调函数fun编写正确 20分 2.文件打开和关闭正确 10分 3.函数调用正确 5分 4.屏幕输出和文件输出正确 15分 5.输出格式正确 5分 6.程序结构合理 5分 参考程序: # include <stdio.h> # define M 1000 int fun(int *a) { int m,k=0; for(m=1;m<=M;m++) if( (m%7==0 && m%11!=0) || (m%7!=0 && m%11==0) ) a[k++]=m; return k; } main() { int a[M],n,k; FILE *fp; clrscr(); /*清屏函数*/ fp=fopen("test1-2.dat","w"); n=fun(a); printf("%d\n",n); fprintf(fp,"%d\n",n); for(k=0;k<n;k++) { printf("%5d",a[k]); fprintf(fp,"%5d",a[k]); if( (k+1)%10 == 0 ) { printf("\n"); fprintf(fp,"\n"); } } fclose(fp); } 23-2套 参考答案: 一、程序调试题(文件名 test2-1.c)( 40 分 ) #include <stdio.h> #define N 80 void fun(int *s, int *t, int k) /* 改为 *k */ { int i,m; *k=0; m=*s; for(i=1;i<(*t-1);i++) if(m<s+i) /* 改为 *(s+i) */ { m=*(s+i); k=i; /* 改为 *k */ } s[i+1]=m; *t++ ; /* 改为 (*t)++ */ } main() { int a[N]={876,675,896,101,301,401,980,431,451,777}; int i, n=10, mi; fun(a[N], &n, &mi); /* 改为 a */ printf("\nThe index of max is:%d\n",mi); printf("The result:\n"); for(i=0;i<n;i++) printf("%4d", &a[i] ); /* 改为 a[i] */ } 评分标准:每改对一处得6分,结果正确得4分 二、编程题(程序文件取名为 test2-2.c)(60分) 评分标准: 1.被调函数fun编写正确 20分 2.文件打开和关闭正确 10分 3.函数调用正确 5分 4.屏幕输出和文件输出正确 15分 5.输出格式正确 5分 6.程序结构合理 5分 参考程序: # include <stdio.h> # define M 1000 int fun(int *a) { int m,k=0; for(m=1;m<=M;m++) if( (m%7==0 && m%11!=0) || (m%7!=0 && m%11==0) ) a[k++]=m; return k; } main() { int a[M],n,k; FILE *fp; clrscr(); /*清屏函数*/ fp=fopen("test1-2.dat","w"); n=fun(a); printf("%d\n",n); fprintf(fp,"%d\n",n); for(k=0;k<n;k++) { printf("%5d",a[k]); fprintf(fp,"%5d",a[k]); if( (k+1)%10 == 0 ) { printf("\n"); fprintf(fp,"\n"); } } fclose(fp); } 23-3套 参考答案: 一、程序调试题(文件名 test3-1.c)( 40 分 ) #include <stdio.h> #include <string.h> /* 改为 ctype.h */ void fun(char s) /* 改为 *s */ { int i,j; for(i=j=0;s[i];i++); /* 改为 去掉分号 ;*/ if(isalpha(s[i])) s[j] =s[i]; /* 改为 s[j++] */ s[i] ='\0'; /* 改为 s[j] */ } void main() { char str[80]="a*b$c(d!EEE !!a."; fun(str[80]); /* 改为 str */ printf("\n"); puts(str); } 评分标准:每改对一处得6分,结果正确得4分 二、编程题(程序文件取名为 test3-2.c)(60分) 评分标准: 1.文件定义、打开、关闭正确 10分 2.数据讲稿和文件写入正确 10分 3.函数调用正确 5分 4.函数定义和参数使用正确 20分 5.结果正确 10分 6.程序结构合理 5分 参考程序: #include <stdio.h> void sort(int aa[],int bb[]) { int i,j,data; for(i=0;i<5;i++) for(j=i+1;j<5;j++) { if(aa[i]%1000>aa[j]%1000) { data=aa[i]; aa[i]=aa[j]; aa[j]=data; } else if(aa[i]%1000==aa[j]%1000) if(aa[i]<aa[j]) { data=aa[i]; aa[i]=aa[j]; aa[j]=data; } } for(i=0;i<5;i++) bb[i]=aa[i]; } void main() { int aa[5],bb[5]; FILE *out; int i; printf("\nplease input 5 numbers:"); for(i=0;i<5;i++) scanf("%d",&aa[i]); sort(aa,bb); out=fopen("test3-2.dat","w"); printf("\n"); for(i=0;i<5;i++) { printf("%5d",bb[i]); fprintf(out,"%5d",bb[i]); } fclose(out); } 23-4套 参考答案: 一、程序调试题(文件名 test4-1.c)( 40 分 ) #include <stdio.h> #include <string.h> int fun(char s, char t) /* 改为 char *s, char *t */ { int n=0 ; char *p , *r ; while(*s) { p=s; r=t ; while(*r) if(*r=*p) /* 改为 == */ { r++; p++; } else continue; /* 改为 break */ if(r=='\0') /* 改为 *r */ n++; r++; /* 改为 s++ */ } return *s; /* 改为 n */ } main() { int m ; char s[100], t[100]; printf("\nPlease enter string s:"); gets(s); printf("\nPlease enter string t:" ); gets(t); m=fun(s,t); printf("\nThe result is: m= %d\n",m); } 评分标准:每改对一处得6分,结果正确得4分 二、编程题(程序文件取名为 test4-2.c)(60分) 评分标准: 1.被调函数编写正确 20分 2.函数调用正确 5分 3.文件打开和关闭正确 5分 4.文件读、写正确 15分 5.N输入和屏幕输出正确 10分 6.程序结构合理 5分 参考程序: #include<stdio.h> #define N 5 void fun(int a[N][N],int n) { int i,j; for(i=j=0;i<n;i++,j++) a[i][j]=a[i][j]+1; for(i=1;i<n;i++) for(j=0;j<i;j++) a[i][j]=a[i][j]*2; for(i=0;i<n;i++) for(j=i+1;j<n;j++) a[i][j]=a[i][j]*3; } main() { int a[N][N],i,j,n; FILE *fp; clrscr(); printf(“*****input n *****\n”); scanf(“%d”,&n); fp=fopen("test4-2.in","r"); if(fp==NULL) { printf("file test4-2.in not open"); exit(0); } for(i=0;i<n;i++) for(j=0;j<n;j++) fscanf(fp,"%d",&a[i][j]); fclose(fp); fun(a,n); fp=fopen("test4-2.out","w"); if(fp==NULL) { printf("file test4-2.in not open"); exit(0); } for(i=0;i<n;i++) { for(j=0;j<n;j++) { printf("%5d",a[i][j]); fprintf(fp,"%d",a[i][j]); } printf("\n"); fprintf(fp,"\n"); }- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 四川省 计算机等级考试 二级 语言 试题 23
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文