欢迎来到麦多课文档分享! | 帮助中心 海量文档,免费浏览,给你所需,享你所想!
麦多课文档分享
全部分类
  • 标准规范>
  • 教学课件>
  • 考试资料>
  • 办公文档>
  • 学术论文>
  • 行业资料>
  • 易语言源码>
  • ImageVerifierCode 换一换
    首页 麦多课文档分享 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    【计算机类职业资格】二级C语言-600及答案解析.doc

    • 资源ID:1325413       资源大小:50KB        全文页数:7页
    • 资源格式: DOC        下载积分:5000积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    二维码
    微信扫一扫登录
    下载资源需要5000积分(如需开发票,请勿充值!)
    邮箱/手机:
    温馨提示:
    如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如需开发票,请勿充值!如填写123,账号就是123,密码也是123。
    支付方式: 支付宝扫码支付    微信扫码支付   
    验证码:   换一换

    加入VIP,交流精品资源
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    【计算机类职业资格】二级C语言-600及答案解析.doc

    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

    11、=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,“ddddd“, “444444“,1,“eeeee“,“555555“); int k; k=fun(s); if(k=1) printf(“Succeed!“);che

    12、ck(); 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=0;iN;i+) fread( printf(“%6d %s %s/n“,si.num,si.name, si.tel); fclose(fp); (分数:20.00)解析

    13、:STYPE FILE fp 解析 本题要求调用 fun 函数建立班级通讯录,将结构体数组 s 的内容存储到文件 myfile5.dat 中。文件操作首先是打开文件,然后向文件中写入内容。 第一空:在 main 函数中,观察 fun 函数调用 k=fun(s),由 s 的定义可知 s 是 STYPE 结构体数组,即传入fun 函数的参数是 STYPE 结构体数组的首地址,因此 fun()函数的参数是 STYPE 结构体指针。故(1)处应该为 int fun(STYPE*std)。 第二空:在 C 语言中,fopen 函数的调用形式是:FILE fp=fopen(文件名,文件使用方式),在 fu

    14、n()函数体内部,由 if(fp=fopen(“myfile5.dat“,“wb“)=NULL)可知,fp 是一个指向 FILE 类型的指针变量。因此(2)处是指针变量 fp 的定义,即 FILE*fp。 第三空:fwrite 函数的调用形式是:fwrite(buffer,size,count,fp),buffer 是一个指针,指向输入数据存放在内存区的起始地址,size 是要输入的字节数,count 是要输入大小为 size 个字节的数据块的个数,fp 是文件指针。因此(3)处应该添加文件指针。由前面的定义可知,fun 函数内的文件指针是 fp,即(3)处是。fwrite( s1=strle

    15、n(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+)(2)ts1=“/0“应改为 t2*s1=“/0“或 ts1+s1=“/0“解析 本题中函数的功能是先将字符串 s 中的字符按正序存放到 t

    16、 串中,然后把 s 中的字符按逆序连接到 t 串的后面。首先由字符串的第一个标识正序取 s 中的字符串存放到 t 串中,然后由 s 串尾开始,逆序取字符并存放到 t 串中。(1)编译程序后可知,for(i=0;i=s1;i+)这一行有错误,原因是 s1 变量没有定义,显然这个循环的目的是将 s 字符串的内容复制至 t 字符串。这里的循环变量 i 的最大值是 s 字符串的长度 s1,因此第一个标识下是将 s1 改为 s1。(2)题目要求将 s 中的字符复制至 t 字符串之后,还需将 s 按逆序连接到 t 串的后面,第二个循环已经完成了逆序接到 t 字符串的工作,最后是确定字符串的结尾,即字符串应

    17、该以“/0”结束。此时,字符串 t的长度是 2*s1。显然 ts1=“/0“的话字符串长度仍然是 s1,故第二个标识下是将 ts1=“/0“改成t2*s1=“/0“或者 ts1+s1=“/0“。考点 函数功能;逻辑关系。(分数:20.00)_正确答案:()解析:(1)for(i=0;i=s1;i+)应改为 for(i=0;i=s1;i+) (2)ts1=“/0“应改为 t2*s1=“/0“或 ts1+s1=“/0“ 解析 本题中函数的功能是先将字符串 s 中的字符按正序存放到 t 串中,然后把 s 中的字符按逆序连接到 t 串的后面。首先由字符串的第一个标识正序取s 中的字符串存放到 t 串中

    18、,然后由 s 串尾开始,逆序取字符并存放到 t 串中。 (1)编译程序后可知,for(i=0;i=s1;i+)这一行有错误,原因是 s1 变量没有定义,显然这个循环的目的是将 s 字符串的内容复制至 t 字符串。这里的循环变量 i 的最大值是 s 字符串的长度 s1,因此第一个标识下是将 s1 改为 s1。 (2)题目要求将 s 中的字符复制至 t 字符串之后,还需将 s 按逆序连接到 t 串的后面,第二个循环已经完成了逆序接到 t 字符串的工作,最后是确定字符串的结尾,即字符串应该以“/0”结束。此时,字符串 t的长度是 2*s1。显然 ts1=“/0“的话字符串长度仍然是 s1,故第二个标

    19、识下是将 ts1=“/0“改成t2*s1=“/0“或者 ts1+s1=“/0“。 考点 函数功能;逻辑关系。三、程序设计题(总题数:1,分数:20.00)3.函数 fun 的功能是:将两个两位数的正整数 a、b 合并形成一个整数放在 c 中。合并的方式是:将 a 数的十位和个位数依次放在 c 数的千位和十位上,b 数的十位和个位数依次放在 c 数的百位和个位上。 例如,当 a=45,b=12 时,调用该函数后,c=4152。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入要编写的若干语句。 #includestdio.h void fun(int a,int

    20、 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() /*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/ 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

    21、,b, fprinff(wf,“a=%d,b=%d,c=%ld/n“,a,b,c); fclose(rf); fclose(wf); (分数:20.00)_正确答案:()解析:*c=(a/10)*1000+(b/10)*100+(a%10)*10+(b%10); 解析 该程序功能是将正整数 a、b 合并形成一个新整数。本类型题首先要考虑整数的数位分离,然后要进行数位合成。也就是先将数字的各数位拆开,改变排列顺序后,再组合成新的数字。 (1)分解两位数的正整数 n 的个位和十位数,可分别用 n%10 和 n/10 实现。 (2)设 x0、x1、x2、x3 为一位数,则 x0、x110、x2100、x31000,可以分别使 x0、x1、x2、x3 构成个、十、百、千带权数,而 x0+x110 十 x2100+x31000 构成四位数。本题最多只考虑四位数。 考点 逻辑关系:运算符。


    注意事项

    本文(【计算机类职业资格】二级C语言-600及答案解析.doc)为本站会员(amazingpat195)主动上传,麦多课文档分享仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文档分享(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
    备案/许可证编号:苏ICP备17064731号-1 

    收起
    展开