C语言经典考试习题其答案详解.pdf
《C语言经典考试习题其答案详解.pdf》由会员分享,可在线阅读,更多相关《C语言经典考试习题其答案详解.pdf(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C 语言经典考试习题其答案详解一、单项选择题一、单项选择题单项选择题要求从给出的四个备选答案中,选出一个最符合题意的答案。本类习题主要检查对 C 语言基本概念的掌握情况,同学们在完成习题的过程中,不但要选出正确的答案,而且要清楚不正确的选项错在何处,以加深对概念的理解。对于掌握不准的问题,应该通过上机实验来检验。【1.1】以下不正确的 C 语言标识符是_。A) int B) a_1_2 C) ab1exe D) _x【1.2】以下是正确的 C 语言标识符是_。A) #define B) _123 C) %d D) n【1.3】下列四组字符串中都可以用作语言程序标识符的一组是 。A) print
2、 B) iam C) Pxq D) str_l _3d one_half My-book Cpp oodb start$it line# pow aBc 3pai His.age while【1.4】下面各选项组中,均是 C 语言关键字的组是 。A) auto,enum,include B) switch,typedef,continueC) signed,union,scanf D) if,struct,type【1.5】下列不属于 C 语言关键字的是 。 A) default B) register C) enum D) external【1.6】C 语言程序从 main()函数开始执行,
3、所以这个函数要写在_。A) 程序文件的开始 B) 程序文件的最后C) 它所调用的函数的前面 D) 程序文件的任何位置【1.7】下列关于 C 语言的叙述错误的是_A) 大写字母和小写字母的意义相同B) 不同类型的变量可以在一个表达式中C) 在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型 D) 同一个运算符号在不同的场合可以有不同的含义【1.8】#include 是 A.编译预处理指令 B.什么都不是 C.函数 D.有语法错误【1.9】程序编译链接后显示 0 error,0 warning 代表 A.程序中有语义错误 B.程序中没有语法错误 C.程序是正确的 D.程序是不正确的【1.1
4、0】关于可执行文件说法正确的是 A.可执行文件是编译链接后生成的文件 B.可执行文件就是 main.c 文件 C.可执行文件就是源代码文件 D.可执行文件后缀为.obj【1.11】设有语句“int a = 3;” ,执行语句“a += a -= a * a;”后,变量 a 的值是 A. 3 B. 0 C. -12 D. 9【1.12】在 C 程序中如果要使用数学函数,如 sin(x),log(x)等,需要在程序中加入的语句是 A. #define B. #define C. #include D. #include 【1.13】语言中字符型(char)数据在内存中的存储形式是_。 A) 原码
5、B) 补码 C) 反码 D) ASCII 码【1.14】将字符 g 赋给字符变量 c,正确的表达式是 。A) c=147 B) c=147 C) c=147 D) c=0147【1.15】下列转义字符中错误的一个是_。A) 000 B) 0014 C) x111 D) 2【1.16】将空格符赋给字符变量 c,正确的赋值语句是_。A) c=0 B) c=NULL C) c=0 D) c=32【1.17】设有以下定义,则下面给出的语句中错误的是int a=0; float b=1.25;char c=A;#define d 2 A. a+; B. c+; C. (a+1)+; D. b+;【1.1
6、8】字符串EOFn=-61的长度是_。A) 8 B) 9 C) 14 D) 非法字符串【1.19】下列关于单目运算符+、-的叙述中正确的是 A. a+和+a 都是最终使变量 a 执行 a=a+1,因此对于包含 a+或+a 的表达式而言(如 j=a+;或者 j=+a;),两种情况下表达式的最终运算结果一定是相同的。 B. a+的运算过程是:先使用变量 a 的值,然后再执行 a=a+1。 C. a+的运算过程是:先执行 a=a+1,然后再使用变量 a 的值。 D. +a 的运算过程是:先使用变量 a 的值,然后再执行 a=a+1。【1.20】已知:char a;int b;float c;doub
7、le d;执行语句c=a+b+c+d;后,变量 c 的数据类型是 。A) int B) char C) float D) double【1.21】在下面的 C 语言语句中,存在错误的是 A. int a,b; a=10; b=10; B. int a=b=10; C. int a=10,b=10; D.int a,b; a=b=10;【1.22】逗号表达式(a=3*5,a*4),a+15的值是_。A) 15 B) 60 C) 30 D) 不确定【1.23】如果 int a=1,b=2,c=3,d=4;则条件表达式ab?a:cd?c:d的值是_。A) 1 B) 2 C) 3 D) 4【1.24】
8、下面哪条语句可以生成 0-9 之间的随机数 A. magic=rand()/10; B. magic=rand()%10+1; C. magic=rand()%10; D. magic=rand()/10+1;【1.25】已知 int i=10;表达式20-0=i=9的值是_。A) 0 B) 1 C) 19 D) 20【1.26】若以下选项中的变量已正确定义,则正确的赋值语句是 A. x3=x2=x1=0; B. x1=26.8%3; C. 1+2=x2; D. x4=1+2=3;【1.27】为判断字符变量 c 的值不是数字也不是字母时,应采用下述表达式_。A) c=57&c=90&c=122
9、B) !(c=57&c=90&c=122)C) c=48&c=65&c=97&c=48&c=65&c=97&c=122)【1.28】十进制 3 位数整数 x,下面哪条语句能正确分离出它的十位上的数字 d? A. d=(x/10)%10; B. d=x%10; C. d=(x-x%10)/10; D. d=x%100;【1.29】在 C 语言中对下面的语句而言,哪个说法是错误的?int a, b; A. 变量 a 和 b 中的值都是未知的随机数 B. a 和 b 都是整型变量 C. 变量 a 和 b 占用的内存空间的大小是相同的 D. 变量 a 和 b 中的值都是 0【1.30】程序运行后的输出
10、结果是#include int main() int m=3,n=4,x; x=m+; +n; x=x+8/n; printf(%d,%dn,x,m); return 0; A. 4,4 B. 5,3 C. 4,3 D. 5,4【1.31】下面程序的运行结果是#include int main() int a = 2, b = 3 ; float x = 3.5, y = 2.5 ; printf(%f, (float)(a+b) / 2 + (int)x % (int)y) ; return 0; A. 3 B. 3.500000 C. 3.5 D. 3.000000【1.32】以下非法的赋
11、值语句是 A. n=+i; B. +(i+1); C. j+; D. x=(j-);【1.33】设 a 和 b 均为 double 型变量,且 a=5.5、b=2.5,则表达式(int)a+b/b 的值是 A. 6 B. 6.000000 C. 5.500000 D. 6.500000【1.34】在 C 语言中,要求操作数必须是整型的运算符是 A. * B. - C. + D. %【1.35】判断 char 型变量 ch 是否为大写字母的正确表达式是 .A)AchZ B)(cbA)(chZ)C)(chA)&(chZ) D)(Ach)AND(Z=ch)【1.36】已知 int x=5,y=5,z
12、=5;执行语句 x%=y+z;后,x 的值是_。A) 0 B) 1 C) 5 D) 6【1.37】使用语句 scanf(x=%f,y=%f,&x,&y);输入变量 x、y 的值(代表空格) ,正确的输入是_。A) 1.25,2.4 B) 1.252.4 C) x=1.25,y=2.4 D) x=1.25y=2.4【1.38】下列循环语句中有语法错误的是_。A) while(x=y) 5; B) while(0) ;C) do 2;while(x=b); D) do x+ while(x=10);【1.39】有如下语句,为使变量 a 的值为 1,b 的值为 2,从键盘输入数据的正确形式是scan
13、f(a=%d,b=%d,&a,&b)A. a=1 b=2 B. 1,2 C. a=1,b=2 D. 1 2【1.40】以下程序的输出结果为#include int main() float a = 1234.567,b = 55.32; printf(a = %4.2f, b = %5.1fn, a,b); return 0; A. a = 1234.6, b = 5.32 B. a =1234, b =55C. a =1234.567, b = 55.32 D. a = 1234.57, b = 55.3【1.41】以下关于运算符优先顺序的描述中正确的是 .A)关系运算符算术运算符赋值运算符
14、逻辑与运算符B)逻辑与运算符关系运算符算术运算符赋值运算符C)以赋值运算符逻辑与运算符关系运算符算术运算符D)算术运算符关系运算符赋值运算符逻辑与运算符【1.42】已知:int x,y;double z;则以下语句中错误的函数调用是 。A) scanf (%d,%lx,%le,&x,&y,&z); B) scanf (%2d*%d%lf,&x,&y,&z);C) scanf (%x%*d%o,&x,&y); D) scanf (%x%o%6.2f,&x,&y,&z);【1.43】与条件表达式(n)?(c+):(c-)中的表达式(n)等价的表达式是_。A) (n=0) B) (n=1) C) (
15、n!=0) D) (n!=1)【1.44】以下正确的描述是A. 在循环体内使用 break 语句或 continue 语句的作用相同 B. continue 语句可以写在循环体之外C. 只能在循环体内和 switch 语句体内使用 break 语句D. continue 语句的作用是结束整个循环的执行【1.45】C 语言中 while 和 do-while 循环的主要区别是 .A)do-while 的循环体至少无条件执行一次B)while 的循环控制条件比的循环控制条件严格C)do-while 允许从外部转到循环体内D)do-while 的循环体不能是复合语句【1.46】设已定义 i 和 k
16、为 int 类型变量,则以下 for 循环语句1.for(i=0,k=-1;k=1; i+,k+)2. printf( * * * *n);A. 判断循环结束的条件不合法 B. 是无限循环C. 循环只执行一次 D. 循环一次也不执行【1.47】下列说法中正确的是 A. 函数只有一个返回值,所以不能有多个 return 语句。 B. 无论何种情况,只要把用户自定义的所有函数都放在 main 函数的前面,就可以不用写函数原型了。 C. 函数原型是一条语句,不包括函数体。 D. 在 C 语言中,只有当实参与其对应的形参同名时,才共占同一个存储单元,此时形参值的变化会影响到实参的值。【1.48】若已定
17、义的函数有返回值,则以下关于该函数调用的叙述中错误的是 A. 函数调用可以作为独立的语句存在 B. 函数调用可以作为一个函数的形参 C. 函数调用可以出现在表达式中 D. 函数调用可以作为一个函数的实参【1.49】以下程序有语法错误,有关错误原因的正确说法是1.#include 2.void prt_char( );3.int main( )4.5.int G=5,k;6.7.k=prt_char(G);8.9.return 0;10.11.int prt_char(int x)12.13.14. A. 函数 prt_char(int x)定义的位置不对,不能放在主函数 main()的后面。
18、B. 变量名不能使用大写字母 C. 函数原型和函数定义不匹配 D. 函数名不能使用下划线【1.50】若用数组名作为函数调用时的实参,则实际上传递给形参的是 。A) 数组首地址 B) 数组的第一个元素值C) 数组中全部元素的值 D) 数组元素的个数【1.51】对二维数组的正确说明是_。A) int a=1,2,3,4,5,6; B) int a2=1,2,3,4,5,6;C) int a3=1,2,3,4,5,6; D) int a2,3=1,2,3,4,5,6;【1.52】对字符数组 s 赋值,不合法的一个是_。A) char s=Beijing; B) char s20=beijing;C)
19、 char s20;s=Beijing; D) char s20=B,e,i,j,i,n,g;【1.53】对字符数组 str 赋初值,str 不能作为字符串使用的一个是_。A) char str=shanghai;B) char str=shanghai; C) char str9=s,h,a,n,g,h,a,i;D) char str8= s,h,a,n,g,h,a,i;【1.54】对函数形参的说明有错误的是_。A) int a(float x,int n) B) int a(float *x,int n)C) int a(float x10,int n) D) int a(float x,
20、int n)【1.55】如果一个变量在整个程序运行期间都存在,但是仅在说明它的函数内是可见的,这个变量的存储类型应该被说明为_。A) 静态变量 B) 动态变量 C) 外部变量 D) 内部变量【1.56】在一个 C 源程序文件中, 若要定义一个只允许在该源文件中所有函数使用的变量,则该变量需要使用的存储类别是 。A) extern B) register C) auto D) static【1.57】在 C 语言中,函数的数据类型是指_。A) 函数返回值的数据类型 B) 函数形参的数据类型C) 调用该函数时的实参的数据类型 D) 任意指定的数据类型【1.58】二维数组 a 有 m 行 n 列,则
21、在 aij之前的元素个数为 A. j*n+i B. i*n+j+1 C. i*n+j D. i*n+j-1 【1.59】定义一个函数实现交换 x 和 y 的值,并将结果正确返回。能够实现此功能的是_。A) swapa(int x,int y) B) swapb(int *x,int *y) int temp; int temp;temp=x;x=y;y=temp; temp=x;x=y;y=temp; C) swapc(int *x,int *y) D) swapd(int *x,int *y) int temp; int *temp;temp=*x;*x=*y;*y=temp; temp=x
22、;x=y;y=temp; 【1.60】求一个角的正弦函数值的平方。能够实现此功能的函数是_。A) sqofsina(x) float x; return(sin(x)*sin(x);B) double sqofsinb(x)float x; return(sin(double)x)*sin(double)x);C) double sqofsinc(x) return(sin(x)*sin(x);D) sqofsind(x)float x; return(double(sin(x)*sin(x); 【1.61】一个函数内有数据类型说明语句如下:double x,y,z(10);关于此语句的解释,
23、下面说法正确的是_。A) z 是一个数组,它有 10 个元素。B) z 是一个函数,小括号内的 10 是它的实参的值。C) z 是一个变量,小括号内的 10 是它的初值。D) 语句中有错误。【1.62】已知函数定义如下:float fun1(int x,int y) float z;z=(float)x/y;return(z);主调函数中有 int a=1,b=0;可以正确调用此函数的语句是_。A) printf(%f,fun1(a,b); B) printf(%f,fun1(&a,&b);C) printf(%f,fun1(*a,*b); D) 调用时发生错误【1.63】下面函数的功能是_。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 经典 考试 习题 答案 详解
限制150内