1、二级 C语言笔试-217 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:70.00)1.若有说明语句 char c=/72;,则变量 c(分数:2.00)A.包含 1个字符B.包含 2个字符C.包含 3个字符D.说明不合法,c 的值不确定2.下列程序执行后的输出结果是void rune(int *a,int b)b0=*a+6;main( )int a,b5;a=0;b0=3;fune( (分数:2.00)A.0B.22C.12D.109.一棵二叉树中共有 70个叶子结点与 80个度为 1的结点,则该二叉树中的总结点数为(分数:2.00)A.219B.2
2、21C.229D.23110.若变量已正确定义并赋值,以下符合 C语言语法的表达式是(分数:2.00)A.a:=b+1B.a=b=c+2C.int 18.5%3D.a=a+7=c+b11.下列叙述中正确的是(分数:1.00)A.程序的执行效率与数据的存储结构密切相关B.程序的执行效率只取决于程序的控制结构C.程序的执行效率只取决于所处理的数据量D.以上 3种说法都不对12.fseek函数的正确调用形式是(分数:1.00)A.fseek(文件指针,起始点,位移量)B.fseek(文件指针,位移量,起始点)C.fseek(位移量,起始点,文件指针)D.fseek(起始点,位移量,文件指针)13.以
3、下程序运行后的输出结果是main( )int n=9:while(n6)n-;printf(“%d“,n);(分数:1.00)A.987B.876C.8765D.987614.以下程序运行后的输出结果是#define F(X,Y)(X) * (Y)main( )int a=3,b=4;printf(“%d/n“,F(a+,b+);(分数:1.00)A.12B.15C.16D.2015.fseanf函数的正确调用形式是(分数:1.00)A.fseanf(fp,格式字符串,输出表列);B.fseanf(格式字符串,输出表列,fp);C.fscanf(格式字符串,文件指针,输出表列);D.fscan
4、f(文件指针,格式字符串,输入表列);16.已知:i nf t=0:while(t=1) 则下列叙述中正确的是(分数:1.00)A.循环控制表达式的值为 0B.循环控制表达式的值为 1C.循环控制表达式不合法D.以上说法都不对17.以下程序运行后的输出结果是main( )int x=1,a=0,b=0;switch(x)case 0:b+:case 1:a+:case 2:a+;b+;printf(“a=%d,b=%d/n“,a,b);(分数:1.00)A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=218.若有语句 int *point,a=4;和 point= (分数
5、:2.00)填空项 1:_52.下列程序的功能是:求出 ss所指字符串中指定字符的个数,并返回此值。例如,若输入字符串123412132,指定字符 1,则输出 3。请填空。#includeconio.h#includestdio.h#define M 81int fun(char *ss,char c)int i=0;for(;_;ss+)if( *ss=c)i+:return i;main( )char aM,ch;printf(“/nPlease enter a string:“);gets(a);printf(“/nPlease enter a char:“);ch=getchar( )
6、;prinff(“/nThe number of the char is:%d/n“,fun(a,ch);(分数:2.00)填空项 1:_53.下面程序的功能是:把从终端读入的文本(用作为文本结束标志)输出到一个名为 bi.dat的新文件中。请填空。#include “stdio.h“FILE *fp;main( )char eh;if(fp=fopen(_)=NULL) exit(0);while(eh=getchar( )!=)fpute(ch,fp);felose(fp);(分数:2.00)填空项 1:_二级 C语言笔试-217 答案解析(总分:100.00,做题时间:90 分钟)一、选
7、择题(总题数:40,分数:70.00)1.若有说明语句 char c=/72;,则变量 c(分数:2.00)A.包含 1个字符 B.包含 2个字符C.包含 3个字符D.说明不合法,c 的值不确定解析:解析 C 语言中允许用一种特殊的字符常量,即以“/”开头的字符序列,称为转义字符。其中“/ddd“表示用八进制数表示一个字符的 ASCII码值,本题中/72表示一个转义字符,因此变量 c包含一个字符。2.下列程序执行后的输出结果是void rune(int *a,int b)b0=*a+6;main( )int a,b5;a=0;b0=3;fune( (分数:2.00)A.0 B.22C.12D.
8、10解析:解析 条件运算符“?”是三目运算符,其形式为:(表达式 1)?(表达式 2):(表达式 3)。当“表达式 1”的值为真时,则“表达式 2”的值为整个表达式的值;如果“表达式 1”的值为假,则“表达式3”的值为整个表达式的值。题中,表达式 x12 的结果为假,所以将表达式 x-12的值 0作为 y的值。9.一棵二叉树中共有 70个叶子结点与 80个度为 1的结点,则该二叉树中的总结点数为(分数:2.00)A.219 B.221C.229D.231解析:解析 在任意一棵二叉树中,若终端结点(叶子结点)的个数为 n1,则度为 2的结点数 n2=n1-1。本题中度为 0的结点即叶子结点,故总
9、结点数=度为 0的结点数+度为 1的结点数+度为 2的结点数=70+80+69=219。10.若变量已正确定义并赋值,以下符合 C语言语法的表达式是(分数:2.00)A.a:=b+1B.a=b=c+2 C.int 18.5%3D.a=a+7=c+b解析:解析 选项 A中包含一个不合法的运算符“:=”;对于选项 C,应改为(int)18.5%3;对于选项D,可理解为两个表达式:a+7=c+b 和 a=a+7,因为 C语言规定赋值号的左边只能是单个变量,不能是表达式或常量等,所以 a+7=c+h是错的。因此,正确答案是选项 B,它相当于 a=(b=c+2),可分解为两个表达式:b=c+2 和 a=
10、b。11.下列叙述中正确的是(分数:1.00)A.程序的执行效率与数据的存储结构密切相关 B.程序的执行效率只取决于程序的控制结构C.程序的执行效率只取决于所处理的数据量D.以上 3种说法都不对解析:解析 程序的执行效率与数据的存储结构、程序所处理的数据量、程序所采用的算法等因素有关。12.fseek函数的正确调用形式是(分数:1.00)A.fseek(文件指针,起始点,位移量)B.fseek(文件指针,位移量,起始点) C.fseek(位移量,起始点,文件指针)D.fseek(起始点,位移量,文件指针)解析:解析 本题考查函数 fseek的用法。fseek 函数的调用形式为:fseek(文件
11、指针,位移量,起始点)“起始点”用 0、1 或 2代替;0 代表“文件开始”,1 为“当前位置”,2 为“文件末尾”。“位移量”指以“起始点”为基点,向前移动的字节数。ANSI C 和大多数 C版本都要求位移量是 long型数据。这样,当文件长度大于 64KB时不致出现问题。ANSI C 标准规定在数字末尾加一个字母 L表示 long型。13.以下程序运行后的输出结果是main( )int n=9:while(n6)n-;printf(“%d“,n);(分数:1.00)A.987B.876 C.8765D.9876解析:解析 该程序应根据循环体第一次和最后一次的输出结果来决定哪一项是正确的。第
12、一次进入循环时,n 的值是 9,在循环体内,经过 n-运算后,n 的值变为 8,所以第一次的输出值是 8,由此排除了选项 A、D。由循环条件 n6 可知,最后一次循环开始时,n 值为 7,所以最后一次执行循环体输出的 n值为 6,由此排除了选项 C。14.以下程序运行后的输出结果是#define F(X,Y)(X) * (Y)main( )int a=3,b=4;printf(“%d/n“,F(a+,b+);(分数:1.00)A.12 B.15C.16D.20解析:解析 本题考查带参数的宏定义,参数只是简单的字符替换,而不是参数的传递。本题中用 a+替换 X,用 b+替换 Y,再计算(a+)*
13、(b+)的值,即 3*4的值,其结果为 12。15.fseanf函数的正确调用形式是(分数:1.00)A.fseanf(fp,格式字符串,输出表列);B.fseanf(格式字符串,输出表列,fp);C.fscanf(格式字符串,文件指针,输出表列);D.fscanf(文件指针,格式字符串,输入表列); 解析:解析 fscanf 的格式为:(文件指针,格式字符串,输入表列)。16.已知:i nf t=0:while(t=1) 则下列叙述中正确的是(分数:1.00)A.循环控制表达式的值为 0B.循环控制表达式的值为 1 C.循环控制表达式不合法D.以上说法都不对解析:解析 这里要注意“=”与“=
14、”的用法。t=1 是将 1赋值给 t,所以循环控制表达式的值始终为1。17.以下程序运行后的输出结果是main( )int x=1,a=0,b=0;switch(x)case 0:b+:case 1:a+:case 2:a+;b+;printf(“a=%d,b=%d/n“,a,b);(分数:1.00)A.a=2,b=1 B.a=1,b=1C.a=1,b=0D.a=2,b=2解析:解析 当 x=1时,在 switch语句中,程序从 case 1入口,执行 a+,这里没有 break语句,所以程序顺序执行 case 2后面的语句。程序共执行了 3条语句:a+;a+;b+;,所以变量 a和 b最后的
15、值分别为 2和 1。18.若有语句 int *point,a=4;和 point= (分数:2.00)填空项 1:_ (正确答案:7)解析:解析 程序中的 if(i%7=0|i%11=0)语句是找出能被 7或 11整除的所有整数,aj+=i 是将满足条件的数放到 a数组中,变量 j记录了满足条件的数据个数,main()函数通过变量 n得到。如果 m的值为 50,即表达式 fun(10,aa,&n);为 fun(50,aa,&n);时,输入结果为:7 11 14 21 22 28 33 35 42 44 4952.下列程序的功能是:求出 ss所指字符串中指定字符的个数,并返回此值。例如,若输入字
16、符串123412132,指定字符 1,则输出 3。请填空。#includeconio.h#includestdio.h#define M 81int fun(char *ss,char c)int i=0;for(;_;ss+)if( *ss=c)i+:return i;main( )char aM,ch;printf(“/nPlease enter a string:“);gets(a);printf(“/nPlease enter a char:“);ch=getchar( );prinff(“/nThe number of the char is:%d/n“,fun(a,ch);(分数:
17、2.00)填空项 1:_ (正确答案:*ss!=/0)解析:解析 从字符串 ss中找出某字符的方法是:从字符串 ss的第一个字符开始,依次进行比较;若ss串的当前字符等于字符 c,则 i+;若 ss串的当前字符和字符 c不同,则继续对 ss串的下一个字符进行比较。本程序采用循环逐一比较的方式,找出某字符在字符串中出现的次数。If 语句的作用是判断某字符与字符串中的当前字符是否相同。53.下面程序的功能是:把从终端读入的文本(用作为文本结束标志)输出到一个名为 bi.dat的新文件中。请填空。#include “stdio.h“FILE *fp;main( )char eh;if(fp=fopen(_)=NULL) exit(0);while(eh=getchar( )!=)fpute(ch,fp);felose(fp);(分数:2.00)填空项 1:_ (正确答案:“bi.dat“,“w“ 或“bi.dat“,“w+/)解析:解析 根据 fopen函数的调用方式 fopen(文件名,使用文件方式);和题意可得结果。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1