《C语言练习题(答案).pdf》由会员分享,可在线阅读,更多相关《C语言练习题(答案).pdf(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、省高等学校计算机等级考试(二级C 语言)选择题试题库答案试题C 1.在 C 语言源程序中,以下叙述正确的是()。A.main 函数必须位于文件的开头 B.每行只能写一条语句 C.程序中的一个语句可以写成多行 D.每个语句的最后必须有点号C 2.关于 C 语言的源程序的叙述中,错误的是()。A.C 语言的源程序由函数构成 B.main 函数可以书写在自定义函数之后 C.必须包含有输入语句 D.一行可以书写多个语句C 3.关于 C 语言数据类型的叙述,正确的是()。A.枚举类型不是基本类型 B.数组不是构造类型 C.变量必须先定义后使用 D.不允许使用空类型C 4.C 程序中 main 函数的位置
2、()。A.必须在最开始 B.必须在系统库函数后面 C.可以在自定义函数后面 D.必须在最后B 5.C 语言的函数体由()括起来。A.()B.C.D./*/D 6.关于 C 语言的叙述中,不正确的是()。A.C 程序可由一个或多个函数组成 B.C 程序必须包含一个main()函数 C.C 程序的基本组成单位是函数 D.注释说明只能位于一条语句的后面D 7.以下叙述不正确的是()。A.C 程序的执行总是从main 函数开始 B.一个 C 源程序必须包含一个main 函数 C.C 语言程序的基本组成单位是函数 D.在编译 C 程序源程序时,可发现注释中的拼写错误C 8.结构化程序设计的三种基本结构是
3、()。A.函数结构、分支结构、判断结构 B.函数结构、嵌套结构、平行结构 C.顺序结构、分支结构、循环结构 D.分支结构、循环结构、嵌套结构C 9.对于 C 语言源程序,以下叙述错误的是()。A.可以有空语句 B.函数之间是平等的,在一个函数部不能定义其它函数 C.程序调试时如果没有提示错误,就能得到正确结果 D.注释可以出现在语句的前面D 10.下面关于C 语言用户标识符的描述,正确的是()。A.不区分大小写 B.用户标识符不能描述常量 C.类型名也是用户标识符 D.用户标识符可以作为变量名D 11.以下()是正确的变量名。A.5f B.if C.f.5 D._f5 D 12.以下()是正确
4、的常量。A.E-5 B.1E5.1 C.a12 D.32766L D 13.以下()是正确的变量名。A.a.bee B.-p11 C.int D.p_11 C 14.以下()是正确的字符常量。单引号括起来 A.c B.C.W D.32a A 15.以下()是不正确的字符串常量。双引号括起来 A.abc B.1212 C.0 D.B 16.以下()是错误的整型常量。A.-0 xcdf B.018/八进制数不能超过8 C.0 xe D.011 B 17.以下()是正确的浮点数。A.e3/e 前面必须有数字,指数必须为整数 B.62 C.2e4.5 D.123 A 18.若有说明语句:char c=
5、95;则变量 c 包含()个字符。A.1 ddd:表示 1 到 3 位八进制数所代表的字符 B.2 xhh 表示1 到 2 位十六进制数所代表的字符 C.3 D.语法错误A 19.若有定义:int a=2;则正确的赋值表达式是()。A.a-=(a*3)B.double(-a)/(double)(-a)C.a*3 D.a*4=3 C 20.语句 x=(a=3,b=+a);运行后,x、a、b 的值依次为()。A.3,3,4/逗号运算符及逗号表达式 B.4,4,3 C.4,4,4 D.3,4,3 B 21.语句 a=(3/4)+3%2;运行后,a 的值为()。A.0 B.1/注意除号/两边均为整型时
6、,结果为整数(不含小数点)C.2 D.3 A 22.char 型变量存放的是()。/考查变量类型 A.ASCII 代码值 B.字符本身 C.十进制代码值 D.十六进制代码值C 23.若有定义:int x,a;则语句 x=(a=3,a+1);运行后,x、a的值依次为()。A.3,3/考查逗号表达式及逗号运算符 B.4,4 C.4,3 D.3,4 B 24.若有定义:int a;则语句 a=(3*4)+2%3;运行后,a的值为()。A.12 B.14 C.11 D.17 A 25.若有定义:int a,b;double x,则以下不符合C 语言语法的表达式是()。A.x%(-3)/%两侧均应为整型
7、数据 B.a+=-2 C.a=b=2 D.x=a+b B 26.若有定义:int x=2,y=3;float i;,则以下符合C 语言语法的表达式是()。A.x=x*3=2/x*3 不是一个变量名 B.x=(y=1)C.i=float(x)/应改为 i=(float)x D.i%(-3)/%两侧均应为整型数据C 27.设 double 型变量 a,b,c,e均有值;对代数式(3ae)/(bc),不正确的 C 语言表达式是()。A.a/b/c*e*3 B.3*a*e/b/c C.3*a*e/b*c/改为 3*a*e/b/c D.a*e/c/b*3 B 28.下面叙述正确的是()。A.2/3 与
8、2.0/3.0 等价 B.(int)2.0/3 与 2/3 等价 C.+5 与 6 等价/单独写+5 是错误的,可以写成a=+5 D.A 与A 等价A 29.下面叙述中,错误的是()。A.其算术运算对象不包含函数 B.%(模运算符)的运算对象只能为整型量 C.算术运算符的结合方向是自左至右 D.自加和自减运算符的结合方向是自右至左 A 30.下面叙述正确的是()。/+-只能用于变量,而不能用于常量或表达式 A.强制类型转换运算的优先级高于算术运算 B.若 a和 b 是整型变量,(a+b)+是合法的 C.A*B 是不合法的 D.A+B 是合法的B 31.若有定义:int k,i=2,j=4;则表
9、达式 k=(+i)*(j-)的值是()。A.8 B.12/注意前缀后缀的区别 C.6 D.9 C 32.设整型变量a 为 5,使 b 不为 2 的表达式是()。A.b=(+a)/3 B.b=6-(-a)C.b=a%2/结果为 1 D.b=a/2 C 33.若有定义:int a=1,b=2,c=3;则语句 +a|+b&+c;运行后 b 的值为()。A.1 B.0 C.2/注意运算的不完全性 D.3 B 34.若有定义:int i,j;则表达式(i=2,j=5,i+,i+j+)的值是()。A.7 B.8 C.9 D.10 B 35.若有定义:int a,b;则表达式(a=2,b=5,a*2,b+,
10、a+b)的值是()。A.7 B.8 C.9 D.10 B 36.若有定义:int m=5,n=3;则表达式(m+1,n+1,(-m)+(n-)的值是()。A.6 B.7 C.8 D.9 B 37.已知 int a;使用 scanf()函数输入一个整数给变量a,正确的函数调用是()。A.scanf(%d,a);B.scanf(%d,&a);C.scanf(%f,&a);D.scanf(%lf,&a);D 38.已知 double a;使用 scanf()函数输入一个数值给变量a,正确的函数调用是()。A.scanf(%ld,&a);B.scanf(%d,&a);C.scanf(%7.2f,&a)
11、;/输入数据时不能规定精度 D.scanf(%lf,&a);B 39.已知 char a;使用 scanf()函数输入一个字符给变量a,不正确的函数调用是()。A.scanf(%d,&a);B.scanf(%lf,&a);/字符型变量与整型等价,但不与浮点型等价 C.scanf(%c,&a);D.scanf(%u,&a);B 40.putchar()函数的功能是向终端输出()。/char*str0;.;puts(str0);A.多个字符 B.一个字符 C.一个实型变量值 D.一个整型变量表达式D 41.getchar()函数的功能是从终端输入()。A.一个整型变量值 B.一个实型变量值 C.多
12、个字符 D.一个字符D 42.若有定义:int x=1234,y=123,z=12;则语句 printf(%4d+%3d+%2d,x,y,z);运行后的输出结果为()。A.123412312 B.2 C.1234+1234+1234 D.1234+123+12 A 43.已有如下定义和输入语句,int a;char c1,c2;scanf(%d%c%c,&a,&c1,&c2);若要求 a、c1、c2 的值分别为10、A 和 B,正确的数据输入是()。A.10AB/输入数据时,遇空格、回车、TAB、及非法输入或按规定的宽度结束 B.10 A B C.10A B D.10 AB B 44.已有如下
13、定义和输入语句:int a,b;scanf(%d,%d,&a,&b);/“格式控制”字符串中除了格式说明还有其他字符,则输入/时应在相应位置输入若要求 a、b 的值分别为10 和 20,正确的数据输入是()。A.10 20 B.10,20 C.a=10,b=20 D.10;20 D 45.以下程序的运行结果是()。void main()int a=65;char c=A;printf(%x,%d,a,c);A.65,a B.41,a C.65,65 D.41,65 A 46.下面叙述中,()不是结构化程序设计中的三种基本结构之一。A.数据结构 B.选择结构 C.循环结构 D.顺序结构A 47.
14、下面叙述中,()不是结构化程序设计三种基本结构的共同特点。A.先判断后执行 B.单入口,单出口 C.程序中没有执行不到的语句 D.无死循环A 48.结构化程序设计不包括()。A.最优化 B.自顶而下,逐步细化 C.模块化设计 D.结构化编码D 49.以下运算符中优先级最高的是()。A.B.|C.&D.+/初等运算符()单目算术 关系逻辑(不含!)赋值逗号A 50.若有定义:int x=3,y=4;则表达式 !x|y 的值为()。A.1 B.O C.3 D.4 A 51.若有定义:int i=7,j=8;则表达式 i=j|ij 的值为()。A.1 B.变量 i 的值 C.0 D.变量 j 的值C
15、 52.若希望当a 的值为奇数时,表达式的值为真,a 的值为偶数时,表达式的值为 假。则不能满足要求的表达式是()。A.a%2=1 B.!(a%2=0)C.!(a%2)D.a%2 D 53.若有定义:int x=3,y=4,z=5;则值为 0 的表达式是()。A.x&y B.x=y C.x|y+z&y-z D.!(xy)&!z|1)/考查运算符优先级A 54.若有定义:int a=5,b=2,c=1;则表达式a-bb)&(y=cd)的值为()。A.0 B.1 C.5 D.6 A 61.若有定义:int a=2,b=3;float x=3.5,y=2.5;则表达式(float)(a+b)/2+(
16、int)x%(int)y的值是()。/(float)(a+b)/2=2.5 A.3.5 B.3.0 C.2.5 D.2.0 C 62.若有定义:int b=7;float a=2.5,c=4.7;则表达式 a+(b/2*(int)(a+c)/2)%4的值是()。A.2.5/(b/2*(int)(a+c)/2)=10 注意运算顺序 B.3.5 C.4.5 D.5.5 C 63.若有定义:int a=6,b=2;char c1=a,c2=b;则表达式a+b%5+c2-c1 的值是()。A.7 B.8 C.9 D.表达式错误B 64.以下的 if 语句中,x 的值一定被重新赋值的是()。A.if(x
17、=y)x+=y;B.if(xy&x!=y);/注意 if 语句后的空语句;x+=y;C.if(x!=y)scanf(%d,&x);else scanf(%d,&y);D.if(xy)z=x+y;else z=x-y;A.3 B.-1 C.4 D.不确定D 68.若有定义:int a=1,b=2,c=3;则执行以下程序段后a,b,c 的值分别为()。if(a=6)printf(%dn,n);else printf(%dn,+n);A.4 B.5 C.6 D.7 B 73.设有整型变量x,下述语句()不会出现死循环。A.for(;x+=1);B.for(;(x=getchar()!=n;);C.w
18、hile(1)x+;D.for(x=10;x-);B 74.对于整型变量x,与 while(!x)等价的是()。A.while(x!=0)B.while(x=0)C.while(x!=1)D.while(x)A 75.对于整型变量x 和 y,语句 for(x=0,y=0;(y!=123)&(x4);x+)y+;中的“y+;”被执行()。A.4 次 B.0 次 C.123 次 D.3 次B 76.在 c 语言中 while 循环和 do-while 循环的主要区别是()。A.do-while 循环体可以使用break 语句,while 循环体不能使用break语句 B.do-while 的循环体
19、至少无条件执行一次,while 的循环体不是 C.do-while 循环体可以使用continue 语句,while 循环体不能使用continue 语句 D.while 的循环体至少无条件执行一次,do-while 的循环体不是B 77.以下程序段运行后,循环体运行的次数为()。int i=10,x;for(;i10;i+)x=x+i;A.10 B.0 C.1 D.无限D 78.以下程序段运行后变量n 的值为()。int i=1,n=1;for(;i3;i+)continue;n=n+i;A.4 B.3 C.2 D.1 B 79.以下程序的运行结果是()。void main()int sum
20、=0,item=0;while(item 5)item+;sum+=item;if(sum=5)break;printf(%dn,sum);A.10 B.15 C.5 D.6 C 80.以下程序的运行结果是()。void main()int sum=0,item=0;while(item=6)break;printf(%dn,sum);A.10 B.15 C.6 D.7 B 81.以下程序的运行结果是()。void main()int sum=0,item=0;while(item 5)item+;if(item=2)continue;sum+=item;printf(%dn,sum);A.1
21、0 B.13 C.15 D.1 A 82.下列数组定义中,正确的是()。A.int a5=0;B.int a=0 1 2;/int a=0,1,2;注意元素与元素之间加逗号 C.int a5=0;/int a5=0;D.int a;/必须指明数组大小A 83.下列数组定义中,正确的是()。A.int a10;B.int n=10,an;/下标必须是常量表达式 C.int N=10;int aN;D.int n;scanf(%d,&n);int an;A 84.已知 int a10;则对 a 数组元素引用不正确的是()。A.a10/10 个元素的数组下标围从0 到 9,故此题越界 B.a3+5
22、C.a10-10/引用数组元素时,下标可以是整型常量或整型表达式 D.a5 B 85.若有定义:int a3=0,1,2;则 a1的值为()。A.0 B.1 C.2 D.3 A 86.若有定义:int a5=1,2,3,4,5;则语句a1=a3+a2+2-a3-1;运行后a1的值为()。A.6 B.5 C.1 D.2 D 87.以下能对一维数组a 进行正确初始化的语句是()。A.int a5=(0,0,0,0,0);B.int a5=0;/注意使用大括号 C.int a5=1,2,3,4,5,6,7;/多余 2 个 D.int a=0;/定义一个只有一个元素的一维数组,指为0D 88.下面程序
23、段的运行结果是()。int i=0,a=3,4,5,4,3;do ai+;while(a+i5);for(i=0;i5);for(i=0;i2);for(i=0;i5;i+)printf(%d,ai);A.11 2 3 4 5 B.1 2 3 4 5 C.11 12 13 14 15 D.11 12 3 4 5 C 91.设有如下程序段:int a33=1,0,2,1,0,2,1,0,1,i,j,s=0;for(i=0;i3;i+)for(j=0;ji;j+)s=s+aij;则执行该程序段后,s 的值是()。A.0 B.1 C.2 D.3 B 92.有如下定义 int a3=1,2,3,4,5
24、,6,7,8;/考查二维数组的初始化则数组 a 的行数是()。A.2 B.3 C.4 D.无法确定的D 93.以下数组定义中,正确的是()。A.int a23=1,2,3,4,5,6,7;/多余 1 个 B.int a=1,2,3,4,5,6,7,8,9;/第二维长度不能省 C.int a2=1,2,3,4,5,6;D.int a4=6;A 94.若有定义:int a34=1,2,0,1,2,3;则 a11 的值为()。A.0 B.1,2 C.1 D.3 A 95.若有定义:int a33;则表达式&a21-a的值为()。A.7/&a21-a 代表两者之间的元素个数,类似指向同种类型的指针相减
25、 B.8 C.6 D.9 C 96.若有定义:int i=0,x=0;int a33=1,2,3,4,5,6,7,8,9;则以下程序段运行后x 的值为()。for(;i字符串 2,返回一个正整数,否则返回负整数 B.0/strcmp(str1,str2)C.-1 D.2 B 106.以下程序段运行后屏幕输出为()。char str=abcd;注意代表一个反斜杠字符 printf(%d,strlen(str);A.4 B.5 C.6 D.7 A 107.以下程序段运行后屏幕输出为()。char str80;strcpy(str,hello);printf(%d,strlen(str);A.5 B
26、.6 C.7 D.80 B 108.若有定义:char str16=abcdm,*ps,*str2=abcdef;()是正确的。A.strcpy(str1,str2);B.表达式 strcmp(str1,str2)的值大于 0 C.str1=str2;D.表达式 strlen(str1)的值为 6 A 109.设有如下函数定义:int fun(char*str)char*p=str;while(*p!=0)p+;return(p-str);则以下语句执行后的输出结果是()。/返回字符串个数printf(%dn,fun(Student);A.7 B.8 C.9 D.10 A 110.以下程序的运
27、行结果是()。int fun(int array44)int j;for(j=0;j4;j+)printf(%2d,array2j);printf(n);main()int a44=0,1,2,0,1,0,0,4,2,0,0,5,0,4,5,0;fun(a);A.2 0 0 5 B.1 0 0 4 C.0 1 2 0 D.0 4 5 0 C 111.如下 fun 函数的类型是()。fun(float x)double y;int z;y=x*x;z=(int)y;return(z);A.void B.double C.int D.float B 112.以下程序运行后屏幕输出为()。#incl
28、ude int f(int x,int y)return(x+y);main()int a=2,b=3,c;c=f(a,b);printf(%d+%d=%dn,a,b,c);A.0 B.2+3=5 C.2+3=0 D.3+2=5 D 113.以下程序运行后屏幕输出为()。/考查全局变量与局部变量的区别及围#include int a=2,b=3;int max(int a,int b)int c;c=ab?a:b;return(c);main()int a=4;printf(%d,max(a,b);A.2,3 B.2 C.3 D.4 B 114.以下程序运行后屏幕输出为()。#include
29、void f(int i)/两个函数中的a 不一样 int a=2;a=i+;printf(%d,a);main()int a=1,c=3;f(c);a=c+;printf(%d,a);A.4,3 B.3,3 C.4,5 D.3,5 D 115.若有如下函数定义:/注意静态变量的使用int fun()static int k=0;return+k;以下程序段运行后屏幕输出为()。int i;for(i=1;i=5;i+)fun();printf(%d,fun();A.0 B.1 C.5 D.6 D 116.下面程序的输出结果是()。#include int global=100;fun()in
30、t global=5;return+global;void main()printf(%dn,fun();A.100 B.101 C.5 D.6 B 117.下列关于C 语言函数的描述中,正确的是()。A.函数的定义可以嵌套,但函数的调用不可以嵌套 B.函数的定义不可以嵌套,但函数的调用可以嵌套 C.函数的定义和函数的调用都可以嵌套 D.函数的定义和函数的调用都不可以嵌套D 118.若有以下宏定义,#define MOD(x,y)x%y 则执行以下程序段后,z 的值是()。int z,a=15,b=100;z=MOD(b,a);A.100 B.15 C.11 D.10 B 119.以下叙述中,
31、正确的是()。A.“#define PRICE=30”定义了与30 等价的符号常量PRICE B.预编译处理命令行都必须以“#”开头 C.宏名只能包含大写字母和数字字符/可以包括小写字母 D.在程序的一行上可以书写几个有效的宏定义A 120.以下叙述中,正确的是()。A.宏展开不占用运行时间,只占用编译时间 B.预编译处理命令行必须以分号结束 C.一个源程序只能有一个预编译处理命令行 D.使用带参数的宏定义时,应该说明每个参数的数据类型C 121.以下的叙述中不正确的是()。A.宏展开不占用运行时间,只占用编译时间 B.宏名无类型 C.宏名必须用大写字母表示 D.预处理命令行都必须以#号开始A
32、 122.若有定义:#define PI 3,则表达式PI*2*2 的值为()。A.12 B.4 C.3 D.不确定C 123.以下程序运行后,屏幕输出为()。#define MIN(a,b)(a)(b)?(a):(b)main()int x=2,y=3,z;z=2*MIN(x,y);printf(%d,z);A.2 B.3 C.4 D.6 A 124.下面程序的输出结果是()。#include#define SQR(x)(x*x)void main()int a,b=3;a=SQR(b+2);printf(n%d,a);A.11 B.25 C.不定值 D.产生错误C 125.下面程序的输出结
33、果是()。#include#define ONE 1#define TWO ONE+1#define THREE TWO+1 void main()printf(%dn,THREE-ONE);A.产生错误 B.1 C.2 D.3 B 126.以下叙述中正确的是()。A.预处理命令行必须位于C 源程序的起始位置 B.在 C 语言中,预处理命令行都以#开头 C.每个 C 程序必须在开头包含预处理命令行:#include D.C 语言的预处理不能实现宏定义和条件编译的功能D 127.设有以下语句,则()是对 a 数组元素的不正确引用,其中0i10。int a10=0,1,2,3,4,5,6,7,8,
34、9,*p=a;A.ap-a B.*(&ai)C.pi D.*(*(a+i)C 128.对于基类型相同的两个指针变量之间,不能进行的运算是()。A.B.=C.+D.-B 129.执行以下程序段的输出结果是()。int a=10,*p=&a;printf(%d,+*p);A.10 B.11 C.变量 a 的地址 D.变量 a 的地址 +1 A 130.以下程序段运行后*(p+3)的值为()。char a=good;char*p;p=a;A.d B.0 C.存放 d的地址 D.o C 131.以下程序段运行后*(+p)的值为()。char a5=work;char*p;p=a;A.w B.存放 w的
35、地址 C.o D.存放 o的地址B 132.若有定义:int*p,a=4;p=&a;则以下均代表地址的是()。A.a,p B.&a,p C.&a,*p D.a,*p D 133.若有说明语句:double*p,a;则能通过scanf 语句正确给输入项读入数据的程序段是()。A.*p=&a;scanf(%lf,p);B.*p=&a;scanf(%lf,*p);C.p=&a;scanf(%lf,*p);D.p=&a;scanf(%lf,p);A 134.在 16 位编译系统上,若有定义int a=10,20,30,*p=&a;当执行 p+;后下列叙述错误的是()。A.p 向高地址移了一个字节 B.
36、p 与 a+1 等价 C.语句 printf(%d,*p);输出 20 D.p 指向数组元素a1 B 135.下面语句正确的是()。A.int*p;*p=20;B.char*s=abcdef;printf(%sn,s);C.char str=abcd;str+;/数组名不能改变 D.char str=a,b,c;printf(%s,str);/%s 输出字符串,必须以 0 结束D 136.若有以下程序段,且0i4,0j3,则不能正确访问a 数组元素的是()。int i,j,(*p)3;int a3=1,2,3,4,5,6,7,8,9,10,11,12;p=a;A.*(*(a+i)+j)B.pi
37、j C.(*(p+i)j D.pi+j B 137.若函数 fun 的函数头为:int fun(int i,int j)且函数指针变量p 定义如下:int(*p)(int i,int j);则要使指针p 指向函数fun 的赋值语句是()。A.p=*fun;B.p=fun;C.p=fun(i,j);D.p=&fun;D 138.设有如下变量定义:char aa3=a,b,c,d,e,f;char(*p)3=aa;则以下程序段的运行结果是()。p+;printf(%c,*p);A.a B.b C.c D.d D 139.以下程序段运行后x 的值为()。int a=1,2,3,4,5,6,7,8;i
38、nt i,x,*p;x=1;p=&a2;for(i=0;i3;i+)x*=*(p+i);A.不确定 B.24 C.120 D.60 B 140.以下程序段运行后x 的值为()。int a=1,2,3,b=4,2,5;int*p,*q;int i,x;p=a;q=b;for(i=0;i3;i+)if(*(p+i)=*(q+i)x=*(p+i)*2;A.2 B.4 C.6 D.不确定C 141.以下程序段运行后x 的值为()。int a9=1,2,3,4,5,6,3,8,9;int*p,*q;int i,x;p=&a0;q=&a8;for(i=0;i3;i+)if(*(p+i)=*(q-i)x=*
39、(p+i)*2;A.2 B.4 C.6 D.不确定A 142.下面程序的输出结果是()。#include void main()int i;char*s=abc;for(i=0;i3;i+)printf(%sn,s+i);A.abc bc c B.c bc abc C.abc c bc D.a ab abc A 143.下面程序的输出结果是()。#include void main()char*str=12345,*ps=str+4;printf(%cn,ps-4);A.1 B.2 C.3 D.错误A 144.以下程序执行时,输入1 2 3 4 5,输出为:#include#define N
40、5 void main()int aN;int*p=a;while(pa)printf(%d,*(-p);A.5 4 3 2 1 B.1 2 3 4 5 C.2 3 4 5 1 D.4 3 2 1 5 C 145.设有以下定义语句:struct student int num;char name10;float score;wang,zhang;则不正确的叙述是()。A.struct 是结构体类型的关键字 B.zhang 是结构体变量名 C.wang 是结构体类型名 D.num,name,score 都是结构体类型student 的成员名B 146.设有以下定义语句:struct studen
41、t int num;char name10;float score;wang,zhang;则变量 wang 所占的存字节数是()。A.14 B.16 C.18 D.20 B 147.设有如下定义语句:union u_type int i;/二个字节 double x;/八个字节 float f;/四个字节 ;struct str_type char str100;union u_type u2;则语句“printf(%d,sizeof(struct str_type);”的输出结果是()。A.100 B.116 C.120 D.200 C 148.若有定义:struct teacher int
42、 num;char name10;char sex;int age;float score;teacher1;则变量 teacher1所占用的存字节数是()。A.5 B.14 C.19 D.20 C 149.下列对结构体类型变量定义不正确的是()。A.struct teacher int num;int age;teach1;B.struct int num;int age;teach1,teach2;C.struct int num;int age;teacher;struct teacher teach1;D.struct teacher int num;int age;struct te
43、acher teach1;D 150.若有定义:struct teacher int num;char sex;int age;teacher1;则下列叙述不正确的是()。A.struct 是结构体类型的关键字 B.struct teacher 是用户定义的结构体类型 C.num,sex,age都是结构体变量teacher1的成员 D.teacher1 是结构体类型名D 151.以下程序的运行结果是()。#include union Utype int i;float f;u2;void main()printf(sizeof(u):%dn,sizeof(u);A.2 B.4 C.6 D.8
44、D 152.以下程序的运行结果是()。#include union Utype int i;float f;struct char ch2;int i;union Utype u;a;void main()printf(sizeof(a):%dn,sizeof(a);A.5 B.6 C.7 D.8 D 153.以下 C 语言共用体类型数据的描述中,不正确的是()。A.共用体变量占的存大小等于所需存最大的成员所占的存 B.共用体类型可以出现在结构体类型定义中 C.在定义共用体变量的同时允许对第一个成员的值进行初始化 D.同一共用体中各成员的首地址不相同A 163.对枚举类型进行定义,不正确的是(
45、)。A.enum b1,2,3;/用户定义的标识符不能以数字开头 B.enum aA,B,C;C.enum cD=3,E,F;D.enum dX=0,Y=5,Z=9;C 164.假定已有如下变量说明和枚举定义:char ch;int j,k;enum daysun,mon,tue,wed,thu,fri,sat;int asat;判断下列语句是否符合语法规则,结果是()。char a;/*语句 1*/j+k=j;/*语句 2*/if(amon0)j+;/*语句 3*/A.语句 2 错误,其它正确 B.语句 1 正确,其它错误 C.语句 3 正确,其它错误 D.语句 1 错误,其它正确C 165
46、.设有如下定义:typedef int*INTEGER;INTEGER p,*q;则()是正确的叙述。A.p 是 int 型变量 B.q 是基类型为int 的指针变量 C.p 是基类型为int 的指针变量 D.程序中可用INTEGER 代替 int 类型名A 166.在对于无符号数的位运算中,操作数右移一位相当于()。A.操作数除以2 B.操作数乘以2 C.操作数除以4 D.操作数乘以4 C 167.若有定义:int a=20,b=28,c;则执行语句c=(ab)2;后 c 的值为()。A.5 B.7 C.80 D.112 B 169.下面程序的输出结果为()。#include void ma
47、in()enum Weekdaysun=7,mon=1,tue,wed,thu,fri,sat;enum Weekday day=sat;printf(%dn,day);A.7 B.6 C.5 D.4 C 170.若有以下类型说明,叙述正确的是()。typedef struct int num;char*name;int score;STU,*PSTU;A.STU 是变量名 B.PSTU 是变量名 C.PSTU 是指向结构体类型STU 的指针类型名 D.类型说明语句有错误C 171.下面程序段的运行结果是()。int a=5,b=6;printf(%d,a|b);A.5 B.6 C.7 D.8
48、 C 172.以下程序的功能是()。#include main()FILE*fp;long int n;fp=fopen(wj.txt,rb);fseek(fp,0,SEEK_END);n=ftell(fp);fclose(fp);printf(%ld,n);A.计算文件wj.txt 的起始地址 B.计算文件wj.txt 的终止地址 C.计算文件wj.txt 容的字节数 D.将文件指针定位到文件末尾B 173.标准函数fgets(s,n,f)的功能是()。A.从文件 f 中读取长度为n 的字符串存入指针s 所指的存 B.从文件 f 中读取长度不超过n-1 的字符串存入指针s 所指的存 C.从文
49、件 f 中读取 n 个字符串存入指针s所指的存 D.从文件 f 中读取长度为n-1 的字符串存入指针s 所指的存A 174.以下程序的可执行文件名是file.exe。main(int argc,char*argv)int i;for(i=2;iargc;i+)printf(%s%c,argvi,(iargc-1)?:n);在 DOS 命令行输入:file My C Language and Programming,其输出结果是()。A.C Language and Programming B.My C Language and Programming C.MyCLanguageandProgr
50、amming D.file My C Language and Programming C 175.以下程序的可执行文件名为tt.exe,若程序运行后屏幕显示:3,We are,则在 DOS提示符下输入的命令是()。void main(int argc,char*argv)int i;printf(%d,argc);for(i=1;iargc;i+)printf(%s,argvi);A.tt B.tt We C.tt We are D.tt We are happy!D 176.以下程序运行后,屏幕显示write ok!,下列说确的是()。#include main()FILE*fp;fp=f