【计算机类职业资格】福建省二级C语言-2 (1)及答案解析.doc
《【计算机类职业资格】福建省二级C语言-2 (1)及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】福建省二级C语言-2 (1)及答案解析.doc(24页珍藏版)》请在麦多课文档分享上搜索。
1、福建省二级 C 语言-2 (1)及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:20,分数:40.00)1.一个 C 语言源程序的执行_。(分数:2.00)A.从 main()函数开始,直到 main()函数结束B.从第一个函数开始,直到最后一个函数结束C.从第一条语句开始,直到最后一条语句结束D.从 main()函数开始,直到最后一个函数结束2.C 语言中,合法的整型常数是_。(分数:2.00)A.-068B.0x48aC.1, 256D.1.03.以下关于 C 语言变量的叙述中,错误的是_。(分数:2.00)A.不同基本类型的变量之间不能进行混合运算B.在定义变量
2、的同时可对变量赋初值C.变量按所定义的类型存放数据D.程序中的变量必须先定义后使用4.若已定义 int a, b=6;执行语句 a=-b; 后,变量 a、b 的值分别_。(分数:2.00)A.5 5B.5 6C.6 5D.6 65.以下程序运行时,应从键盘输入_,则输出结果是:3 6。 #includestdio.h int main() int a, b; scanf(“%d, %d“, printf(“%d %d/n“, a, b); return 0; (分数:2.00)A.3,6B.3 6C.6,3D.a=3 b=66.若已定义 int a=1, b=2, c=3, d=4, k=2,
3、 t=2; ,执行(k=ab)|(t=cd)后 t 的值是_。(分数:2.00)A.“false“B.2C.0D.17.以下关于运算符优先顺序的描述中,正确的是_。(分数:2.00)A.关系运算符算术运算符赋值运算符逻辑与运算符B.逻辑与运算符关系运算符算术运算符赋值运算符C.赋值运算符逻辑与运算符关系运算符算术运算符D.算术运算符关系运算符赋值运算符逻辑与运算符8.执行以下程序,若从键盘输入 1,则输出结果是_。 #includestdio.h int main() int k; scanf(“%d“, switch(k) case 1: printf(“%d“, k+); case 2:
4、printf(“%d“, k+); case 3: printf(“%d“, k+); break; default: printf(“Full!/n“); return 0; (分数:2.00)A.1B.2C.234D.1239.以下不是无限循环的语句是_。(分数:2.00)A.while(1)a+;B.for(m=0, n=1; n+m; n=i+)i=n;C.for(;a+=i);D.for(i=10;i-)sum+=i;10.以下程序运行结果是_。 #includestdio.h int main() int a=1, 3, 4, 6, 9, i, x=1; for(i=0; i3;
5、i+) x+=ai+1; printf(“%d/n“, x); return 0; (分数:2.00)A.9B.14C.15D.1011.执行 int a4=2, 3, 5, 7, 8, 9, 11, 13, 15; 语句后,a12的值是_。(分数:2.00)A.11B.3C.5D.912.以下给字符数组 str 定义和赋值,正确的是_。(分数:2.00)A.char str10;str=“good“;B.char str10;strcpy(str, “abdefghijklmnxy“);C.char str10=“abdefghijklmnxy“;D.char str=“good“;13.下
6、列叙述错误的是_。(分数:2.00)A.形式参数也属局部变量B.在其他函数中定义的变量在主函数中不能使用C.主函数中定义的变量属全局变量D.全局变量的作用域从定义该变量的位置开始至本源文件结束14.下列叙述错误的是_。(分数:2.00)A.C 程序在执行过程中对预处理命令行进行处理B.预处理命令行都必须以#号开始C.在程序中凡是以#号开始的语句行都是预处理命令行D.以下是正确的宏定义:#define CR 4515.对于基类型相同的两个指针变量 p1、p2,则下列运算不合理的是_。(分数:2.00)A.p1=p2B.p1+p2C.p1p2D.p2-p116.以下程序的运行结果是_。 #incl
7、udestdio.h void fun(int x, int y, int*p) *p=x+y; int main() int a, b, c; fun(5, 3, fun(7, a, fun(a, b, printf(“%d, %d, %d/n“, a, b, c); return 0; (分数:2.00)A.0, 0, 0B.8, 15, 0C.8, 0, 0D.8, 15, 2317.若有以下结构类型定义及结构变量说明: struct example int a; char se; vl; 则_是正确的结构变量声明或结构变量成员引用。(分数:2.00)A.example.a=50;B.e
8、xample v2; v2.a=50;C.struct example v2; v2.a=50;D.struct v2; v2.a=50;18.以下程序的运行结果是_。 #includestdio.h struct STU char name10; float score3; ; int main() struct STU s3=“zhang“, 95, 89, 78, “wang“, 77, 68, 80, “hong“, 67, 76, 70; struct STU*p=s; int i; float sum=0; for(i=0; i3; i+) sum=sum+p-scorei; pr
9、intf(“%6.2f/n“, sum); return 0; (分数:2.00)A.239.00B.262.00C.225.00D.213.0019.以下程序段执行后,变量 c 的值为_。 int a=3, b=2, c; c=(a b)2;(分数:2.00)A.11B.12C.3D.420.C 语言中系统默认的文件类型有_。(分数:2.00)A.类型文件和文本文件B.二进制文件和类型文件C.文本文件和记录文件D.文本文件和二进制文件二、程序填空题(总题数:1,分数:20.00)(在每对/*/之间填写内容,完成题目的要求)(分数:20.00)(1).以下程序的功能是将输入字符串中所有的字符“
10、k“删除。 如:输入:adklhjkyuer 输出:adlhjyuer /*/ 1/*/ int main() char str100; int/*/ 2/*/; printf(“Enter string:“); gets(str); for(i=j=0; stri!=“/0“; i+) if(stri!=“k“) strj=stri; /*/ 3/*/; strj=“/0“; printf(“Now sting is:“); puts(str); return 0; (分数:10.00)(2).以下程序用以输出两个正整数 a 和 b,它们满足 a 能被 13 整除,b 能被 11 整除,且
11、a 与 b 之和为316。 #includestdio.h int main() int i=0, a, b; do i+; b=316-13*i; while(/*/ 1/*/); a=13*i; printf(“%d+%d=316/n“, a, b); return 0; (分数:10.00)三、程序改错题(总题数:1,分数:20.00)(修改每对/*/之间存在的错误,完成题目的要求)(分数:20.00)(1).以下程序用以输出 1100 之间所有偶数的累加和。 #includestdio.h int main() /*/ 1 int i/*/; int sum=0; while(i+,
12、i=100) if(/*/ 2 i=(i/2)*2/*/) continue; sum+=i; printf(“sum=%d/n“, sum); return 0; (分数:10.00)(2).以下程序实现如下图形的输出。 1 0 0 0 0 2 1 0 0 0 3 2 1 0 0 4 3 2 1 0 5 4 3 2 1 #includestdio.h int main() /*/ 1 int a5, 5; /*/ int i, j; for(i=0; i5; i+) for(j=0; j5; j+) if(/*/ 2 j=i/*/) aij=0; else /*/ 3 aij=i+2-j;
13、/*/ printf(“%3d“, aij); printf(“/n“); return 0; (分数:10.00)四、编程题(总题数:1,分数:20.00)(补充每对/*/之间的程序段,完成题目的要求)(分数:20.00)(1).程序中的 fun()函数用以完成如下数学表达式。 (分数:10.00)_(2).请编写程序中的 letters()函数,主函数调用该函数用以将字符数组 str1 中出现的英文字母依次存放在字符数组 str2 中(所有大写字母在前、小写字母在后)。如: str1 中字符串:adKDsdi798?sdfAE str2 中字符串:KDAEadsdisdf #include
14、stdio.h void letters(char s, char str) /*/ /*/ int main() char str1100, str2100; printf(“Enter a string:“); gets(str1); letters(str1, str2); printf(“string is converted:“); puts(str2); return 0; (分数:10.00)_福建省二级 C 语言-2 (1)答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:30,分数:60.00)1.以下不正确的 if 语句是_。(分数:2.00)A.if
15、(xy);B.if(x=yC.if(x!=y)scanf(“%d“, D.if(xy)x+; y+; 解析:解析 选项 D 的 if 分支内嵌语句是复合语句,复合语句内的各条语句都必须以分号“; ”结尾,而右花括号“”后面则不需要有分号。应改为:if(xy)x+; y+; 。2.if 语句嵌套使用时,else 总是与_配对。(分数:2.00)A.同一行上的 ifB.其之前最近的 ifC.其之前最近的未配对的 if D.缩排位置相同的 if解析:解析 C 语言规定,else 总是与它前面最近的未配对的 if 配对。注意选项 B 是不正确的,如如下嵌套格式: if(表达式 1) if(表达式 2)
16、 语句 1 else 语句 2 与 else 最近的 if 语句已用花括号括起来,表示它是不带 else 的 if 语句。关于选项 D,通常要求同一层的 if、else 在缩排位置相同的同一列上对齐,但排列对齐不是正确配对的保障机制,只是为了清晰体现嵌套结构,提高程序的可读性。3.以下程序的输出结果是_。 #includestdio.h int main() int a=-1, b=1, k; if(+a0 else printf(“%d%d/n“, b, a); return 0; (分数:2.00)A.-1 1B.0 1C.1 0 D.0 0解析:解析 首先判断+a0 的值,由于+a 是先
17、加 1 后使用,故执行+a 后 a 的值变为 0,判断出a0 的值为假。对于else k=0; B.if(ab|bc)k=1;C.if(a=b)k=0;else if(b=c)k=1;else k=0;D.if(ab)k=1;else if(bc)k=1;解析:解析 语句 k=ab?(bc?1:0):0;的功能是将表达式 ab?(bc?1:0):0 的值赋给k。ab?(bc?1:0):0 是一个嵌套的条件表达式,其计算顺序为先外层再内层,首先判断 ab 成立否,若 ab 成立,再计算 bc?1:0 的值,此时当 bc 时值为 1,否则值为 0;若 ab 不成立,则值为 0。选项 A 的选择语句
18、功能符合条件表达式的要求,当 ab switch(a%3) case 0:switch(b%5) default:m-; case 2:m+; break; case 3:m-; break; case 1:m+; printf(“%d/n“, m); return 0; (分数:2.00)A.0B.1C.2D.3 解析:解析 此程序是 switch 的嵌套结构。首先根据 a%3 的值(0)选择外层 switch 的 case 0 分支,执行该分支内嵌的 switch 语句,根据 b%5 的值(2)选择内层 switch 的 case 2 分支,执行该分支中的 m+,于是 m=2,执行 bre
19、ak 退出内层 switch,这时外层 switch 的 case 0 分支也执行结束;由于 case 0 分支没有 break 语句(注意,case 2 分支中的 break 只能退出内层 switch 语句),case 0 之后的 case 1 分支中的 m+接着被执行,于是 m=3,至此完成外层 switch 的执行。注意在内层 switch 语句中,尽管 case 2分支出现在 default 分支之后,但它还是会在 default 分支之前被挑选,default 分支只有在所有分支都没被选中时才有机会执行。6.以下描述中正确的是_。(分数:2.00)A.do-while 语句构成的循
20、环,当 while 后的表达式的值为零时结束循环 B.do-while 语句构成的循环,当 while 后的表达式的值为非零时结束循环C.do-while 语句构成的循环只能用 break 语句退出D.do-while 语句构成的循环可以用 continue 语句退出解析:解析 do-while 语句构成的循环和 while 语句构成的循环一样,当条件表达式为非 0 时,执行循环体语句,当条件表达式为 0 时,停止循环。也可以在循环体中,根据相应条件,使用 break 语句退出循环。continue 语句的作用是跳过循环体中其后面未执行的语句,进行下一次循环条件判定,循环继续与否,将由循环条件
21、是否满足决定。7.以下程序执行后,输出结果为_。 int main() int x, y; for(x=1, y=1; y50; y+) if(x=10)break; if(x%2=1) x+=5; continue; X-=3; printf(“x=%d“, x); return 0; (分数:2.00)A.10 B.11C.12D.13解析:解析 本题要求掌握 break 和 continue 语句在循环语句中的作用。第一次循环:x=1,执行x+=5,结果为 6;第二次循环:x=6,执行 x-=3,结果为 3;第三次循环:x=3,执行 x+=5,结果为 8;第四次循环:x=8,执行 x-=
22、3,结果为 5;第五次循环:x=5,执行 x+=5,结果为 10;第六次循环:x=10,停止循环。x 结果为 10。8.下列程序段的执行次数为_。 int a=1; while(1) a+; +a; if(a4)break;(分数:2.00)A.1 B.2C.死循环D.错误解析:解析 进入 while 循环,先判别循环条件,循环条件为真,执行循环体语句 a+; +a; 后,a 为3,满足 a4,停止循环,所以循环执行 1 次。9.下面程序的运行结果是_。 int main() int x=0, y=0; while(x15) y+; x+=+y; printf(“%d, %d“, y, x);
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 福建省 二级 语言 21 答案 解析 DOC
