全国计算机等级考试二级c语言笔试题详解

上传人:第*** 文档编号:38946092 上传时间:2018-05-09 格式:DOC 页数:60 大小:412.50KB
返回 下载 相关 举报
全国计算机等级考试二级c语言笔试题详解_第1页
第1页 / 共60页
全国计算机等级考试二级c语言笔试题详解_第2页
第2页 / 共60页
全国计算机等级考试二级c语言笔试题详解_第3页
第3页 / 共60页
全国计算机等级考试二级c语言笔试题详解_第4页
第4页 / 共60页
全国计算机等级考试二级c语言笔试题详解_第5页
第5页 / 共60页
点击查看更多>>
资源描述

《全国计算机等级考试二级c语言笔试题详解》由会员分享,可在线阅读,更多相关《全国计算机等级考试二级c语言笔试题详解(60页珍藏版)》请在金锄头文库上搜索。

1、第三部分第三部分 全国计算机等级考试二级全国计算机等级考试二级 C C 语言笔试题详解语言笔试题详解第第 5 5 章章 选择题详细解析选择题详细解析(1)下面描述中,不符合结构化程序设计风格的是_。 A)使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑 B)自顶向下 C)注重提高程序的执行效率 D)限制使用 goto 语句 参考答案:C 考察知识点:结构化程序设计 解析:结构化程序设计方法的四条原则是:1.自顶向下:2.逐步求精;3.模块化;4.限 制使用 goto 语句。 “自顶向下”是说,程序设计时,应先考虑总体,后考虑细节,先考虑全局 目标,后考虑局部目标;“逐步求精 是说

2、,对复杂问题,应设计一些子目标作过渡,逐步细 节化;“模块化”是说,一个复杂问题肯定是由若干稍简单的问题构成,解决这个复杂问题的 程序,也应对应若干稍简单的问题,分解成若干稍小的部分。 (11)C 语言规定,程序中各函数之间_。 A)既允许直接递归调用也允许间接递归调用 B)不允许直接递归调用也不允许间接递归调用 C)允许直接递归调用不允许间接递归调用 D)不允许直接递归调用允许间接递归调用 参考答案:A 考察知识点:函数的递归调用 解析:c 语言规定,程序中各函数之间既允许直接递归调用也允许间接递归调用。 (15)下列描述中不正确的是_。 A)字符型数组中可以存放字符串 B)可以对字符型数组

3、进行整体输入、输出 C)可以对整型数组进行整体输入、输出 D)不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值 参考答案:C 考察知识点:对数组的理解 解析:c 语言规定只能逐个引用数组元素而不能一次引用整个数组。字符数组的输入、 输出可以将整个字符串一次输入或输出。所以,选项 C 的说法是不正确的。 (16)以下程序的输出结果是_。main() int i,x33=9,8,7,6,5,4,3,2,1,*p= for(i=0;i=0|b=0) 选项 B 中,表达式表示的是 0,因为没有满足条件的值; 选项 C 中,表达式表示的是 0,因为没有满足条件的值; 选项 D 表示的是 a

4、和 b 为同号。 (20)若己定义:int a9,*p=a;并在以后的语句中未改变 p 的值,不能表示 a1地址 的表达式是_。A)p+1 B)a+1 C)a+ D)+p 参考答案:C 考察知识点:数组地址的表示 解析:数组名是指针常量,是个固定的指针,不能对数组名赋予一个新的地址值,也不能 使这个指针常量“移动”,指向数组的其他元素。 (21)以下程序的输出结果是_。main() int a=-1,b=1,k; if(+a #include main() char*s1=“AbCdEf”,*s2=“aB”; s1+;s2+; printf(“%dn”,strcmp(s1,s2); 上面程序的

5、输出结果是_。 A)正数 B)负数 C)零 D)不确定的值 参考答案:A 考察知识点:字符串比较函数 strcmp()的应用 解析:strcmp(X1,X2)是串比较函数,当 X1X2 时返回值为正数,当 X1s2,返回值为正数。 (24)请读程序:#include func(int a,int b) int c: c=a+b: return C:B ) struct double a; char b10; s; D ) typedef ABC double a; char b10; ABC s: main() int x=6,y=7,z=8,r; r=func(x-,y+,x+y),z-);

6、 printf(“%dn”,r); 上面程序的输出结果是_。A)11 B)20 C)21 D)31 参考答案:C 考察知识点:自增、自减运算 解析:函数 func()的作用是返回两个形参的和,第一个形参是 x、y 分别自减和自增后 的和,其中(x-,y+,x+y)是一个逗号表达式,它的值应该等于 x+y,所以整个表达式(x- ,y+,x+y)的值为 13,而第二个形参的值为 8(根据语法规则,应当先使用,后自增),所以 fune()的返回值为 13+8=21。 (25)请读程序:#include main() int a,b; for(a=1,b=1;a=20)break; if(b%3=1)

