【计算机类职业资格】二级C语言-600及答案解析.doc
《【计算机类职业资格】二级C语言-600及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】二级C语言-600及答案解析.doc(7页珍藏版)》请在麦多课文档分享上搜索。
1、二级 C 语言-600 及答案解析(总分:60.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:20.00)1.给定程序的功能是调用 fun 函数建立班级通讯录。通讯录中记录每位学生的编号、姓名和电话号码。班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为 myfile5.dat 的二进制文件中。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 不得增行或删行,也不得更改程序的结构。 #includestdio.h #includestdlib.h #defineN 5 typedef struct int num; char name10
2、; char tel10; STYPE; void check(); /*foun*/ int fun( 1*std) /*found*/ 2*fp;int i; if(fp=fopen(“myfile5.dat“,“wb“)=NULL) return(0); printf(“/nOutput data to file!/n“); for(i=0;iN;i+) /*foun*/ fwrite( fclose(fp); return(1); main() STYPE s10=1,“aaaaa“,“111111“),1,“bbbbb“, “222222“,1,“ccccc“,“333333“),1
3、,“ddddd“, “444444“,1,“eeeee“,“555555“); int k; k=fun(s); if(k=1) printf(“Succeed!“);check(); else printf(“Fail!“); void check() FILE*fp;int i; STYPE s10; if(fp=fopen(“myfile5.dat“,“rb“)=NULL) printf(“Fail!/n“);exit(0); printf(“/nRead file and output to screen:/n“); printf(“/n num name tel/n“); for(i
4、=0;iN;i+) fread( printf(“%6d %s %s/n“,si.num,si.name, si.tel); fclose(fp); (分数:20.00)二、程序修改题(总题数:1,分数:20.00)2.给定程序 MODI1.C 中函数 fun 的功能是:先将在字符串 s 中的字符按正序存放到 t 串中,然后把 s 中的字符按逆序连接到 t 串的后面。 例如,当 s 中的字符串为:“ABCDE“时,则 t 中的字符串应为:“ABCDEEDCBA“。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。 #includ
5、estdio.h #includestring.h void fun(char*s,char *t) int i,s1; s1=strlen(s); /*found*/ for(i=0;i=s1;i+) ti=si; for(i=0;i ts1+i=ss1-i-1;/*found*/ts1=“/0“;main()char s100,t100;printf(“/nPlease enter string s:“);scanf(“%s“,);fun(s,t);printf(“The result is:%s/n“,t);(1)for(i=0;i=s1;i+)应改为 for(i=0;i=s1;i+)(
6、2)ts1=“/0“应改为 t2*s1=“/0“或 ts1+s1=“/0“解析 本题中函数的功能是先将字符串 s 中的字符按正序存放到 t 串中,然后把 s 中的字符按逆序连接到 t 串的后面。首先由字符串的第一个标识正序取 s 中的字符串存放到 t 串中,然后由 s 串尾开始,逆序取字符并存放到 t 串中。(1)编译程序后可知,for(i=0;i=s1;i+)这一行有错误,原因是 s1 变量没有定义,显然这个循环的目的是将 s 字符串的内容复制至 t 字符串。这里的循环变量 i 的最大值是 s 字符串的长度 s1,因此第一个标识下是将 s1 改为 s1。(2)题目要求将 s 中的字符复制至
7、t 字符串之后,还需将 s 按逆序连接到 t 串的后面,第二个循环已经完成了逆序接到 t 字符串的工作,最后是确定字符串的结尾,即字符串应该以“/0”结束。此时,字符串 t的长度是 2*s1。显然 ts1=“/0“的话字符串长度仍然是 s1,故第二个标识下是将 ts1=“/0“改成t2*s1=“/0“或者 ts1+s1=“/0“。考点 函数功能;逻辑关系。(分数:20.00)_三、程序设计题(总题数:1,分数:20.00)3.函数 fun 的功能是:将两个两位数的正整数 a、b 合并形成一个整数放在 c 中。合并的方式是:将 a 数的十位和个位数依次放在 c 数的千位和十位上,b 数的十位和个
8、位数依次放在 c 数的百位和个位上。 例如,当 a=45,b=12 时,调用该函数后,c=4152。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入要编写的若干语句。 #includestdio.h void fun(int a,int b,long*c) main() int a,b;long c; void NONO(); prinff(“Input a,b:“);scanf(“%d,%df“, fun(a,b, printf(“The result is:%d/n“,c); NONO(); void NONO() /*本函数用于打开文件,输入数据,调用
9、函数,输出数据,关闭文件。*/ FILE *rf,*wf; inti,a,b;long c; rf=fopen(“in.dat“,“r“); wf=fopen(“out.dat“,“w“); for(i=0;i10;i+) fscanf(rf,“%d,%d“, fun(a,b, fprinff(wf,“a=%d,b=%d,c=%ld/n“,a,b,c); fclose(rf); fclose(wf); (分数:20.00)_二级 C 语言-600 答案解析(总分:60.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:20.00)1.给定程序的功能是调用 fun 函数建立班级通讯录
10、。通讯录中记录每位学生的编号、姓名和电话号码。班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为 myfile5.dat 的二进制文件中。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 不得增行或删行,也不得更改程序的结构。 #includestdio.h #includestdlib.h #defineN 5 typedef struct int num; char name10; char tel10; STYPE; void check(); /*foun*/ int fun( 1*std) /*found*/ 2*fp;int i; if(fp
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 二级 语言 600 答案 解析 DOC
