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

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

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

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

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

    1、二级 C语言笔试 23及答案解析(总分:86.00,做题时间:90 分钟)一、B选择题/B(总题数:50,分数:50.00)1.若变量已正确定义并赋值,下面符合 C语言语法的表达式是(分数:1.00)A.m:=5B.c=b=a=lC.float 8%5D.x+5=y+22.数据处理的最小单位是(分数:1.00)A.数据B.数据元素C.数据项D.数据结构3.下列程序是用来判断数组中特定元素的位置所在。如果输入如下整数: 876 675 896 101 301 401 980 431 451 777 #includeconio.h #includestdio.h int fun(int *s,in

    2、t t,int *k) int i; *k=0; for(i=0;it;i+) if(s*ksi)*k=i; return s*k; main() int a10=876,675,896,101,301,401,980,431,45l,777,k; clrscr(); fun(a,10,i+) p=strcat(p,ai); i=strlen(p); printf(“%d/n“,i); 则程序段的输出结果是(分数:1.00)A.18B.19C.20D.216.假定 int类型变量占用两个字节,有定义:int x10=0,2,4;,则数组 x在内存中占字节数是(分数:1.00)A.3B.6C.1

    3、0D.207.下列关于复合语句和空语句的说法错误的是(分数:1.00)A.复合语句是由“”开头,由“”结尾的B.复合语句在语法上视为一条语句C.复合语句内,可以有执行语句,不可以有定义语句部分D.C程序中的所有语句都必须由一个分号作为结束8.以下程序有语法错误,有关错误原因的正确说法是 main() int G=5,k; void prt_char(); k=prt_char(G); (分数:1.00)A.语句 void prt_char();有错,它是函数调用语句,不能用 void说明B.变量名不能使用大写字母C.函数说明和函数调用语句之间有矛盾D.函数名不能使用下划线9.有如下定义 str

    4、uct person char name9;int age;struct person class10=“John“,17,“paul“,19,“Mary“,18,“Adam“,16,;根据上述定义,能输出字母 M的语句是(分数:1.00)A.printf(“%c/n“,class3.nam;B.printf(“%c/n“,class3.name1);C.printf(“%c/n“,class2.name1);D.printf(“%c/n“,class2.name0);10.若程序执行时的输入数据是“2473“,则下述程序的输出结果是 #includestdio.h void main() i

    5、nt cs; while(cs=getchar()!=;/n) switch(cs-2) case 0 case 1:putchar(cs+4); case 2:putchar(cs+4); break; case 3:putchar(cs+3);default:putchar(cs+2);(分数:1.00)A.668977B.668966C.6677877D.668876611.一些重要的程序语言(如 C语言和 Pascal语言)允许过程的递归调用。而实现递归调用中的存储分配通常用(分数:1.00)A.栈B.堆C.数组D.链表12.已知如下定义,则 sizeof(a)的值是 struct i

    6、nt i; char c; double a;a;(分数:1.00)A.8B.9C.10D.1113.若有定义:char*st=“how are you“;下列程序段中正确的是(分数:1.00)A.char a11,*p;strcpy(p=a+1,b=p5;则 b的值是(分数:1.00)A.5B.6C.9D.815.下面能正确进行字符串赋值操作的是(分数:1.00)A.char s5=“ABCDE“;B.char s5=A,B,C,D,E;C.char*s;s=“ABCDE“;D.char*s;char a;scanf(“%s“,i+) switch(i) case 0: case 3:a+=

    7、2; case 1: case 2:a+=3; default:a+=5; printf(“%d/n“,a);(分数:1.00)A.31B.13C.10D.2025.数据库系统的核心是(分数:1.00)A.数据库B.数据库管理系统C.模拟模型D.软件工程26.现有如下程序段 #include“stdio.h“ main() int k30=12,324,45,6,768,98,21,34,453,456; int count=0,i=0; while(ki) if(ki%2=0|ki%5=0)count+; i+; printf(“%d,%d/n“,count,i); 则程序段的输出结果为(分

    8、数:1.00)A.7,8B.8,8C.7,10D.8,1027.以下变量 x,y,z 均为 double类型且已正确赋值,不能正确表示数学式子 xyz的 C语言表达式是(分数:1.00)A.x/y*zB.x*(1/(y*)C.x/y*1/zD.x/y/z28.以下程序的运行结果为 #include“stdio.h“ main() int m,n; for(m=0,n=10;mn;m+=3,n-);printf(“%d,%d/n“,m,n);(分数:1.00)A.6,7B.7,6C.9,7D.7,929.当 k的值不为 0时,在下列选项中能够将 k的值赋给变量 m,n 的是(分数:1.00)A.

    9、m=k=nB.(m= int *p=a; for(i=0;i4;i+)ai=*p; printf(“%d/n“,a2); 上面程序输出结果是(分数:1.00)A.6B.8C.4D.238.以下对结构体类型变量的定义中,不正确的是(分数:1.00)A.typedef struct aa int n; float m; AA; AA tdl;B.#define AA struct aa AA int n; float m; tdl;C.struct int n; float m; aa; struct aa tdl;D.struct int n; float m; tdl;39.以下程序的输出结果

    10、是 int f() static int i=0; int s=1; s+=i;i+; return s; main() int i,a=0; for(i=0;i5;i+)a+=f(); printf(“%d/n“,a);(分数:1.00)A.20B.24C.25D.1540.若 w=l,x=2,y=3,z=4,则条件表达式 wx?w:yz? y:z 的值是(分数:1.00)A.4B.3C.2D.141.C语言中,能识别处理的文件为(分数:1.00)A.文本文件和数据块文件B.文本文件和二进制文件C.流文件和文本文件D.数据文件和二进制文件42.下列程序的输出结果是 #include“stdi

    11、o.h“ #define M(x,y) x%y main() int a,m=12,n=100; a=M(n,m); printf(“%d/n“,a-);(分数:1.00)A.2B.3C.4D.543.下列程序的运行结果是 #include“stdio.h“ main() int x=-9,y=5,z=8; if(xy) if(y0)z=0; else z+=1; printf(“%d/n“,z);(分数:1.00)A.6B.7C.8D.944.软件工程的理论和技术性研究的内容主要包括软件开发技术和(分数:1.00)A.消除软件危机B.软件工程管理C.程序设计自动化D.实现软件可重用45.下述

    12、关于数据库系统的叙述中正确的是(分数:1.00)A.数据库系统减少了数据冗余B.数据库系统避免了一切冗余C.数据库系统中数据的一致性是指数据类型一致D.数据库系统比文件系统能管理更多的数据46.以下对 C语言函数的有关描述中,正确的是(分数:1.00)A.在 C语言中调用函数时,只能把实参的值传给形参,形参的值不能传送给实参B.C函数既可以嵌套定义又可以递归调用C.函数必须有返回值,否则不能使用函数D.函数必须有返回值,返回值类型不定47.下列关于 C语言的说法不正确的是(分数:1.00)A.C语言既具有高级语言的一切功能,也具有低级语言的一些功能B.C语言中的每一条执行语句都必须用分号结束,

    13、分号不是 C语言的一部分,是语句之间的分隔符号C.注释可以出现在程序中任意合适的地方D.命令行后面不能加分号,命令行不是 C语言的语句48.索引属于(分数:1.00)A.模式B.内模式C.外模式D.概念模式49.现有如下定义:int a,b,*p,*q;,则下列赋值语句错误的是(分数:1.00)A.p=printf(“%d,%o,%x,%u/n“,a,a,a,a);(分数:2.00)填空项 1:_62.下述程序的输出结果是U 【12】 /U。 #includestdio.h int fun(int x) int p; if(x=0|x=1) return 3; else p=x-fun(x-2

    14、); return p; void main() printf(“/n%d“,fun(9);(分数:2.00)填空项 1:_63.以下函数用来在 w数组中插入 x。n 所指向的存储单元中存放 w数组中字符个数。数组 w中的字符已按从小到大的顺序排列,插入后数组 w中的字符仍有序。请填空。 void fun(char*w,char x,int*n) int i, p; p=0; w*n=x; while(xwp)p+; for(i=*n;ip;i-)wi=U 【13】 /U;wp=x; + *n;(分数:2.00)填空项 1:_64.mystrlen函数的功能是计算 str所指字符串的长度,并作

    15、为函数值返回。请填空。 int mystrlen(char*str) int i; for(i=0;U 【14】 /U!=/0;i+); return(i);(分数:2.00)填空项 1:_65.下面程序的输出结果是U 【15】 /U。 long fun5(int n) long s; if(n=1)|(n=2) s=2; else s=n+fun5(n-1); return(s); main() long x; x=fun5(4); printf(“%ld/n“,x);(分数:2.00)填空项 1:_66.阅读下列程序,则程序的输出结果为U 【16】 /U。 #include“stdio.h

    16、“ struct ty int data; char c; main() struct ty a=30,x; fun(a); printf(“%d%c“,a.data,a.c); fun(struct ty b) b.data=20; b.c=y;(分数:2.00)填空项 1:_67.下面程序将二维数 a的行和列元素互换后存放另一个二维数组 b中。请填空。 main() int a 23=1,2,3,4,5,6; int b32, i,j; printf(“array a“/n“); for(i=0;i=1;i+) for(j=0;U 【17】 /U;j+) printf(“%5d“,aij)

    17、; U【18】 /U; printf(“/n“); printf(“array b:/n“); for(i=0;U 【19】 /U;i+) for(j=0;j=1;j+) printf(“%5d“,bij); printf(“/n“);(分数:2.00)填空项 1:_68.设有以下定义和语句,则*(*(p+2)+1)的值为U 【20】 /U。 int a32=10,20,30,40,50,60,(*p)2; p=a;(分数:2.00)填空项 1:_二级 C语言笔试 23答案解析(总分:86.00,做题时间:90 分钟)一、B选择题/B(总题数:50,分数:50.00)1.若变量已正确定义并赋值

    18、,下面符合 C语言语法的表达式是(分数:1.00)A.m:=5B.c=b=a=l C.float 8%5D.x+5=y+2解析:解析 选项 A)中的赋值方法为 Pascal语言赋值格式;C 语言中赋值直接为“=”,无冒号;选项D)中“x+5=y+2”赋值格式错误,赋值号左边不可以出现常量,也不可以同时出现两个变量。选项 C)应改为(float)8%32.数据处理的最小单位是(分数:1.00)A.数据B.数据元素C.数据项 D.数据结构解析:解析 数据处理的最小单位是数据项;由若干数据项组成数据元素;而数据是指能够被计算机识别、存储和加工处理的信息载体;数据结构是指数据之间的相互关系和数据运算。

    19、故正确答案为选项 C)。3.下列程序是用来判断数组中特定元素的位置所在。如果输入如下整数: 876 675 896 101 301 401 980 431 451 777 #includeconio.h #includestdio.h int fun(int *s,int t,int *k) int i; *k=0; for(i=0;it;i+) if(s*ksi)*k=i; return s*k; main() int a10=876,675,896,101,301,401,980,431,45l,777,k; clrscr(); fun(a,10,i+) p=strcat(p,ai); i

    20、=strlen(p); printf(“%d/n“,i); 则程序段的输出结果是(分数:1.00)A.18B.19 C.20D.21解析:解析 字符串连接函数 strcat的调用形式如下:strcat(s1,s2)。此函数用来把 s2所指字符串的内容连接到 s1所指的字符串后面,并自动覆盖 s1串末尾的尾标,函数返回 s1的地址值。6.假定 int类型变量占用两个字节,有定义:int x10=0,2,4;,则数组 x在内存中占字节数是(分数:1.00)A.3B.6C.10D.20 解析:解析 x 数组共有 10个元素,在花括弧内只提供 3个初值,这表示只给前面的 3个成员赋值,后7个元素的值为

    21、 0,所以,一共有 20个字节。7.下列关于复合语句和空语句的说法错误的是(分数:1.00)A.复合语句是由“”开头,由“”结尾的B.复合语句在语法上视为一条语句C.复合语句内,可以有执行语句,不可以有定义语句部分 D.C程序中的所有语句都必须由一个分号作为结束解析:解析 复合语句内,不仅可以有执行语句,而且还可以有定义语句部分。定义语句应该出现在可执行语句前面。8.以下程序有语法错误,有关错误原因的正确说法是 main() int G=5,k; void prt_char(); k=prt_char(G); (分数:1.00)A.语句 void prt_char();有错,它是函数调用语句,

    22、不能用 void说明B.变量名不能使用大写字母C.函数说明和函数调用语句之间有矛盾 D.函数名不能使用下划线解析:解析 在 C语言中,对于返回值是其他类型的函数,若把函数定义放在调用之后,应该在调用之前对函数进行说明,或称为函数原型说明。函数说明句中的类型必须与函数返回类型一致,函数说明可以是一条独立的语句,也可以与普通变量一起出现在同一个语句中。对于函数值为整型的函数的说明,prt_char中定义时是 void类型,那天返回值与 k=prt_char();矛盾。 所以本题的错误之处在于“函数说明和函数调用语句之间有矛盾。”9.有如下定义 struct person char name9;in

    23、t age;struct person class10=“John“,17,“paul“,19,“Mary“,18,“Adam“,16,;根据上述定义,能输出字母 M的语句是(分数:1.00)A.printf(“%c/n“,class3.nam;B.printf(“%c/n“,class3.name1);C.printf(“%c/n“,class2.name1);D.printf(“%c/n“,class2.name0); 解析:解析 这是一个给结构体数组赋初值的问题。它的赋初值过程与上述二维数组赋初值很相似。只是这里的大括号中的初始值没有按行给出(也即没有用大括号分开来),在这种情况下,初始

    24、值将按数组的各个元素在内存中的存放次序逐个逐个地赋给各元素。现在结构体数组的各个元素在内存中的存放次序是这样的:class0name,class0age,class1name,class 1age,由此可以知道,包含字母M的字符串“Mary“赋值给了元素 class2name,则与字符M先相对应的表达式是class2name0。10.若程序执行时的输入数据是“2473“,则下述程序的输出结果是 #includestdio.h void main() int cs; while(cs=getchar()!=;/n) switch(cs-2) case 0 case 1:putchar(cs+4)

    25、; case 2:putchar(cs+4); break; case 3:putchar(cs+3);default:putchar(cs+2);(分数:1.00)A.668977 B.668966C.6677877D.6688766解析:解析 本题主要考查了 switch语句的使用方法。switch 语句的执行过程为:进入 switch结构后,对条件表达式进行运算,然后从上至下去找与条件表达式值相匹配的 case,以此作为入口,执行 switch结构中后面的各语句,直到遇到 break语句,则跳出 switch语句,如果各 case都不匹配时则执行default后面的语句。11.一些重要的

    26、程序语言(如 C语言和 Pascal语言)允许过程的递归调用。而实现递归调用中的存储分配通常用(分数:1.00)A.栈 B.堆C.数组D.链表解析:解析 一些较流行的程序语言允许过程的递归调用。递归调用就是过程调用本身。递归实现的是:当过程每一次执行后,都能返回到最近一次调用它的过程中。这样各调用点之间形成一种后进先出关系,而栈结构正适合来存储这些调用点。12.已知如下定义,则 sizeof(a)的值是 struct int i; char c; double a;a;(分数:1.00)A.8B.9C.10D.11 解析:解析 结构体在内存中是连续存放的,一个结构体类型的变量所占用的空间是其所

    27、有成员所占空间的总和。double 类型所占的空间为 8个字节。13.若有定义:char*st=“how are you“;下列程序段中正确的是(分数:1.00)A.char a11,*p;strcpy(p=a+1,b=p5;则 b的值是(分数:1.00)A.5B.6C.9 D.8解析:解析 p=i+) switch(i) case 0: case 3:a+=2; case 1: case 2:a+=3; default:a+=5; printf(“%d/n“,a);(分数:1.00)A.31 B.13C.10D.20解析:解析 本题考查用于多分支选择的 switch 语句,其一般形式为: s

    28、witch(表达式) case 常量表达式 1:语句 1; case 常量表达式 2:语句 2; case 常量表达式 n:语句 n; default:语句 n+1; 其语义是:计算表达式的值。并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有 case后的语句。如表达式的值与所有 case后的常量表达式均不相同时,则执行 default后的语句。25.数据库系统的核心是(分数:1.00)A.数据库B.数据库管理系统 C.模拟模型D.软件工程解析:解析 数据库管理系统(Database Management Syste

    29、m,简称 DBMS)是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等,数据库管理系统是数据库系统的核心。26.现有如下程序段 #include“stdio.h“ main() int k30=12,324,45,6,768,98,21,34,453,456; int count=0,i=0; while(ki) if(ki%2=0|ki%5=0)count+; i+; printf(“%d,%d/n“,count,i); 则程序段的输出结果为(分数:1.00)A.7,8B.8,8C.7,10D.8,10 解析:解析 在 C语言中,定义一维数组

    30、的语句一般形式如下: 类型名 数组名常量表达式; 一维数组的引用形式为:数组名下标表达式。 count 表示能被 2整除或被 5整除的个数,i 则计算有多少个数组元素。27.以下变量 x,y,z 均为 double类型且已正确赋值,不能正确表示数学式子 xyz的 C语言表达式是(分数:1.00)A.x/y*z B.x*(1/(y*)C.x/y*1/zD.x/y/z解析:解析 本题中,“()”的优先级是最高的,“*”和“/”的优先级别相同,运算方向是从左向右。28.以下程序的运行结果为 #include“stdio.h“ main() int m,n; for(m=0,n=10;mn;m+=3,

    31、n-);printf(“%d,%d/n“,m,n);(分数:1.00)A.6,7B.7,6C.9,7 D.7,9解析:解析 for 后一对括号中的表达式可以是任意有效的 C语言表达式。该题目的循环体部分为空语句,循环控制条件为 mn,每一次 m增 3,n 减 1,每当循环体执行结束时,循环控制变量 m,n 就会分别被增 3和减 1。29.当 k的值不为 0时,在下列选项中能够将 k的值赋给变量 m,n 的是(分数:1.00)A.m=k=nB.(m= int *p=a; for(i=0;i4;i+)ai=*p; printf(“%d/n“,a2); 上面程序输出结果是(分数:1.00)A.6B.

    32、8C.4D.2 解析:解析 在 C语言中,数组元素下标是从 0 开始的;指针变量 p指向数组的首地址。for 循环语句中,指针变量 p始终指向数组的首地址,因而执行循环赋值语句后数组各元素的值均变为 2。38.以下对结构体类型变量的定义中,不正确的是(分数:1.00)A.typedef struct aa int n; float m; AA; AA tdl;B.#define AA struct aa AA int n; float m; tdl;C.struct int n; float m; aa; struct aa tdl; D.struct int n; float m; tdl;

    33、解析:解析 定义结构体类型的变量有几种的方法如下: 定义结构体类型的同时,定义结构体类型的变量,如下面的定义中在定义结构体类型 aa的同时定义了该类型的变量 tdl。上述 B)项中将宏名 AA用宏体 struct aa 替换进去后,与该定义形式一样,因此是正确的。这一定义形式中,结构体类型名明是可以省略的,因此,D)项也是正确的。 struct aa tdl; 先定义结构体类型,然后再定义结构体类型的变量,形式如下: struct aa ; struct aa tdl; 这种定义形式也可演变为,先用类型定义语句 typedef将该结构体类型定义成一个类型名 AA,然后直接用该类型名 AA去定义

    34、一个变量(这时不再需要使用关键字 struct了)。这就是 A)项的形式。39.以下程序的输出结果是 int f() static int i=0; int s=1; s+=i;i+; return s; main() int i,a=0; for(i=0;i5;i+)a+=f(); printf(“%d/n“,a);(分数:1.00)A.20B.24C.25D.15 解析:解析 对函数的静态局部变量是在编译时就赋初值,即只赋初值一次,在程序运行时它已有初值,以后每次调用函数时不再重新赋值,而只是保留上次函数调用结束时的值。40.若 w=l,x=2,y=3,z=4,则条件表达式 wx?w:yz

    35、? y:z 的值是(分数:1.00)A.4B.3C.2D.1 解析:解析 本题考查了条件表达式的计算方法。条件表达式的运算顺序是从右至左,所以本题先计算条件表达式 yz?y:z 的值,为 3,然后再计算条件表达式 wx?w:3 的值,为 1。41.C语言中,能识别处理的文件为(分数:1.00)A.文本文件和数据块文件B.文本文件和二进制文件 C.流文件和文本文件D.数据文件和二进制文件解析:解析 在计算机中,对于输入输出均采用数据流的形式。文件按照存取方式分为顺序存取文件和随机存取文件。按照存储形式分为二进制文件和文本文件。文本文件存储的是一个 ASCII码,文件的内容可以直接进行输入输出。二

    36、进制文件直接将字符存储,不能将二进制文件的内容直接输出到屏幕上。所以,C语言所能够处理文件是按照存放形式分为文本文件和二进制文件。42.下列程序的输出结果是 #include“stdio.h“ #define M(x,y) x%y main() int a,m=12,n=100; a=M(n,m); printf(“%d/n“,a-);(分数:1.00)A.2B.3C.4 D.5解析:解析 带参数的宏定义命令行形式如下: #define 宏名(形参表)替换文本 在编译的时候编译预处理程序用“替换文本”来替换宏,即 M(n,m)被替换为 n%m,之后计算,将计算的结果赋给 a。注意,宏替换是在编

    37、译时由预处理程序完成的,宏替换不占用运行的时间,而函数调用是在程序运行时进行的,在函数的调用过程中需要占用一系列的处理时间。43.下列程序的运行结果是 #include“stdio.h“ main() int x=-9,y=5,z=8; if(xy) if(y0)z=0; else z+=1; printf(“%d/n“,z);(分数:1.00)A.6B.7C.8D.9 解析:解析 if.else 语句的执行过程如下,首先计算 if后面一对圆括号内表达式的值,若表达式的值为非 0,执行 if子句,然后跳过 else子句,去执行 if语句后的下一条语句;若表达式的值为 0,跳过if子句,去执行

    38、else子句,接着去执行 if语句后的下一条语句。 C 语言的语法规定,else 子句总是与前面最近的不带 else 的 if匹配,与书写格式无关,本题目的后一个 if else相当于嵌套在第一个 if子句里,相当于 xyprintf(“%d,%o,%x,%u/n“,a,a,a,a);(分数:2.00)填空项 1:_ (正确答案:31,37, 1f,31)解析:解析 此题考查了 printf函数的格式字符,题中 d是以十进制形式输出,o 是以八进制形式输出,x是以十六进制形式输出,u 以不带符号的十进制数输出。62.下述程序的输出结果是U 【12】 /U。 #includestdio.h in

    39、t fun(int x) int p; if(x=0|x=1) return 3; else p=x-fun(x-2); return p; void main() printf(“/n%d“,fun(9);(分数:2.00)填空项 1:_ (正确答案:7)解析:解析 此题考查的是函数的递归调用。x=0 或 x =1是递归的终止条件,然后用回代的方法从一个已知值推出下一个值,直到计算出最终结果。63.以下函数用来在 w数组中插入 x。n 所指向的存储单元中存放 w数组中字符个数。数组 w中的字符已按从小到大的顺序排列,插入后数组 w中的字符仍有序。请填空。 void fun(char*w,ch

    40、ar x,int*n) int i, p; p=0; w*n=x; while(xwp)p+; for(i=*n;ip;i-)wi=U 【13】 /U;wp=x; + *n;(分数:2.00)填空项 1:_ (正确答案:wi-1)解析:解析 在用数组实现的有序序列中插入内容,必须先寻找插入位置。插入位置找到后,需将插入位置之后的元素向后移动一个位置,留出插入点。最后,将元素插入,并增加序列的元素个数。函数为了简化寻找插入位置循环的循环条件,预先在序列的最后置入插入值。插入位置之后的元素向后移动一个位置必须从最后一个元素开始往前逆序移动,是将前一个元素向后移,所以在空框处应填入 wi-1。64.

    41、mystrlen函数的功能是计算 str所指字符串的长度,并作为函数值返回。请填空。 int mystrlen(char*str) int i; for(i=0;U 【14】 /U!=/0;i+); return(i);(分数:2.00)填空项 1:_ (正确答案:*(str+i)或 stri)解析:解析 str 是指针变量,它指向字符型数据,在循环过程中,可以用*(str+i)来访问字符串中的第 i个元素,判断是否是结束标志,如果不是,i=i+1,继续取下一个元素进行判断,直到*(str+i)的值为/0为止,也可以用下标的方式引用字符,如*(str+i)相当于 stri。65.下面程序的输出

    42、结果是U 【15】 /U。 long fun5(int n) long s; if(n=1)|(n=2) s=2; else s=n+fun5(n-1); return(s); main() long x; x=fun5(4); printf(“%ld/n“,x);(分数:2.00)填空项 1:_ (正确答案:9)解析:66.阅读下列程序,则程序的输出结果为U 【16】 /U。 #include“stdio.h“ struct ty int data; char c; main() struct ty a=30,x; fun(a); printf(“%d%c“,a.data,a.c); fun

    43、(struct ty b) b.data=20; b.c=y;(分数:2.00)填空项 1:_ (正确答案:30x)解析:解析 本题的参数传递属于值传递,所以函数内不能改变调用函数中的数据。67.下面程序将二维数 a的行和列元素互换后存放另一个二维数组 b中。请填空。 main() int a 23=1,2,3,4,5,6; int b32, i,j; printf(“array a“/n“); for(i=0;i=1;i+) for(j=0;U 【17】 /U;j+) printf(“%5d“,aij); U【18】 /U; printf(“/n“); printf(“array b:/n“

    44、); for(i=0;U 【19】 /U;i+) for(j=0;j=1;j+) printf(“%5d“,bij); printf(“/n“);(分数:2.00)填空项 1:_ (正确答案:17j2 18bji=aij 19i=2)解析:解析 本题考查了二维数组元素的引用。aij表示的是二维数组 a的第 i+1,第 j+1列的元素。68.设有以下定义和语句,则*(*(p+2)+1)的值为U 【20】 /U。 int a32=10,20,30,40,50,60,(*p)2; p=a;(分数:2.00)填空项 1:_ (正确答案:60)解析:解析 本题中,代码定义 3行 2列的二维数组 a,定义指向两个元素的一维数组指针 p,并让 p指向两维数组 a的首行。则代码*(*(p+2)+1)中的 p+2指向两维数组 a的第三行 a2,*(p+2)指向 a20,*(p+2)+1指向 a21,*(*(p+2)+1)是引用 a21,其值是 60。


    注意事项

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




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

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

    收起
    展开