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

    【计算机类职业资格】C程序基本结构及答案解析.doc

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

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

    【计算机类职业资格】C程序基本结构及答案解析.doc

    1、C 程序基本结构及答案解析(总分:100.00,做题时间:90 分钟)一、程序修改(总题数:3,分数:48.00)1.函数 fun()的功能是:统计 substr 所指子字符串在 str 所指字符串中出现的次数。例如,若字符串为aaas 1kaaas,子字符串为 as,则应输出 2。#includestdio.hint fun(char*str,char*substr)int i,j,k,num=0;/*found*/for(i=0,stri,i+)for(j=i,k=0;substrk=strj;k+,j+)/*found*/If(substrk+1=/0)num+;break;return

    2、 num;main()char str80,substr80;printf(“Input a string:“);gets(str);printf(“Input a substring:“);gets(substr);printf(“%d/n“,fun(str,substr);(分数:16.00)_2.给定程序 MOD11.C 中函数 fun()的功能是:用递归算法计算斐波拉契数列中第 n 项的值。从第 1 项起,斐波拉契数列为 1、1、2、3、5、8、13、21例如,若给 n 输入 7,该项的斐波拉契数值为 13。#includestdio.hlong fun(int g)/*found*/

    3、switch(g);case 0:return 0;/*found*/case 1;case 2;return 1;retum(fun(g-1)+fun(g-2);main()long fib;int n;printf(“Input n:“);scanf(“%d“,printf(“n=%d/n“,n);fib=fun(n);printf(“fib=%dn/n/n,fib);(分数:16.00)_3.fun()的功能是:求出两个非零正整数的最大公约数,并作为函数值返回。例如,若给 hum1 和 num2 分别输入 49 和 21,则输出的最大公约数为 7;若给 num1 和 num2 分别输入

    4、27和 81,则输出的最大公约数为 27。#includestdio.hint fun(int a,int b)int r,t;if(ab)/*found*/t=a;b=a;a=t;r=a%b;while(r!=0)a=b;b=r;r=a%b;/*found*/return(a);main()int num1,num2,a;printf(“Input num1 num2:“);scanf(“%d%d“,printf(“num1=%d num2=%d/n/n“,num1,num2);a=fun(num1,num2);printf(“The maximun common divisor is%d/

    5、n/n“,a);(分数:16.00)_二、程序填空(总题数:2,分数:36.00)4.函数 fun()的功能是:将形参 a 所指数组中的前半部分元素的值和后半部分元素的值对换。形参 n 中存放数组中数据的个数,若 n 为奇数,则中间的元素不动。例如,若 a 所指数组中的数据依次为1、2、3、4、5、6、7、8、9,则调换后为 6、7、8、9、5、1、2、3、4。#includestdio.h#define N 9void fun(int a,int n)int i,t,p;/*found*/p=(n%2=0)?n/2:n/2+ (1) ;for(i=0;in/2;i+)t=ai;/*found

    6、*/ai=ap+ (2) ;/*found*/(3) =t;main()int bN=1,2,3,4,5,6,7,8,9,i;printf(“/nThe original data:/n“);for(i=0;iN;i+)printf(“%4d“,bi);printf(“/n”);fun(b,N);printf(“nThe data after moving:/n“);for(i=0;iN;i+)printf(“%4d“,bi);printf(“/n“);(分数:18.00)填空项 1:_5.给定程序中,函数 fun()的功能是计算下式直到 (分数:18.00)填空项 1:_三、程序设计(总题数

    7、:1,分数:16.00)6.函数 fun()的功能是:将 s 所指字符串中除了下标为奇数,同时 ASCII 值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在 t 所指的数组中。例如,若 s 所指字符串中的内容为“ABCDEFG12345”,其中字符 A 的 ASCII 码值虽为奇数,但所在元素的下标为偶数,因此必须删除;而字符 1 的 ASCII 码值为奇数,所在数组中的下标也为奇数,因此不应当删除;以此类推,最后 t 所指数组中的内容应是“135”。#includestdio.h#includestring.hvoid fun(char*s,char t)main

    8、()char s100,t100;void NONO();printf(“/nPlease enter string S:“);scanf(“%s“,s);fun(s,t);printf(“/nThe result is:%s/n“,t);(分数:16.00)_C 程序基本结构答案解析(总分:100.00,做题时间:90 分钟)一、程序修改(总题数:3,分数:48.00)1.函数 fun()的功能是:统计 substr 所指子字符串在 str 所指字符串中出现的次数。例如,若字符串为aaas 1kaaas,子字符串为 as,则应输出 2。#includestdio.hint fun(char*

    9、str,char*substr)int i,j,k,num=0;/*found*/for(i=0,stri,i+)for(j=i,k=0;substrk=strj;k+,j+)/*found*/If(substrk+1=/0)num+;break;return num;main()char str80,substr80;printf(“Input a string:“);gets(str);printf(“Input a substring:“);gets(substr);printf(“%d/n“,fun(str,substr);(分数:16.00)_正确答案:(1)for(i=0;stri

    10、;i+) (2)if(substrk+1=/0)解析:解析 本题中函数的功能是统计子字符串 substr 在字符串 str 中出现的次数。解题过程是在 str中查找指定的子串,并且统计了串出现的次数。第二个标识下的 for 循环中的循环表达式之间应使用分号来分隔,所以第二个标识下的“for(i=0,stri,i+)”应改为“for(i=0;stri;i+)”。第二个标识下“If(substrk+1=/0)”,其含义是判断 substr 是否到达了尾部。这里应该用 if 来判断,在 C 语言中没有“If”关键字,故第二个标识处应改成“if(substrk+1=/0)”。考点 函数定义,for 循

    11、环语句。2.给定程序 MOD11.C 中函数 fun()的功能是:用递归算法计算斐波拉契数列中第 n 项的值。从第 1 项起,斐波拉契数列为 1、1、2、3、5、8、13、21例如,若给 n 输入 7,该项的斐波拉契数值为 13。#includestdio.hlong fun(int g)/*found*/switch(g);case 0:return 0;/*found*/case 1;case 2;return 1;retum(fun(g-1)+fun(g-2);main()long fib;int n;printf(“Input n:“);scanf(“%d“,printf(“n=%d/

    12、n“,n);fib=fun(n);printf(“fib=%dn/n/n,fib);(分数:16.00)_正确答案:(1)switch(g) (2)case 1:return 1;case 2:return 1;)解析:解析 本题中函数的功能是用递归算法计算斐波拉契级数数列中第 n 项的值。本题主要是对switch.case 语法的考查。第一个标识下的 switch 后用括号括起来的表达式的标准语法后面是没有“;”的,所以“switch(g);”应改为“switch(g)”。第二个标识下的 case 加常量表达式的后面用冒号连接选择语句,所以“case 1;”应改为“case 1:”。“cas

    13、e 1:”和“case 2:”都是返回 1,应该写两个“return 1”。考点 switch 分支语句。3.fun()的功能是:求出两个非零正整数的最大公约数,并作为函数值返回。例如,若给 hum1 和 num2 分别输入 49 和 21,则输出的最大公约数为 7;若给 num1 和 num2 分别输入 27和 81,则输出的最大公约数为 27。#includestdio.hint fun(int a,int b)int r,t;if(ab)/*found*/t=a;b=a;a=t;r=a%b;while(r!=0)a=b;b=r;r=a%b;/*found*/return(a);main(

    14、)int num1,num2,a;printf(“Input num1 num2:“);scanf(“%d%d“,printf(“num1=%d num2=%d/n/n“,num1,num2);a=fun(num1,num2);printf(“The maximun common divisor is%d/n/n“,a);(分数:16.00)_正确答案:(1)t=a;a=b;b=t; (2)return(b);)解析:解析 本题中函数的功能是求出两个非零正整数的最大公约数。其中,最大公约数是指能最大约去给出的几个数字的数字。例如,15 和 30 能最大约去的数字是 15,所以 15 就是它们的

    15、最大公约数。从源程序的 main()主函数开始入手,从键盘输入两个正整数,通过语句“a=fun(num1,num2);”调用fun()函数求得它们的最大公约数。根据算法分析,首先要确保 a、b 两个数中 a 是较大数,b 是较小数,如果不是,则交换 a 和 b。但是第一个标识下,交换 a 和 b 两个数的算法有误,所以应将“t=a;b=a;a=t;”改为“t=a;a=b;b=t;”。算法到循环结束,最后余数为 0 时,b 中所存的数即为最大公约数,也就是函数要返回的值。因此,第二个标识下面的“return(a);”改为“return(b)”。考点 函数实现的逻辑关系。二、程序填空(总题数:2,

    16、分数:36.00)4.函数 fun()的功能是:将形参 a 所指数组中的前半部分元素的值和后半部分元素的值对换。形参 n 中存放数组中数据的个数,若 n 为奇数,则中间的元素不动。例如,若 a 所指数组中的数据依次为1、2、3、4、5、6、7、8、9,则调换后为 6、7、8、9、5、1、2、3、4。#includestdio.h#define N 9void fun(int a,int n)int i,t,p;/*found*/p=(n%2=0)?n/2:n/2+ (1) ;for(i=0;in/2;i+)t=ai;/*found*/ai=ap+ (2) ;/*found*/(3) =t;ma

    17、in()int bN=1,2,3,4,5,6,7,8,9,i;printf(“/nThe original data:/n“);for(i=0;iN;i+)printf(“%4d“,bi);printf(“/n”);fun(b,N);printf(“nThe data after moving:/n“);for(i=0;iN;i+)printf(“%4d“,bi);printf(“/n“);(分数:18.00)填空项 1:_ (正确答案:(1)1 (2)I (3)ap+i)解析:解析 解析 本题中函数 fun()的功能是将形参 a 所指数组中的前半部分元素的值和后半部分元素的值对换。具体分为两

    18、种情况:a 的长度是奇数和偶数。a 的长度是奇数时,最中间的元素不移动,将前半部分和后半部分对换;a 的长度为偶数时,直接将前半部分和后半部分对换。第一空:在“p=(n%2=0)?n/2:n/2+ (1) ;”和“ai=ap+ (2) ;”中,由“n%2=0”判断是否是偶数,ai和 ap+ (2) 交换。如果 n 是偶数,a0和 an/2交换;如果 n 是奇数,那么 a0和 an/2+1交换,依此类推,故 n 为偶数时 ai和 ai+n/2交换,n 为奇数时 ai和 ai+n/2+1交换。因此,如果 n 是奇数的话,p 应该等于 n/2+1,故第一空处应为“1”。第二空:由上分析可知,ai和

    19、ai+p交换,故第二空处应为“i”。第三空:“t=ai;ai=ap+i;”,故第三处应该是把 ai赋值给 ap+i,ai保存在 t 中,故第三空处应为“ap+i”。考点 参数调用,形参、实参的应用。5.给定程序中,函数 fun()的功能是计算下式直到 (分数:18.00)填空项 1:_ (正确答案:(1)0 (2)i+ (3)2.0*i)解析:解析 解析 函数 fun()的功能是求级数和。由观察可知,级数项有规律变化,可以用循环来累加求和。第一空:由“return s;”可知 s 是返回值,s 的初始化值为 0,故循环累加是从第一项开始累加的。在循环体“ (2) ;x=(2.0*i-1)/(

    20、(3) *(2.0*i);s=s+x;”中,变量 i 没有递增,故第二空处应为“i+”。当 X 是级数的第一项时,i=1(i+之后变成 1),故 i 的初始化值为 0,因此第一空处应为“0”。第二空:由上面的分析可知,第二空处应为“i+”。第三空:“x=(2.0*i-1)/( (3) )*(2.0*i);”是求级数项的值,根据题干给出的级数项特征可知,级数项的分母是(2.0*i)的平方,故第三空处应为“2.0*i”。考点 函数功能。三、程序设计(总题数:1,分数:16.00)6.函数 fun()的功能是:将 s 所指字符串中除了下标为奇数,同时 ASCII 值也为奇数的字符之外,其余的所有字符

    21、都删除,串中剩余字符所形成的一个新串放在 t 所指的数组中。例如,若 s 所指字符串中的内容为“ABCDEFG12345”,其中字符 A 的 ASCII 码值虽为奇数,但所在元素的下标为偶数,因此必须删除;而字符 1 的 ASCII 码值为奇数,所在数组中的下标也为奇数,因此不应当删除;以此类推,最后 t 所指数组中的内容应是“135”。#includestdio.h#includestring.hvoid fun(char*s,char t)main()char s100,t100;void NONO();printf(“/nPlease enter string S:“);scanf(“%

    22、s“,s);fun(s,t);printf(“/nThe result is:%s/n“,t);(分数:16.00)_正确答案:(int i,j=0;for(i=1;istrlen(s);i+=2)If(i%2=0tj=/0;)解析:解析 解析 该程序的功能是将字符串中除了下标为奇数、ASCII 值也为奇数的字符外,其余的全都删除。在解题过程中,利用 if 判断表达式选择符合条件的字符,然后将符合条件的字符放入指定的字符串。判断一个字符串中的某一字符下标 i 是否为奇数,可用“i%2!=0”来实现,也可以从下标 1 开始,每次移动 2 个位置;而判断字符的 ASCII 码值是否为奇数,则可用“sj%2!=0”来实现。对串 s 中各个字符串逐个进行判定,满足条件的字符就顺序放在新串 t 中,否则就不存放。所有字符处理完后,记得在新串 t 的末尾加上结束符“/0”。考点 数组操作,函数传值,if 条件语句,for 循环语句。


    注意事项

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




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

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

    收起
    展开