7、b+=3;continue; b=5; printf(“%dn”,a); 上面程序的输出结果是_。A)7 B)8 C)9 D)10 参考答案:B 考察知识点:break 语句和 continue 语句 解析:break 语句的作用是用于跳出循环体,继续执行循环体下面的语句;而 continue 语句的作用是用于跳出本次循环,即跳过循环体中尚未执行的语句,接着进行下一次是否执 行循环的判定。 “%”是求余运算符,执行第一次循环时,条件(b%3=1)为真,b=4,继续下一次 循环,如此反复,当 b=22 时,条件(b=20)为假,跳出循环,此时共循环 8 次,即 a=8。 (26)请读程序片段(字

8、符串内没有空格字符):printf(“%dn”,strlen(“ATSn0121”); 上面程序片段的输出结果是_。A)11 B)10 C)9 D)8 参考答案:C 考察知识点:字符串的长度 解析:这个语句的目的是输出“ATSn0121”这个串的长度,在串中“”代表一个 “”,为了和 printf()函数中的转义字符区分开来,在语法上使用了两个反斜杠代替了一 个反斜杠,所以它仅仅为一个字符,而”1”代表数字 1,也占一个字符,“n”是回车换行 符,也占一个字符,加上 A、T、s、0、1、2,一共是 9 个字符。(28)请选出以下程序的输出结果_。#include sub(int*s,int y

9、) static int t=3; y=st;t-; main() int a=1,2,3,4,i,x=0; for(i=0;i main() int c; while(c=getchar()!=n) switch(c-2) case O: case 1:putchar(c+4); case 2:putchar(c+4);break; case 3:putchar(c+3); efault:putchar(c+2);break; 从第一列开始输入以下数据, 代表一个回车符。2473 程序的输出结果是_。A)66877 B)66866 C)66778777 D)6688766 参考答案:A 考察

10、知识点:switch()语句 解析:getchar()函数是从键盘接受一个字符输入;当用户键入的字符不是回车符时,会 进入一个多分支选择语句,根据表达式 c-2的值进行分支选择:putchar()是在屏幕上 打印一个字符,最后的结果应当为 668977。 (34)以下程序的输出结果是_。main() int w=5; fun(w); printf(“n”); fun(int k) if(kO) fun(k-1); printf(“%d”,k); A)5 4 3 2 1 B)0 1 2 3 4 5 C)1 2 3 4 5 D)5 4 3 2 1 0 参考答案:B 考察知识点:函数的递归调用 解析

11、:函数的递归调用就是在调用一个函数的过程中又出现直接或间接地调用该函数 本身。fun 函数共被调用 6 次,即 fun(5)、fun(4)、fun(3)、fun(2)、fun(1)、fun(O)。其 中 fun(5)是 main 函数调用的,其余是在 fun 函数中调用的。 (35)若 fp 是指向某文件的指针,且已读到此文件的末尾,则函数 feof(f1)的返回值是 _ 。 A)EOF B)0 C)非零值 D)NULL 参考答案:C 考察知识点:文件结束符的返回值 解析:函数 feof 是用来判断文件是否已读到末尾,如果己读到末尾则返回非零值,否则 返回 O。 (46)请读程序:#inclu

12、de main() int a;float b,c; scanf(“%2d%3f%4f”, printf(“na=%d,b=%Cc=%fn”,a,b,c); 若运行时从键盘上输入 9876543210,则上面程序的输出结果是_。A)a=98,b=765,c=4321 B)a=10,b=432,c=8765 C)a=98,b=765.000000,c=432 1.000000 D)a=98,b=765.0,c=4321.0 参考答案:C 考察知识点:格式输入、输出函数 解析:scanf()把刚户从键盘录入的数字的第 1、2 位存入整型变量 a;把第 3、4、5 位 存入单精度实型变量 b,由于“

13、f”是以小数形式输出单、双精度数。隐含输出 6 位小数,所 以 b=4321.000000;把第 6、7、8、9 位存入单精度实型变量 c,用户录入的第 10 位被 scanf()遗弃。这时变量 fd、b、c 的值分别为:98、765.000000、432 1.000000。 (47)请选出以下程序的输出结果_。#include sub(x,y,z) int x,y,*z: *z=y-x; main() int a,b,c; sub(10,5,sub(7,a,sub(a,b, printf(“%d,%d,%dn”,a,b,c); A)5,2,3 B)-5,-12,-7 C)-5,-12,-17

14、 D)5,-2,-7 参考答案:B 考察知识点:函数的调用 解析:sub()函数的是将形参 y 和 x 的差赋给了 z 指向的那个内存地址,所以在 sub(10,5, B)pb=x; C)*pb= D)*pb=*x 参考答案:A 考察知识点:赋值表达式 解析:选项 A 是将变量 x 的地址赋给变量 pb,使 pb 指向 x,故为正确的赋值表达式。 选项 B 是将 x 的值当作地址赋给指针 pb,pb 指一个地址等于 x 值的内存单元。 选项 C 足将 x 的地址赋给指针 pb 指向的那个地址等于 x 值的内存单元。 选项 D 是不正确的语句。 (49)若要用下面的程序片段使指针变量 p 指向一个存储整型变量的动态存储单元。int *p;p=_malloc(sizeof(int); 则应填入_。A)int B)ira* C)(*int) D)(int*) 参考答案:D 考察知识点:强制类型转换 解析:不论 p 是指向什么类型的指针变量,都可以通过强制类型转换的方法使之类型一 致,强制类型转换的格式为(数据类型*)。 (50)若执行下面程序时从键盘上输入 5,main() int x; scanf(“%d”, if(x+5) printf(“%dn”,x); else

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号