《C语言程序设计》吉大20秋考前辅导答案百分
《C语言程序设计》考前练兵1. 以下程序的输出结果是 #include "stdio.h"void reverse(int a[],int n){ int i,t; for(i=0;it=a;a=a;a=t; }}main(){ int b={1,2,3,4,5,6,7,8,9,10}; int i,s=0; reverse(b,8); for(i=6;i printf("%d\n",s);} A.22 B.10 C.34
答案资料下载请参考帮助中心说明
D.30 答:——A——
2. 假定以下程序经编译和连接后生成可执行文件PROG.EXE,如果在此可执行文件所在目录的DOS提示符下键入: PROG ABCDEFGH IJKL,则输出结果为 main( int argc, char *argv[]) { while(--argc>0) printf("%s",argv[argc]); printf("\n"); }
A.ABCDEFG B.IJHLC.ABCDEFGHIJKL D.IJKLABCDEFGH 答:——D——
3. 下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,请选择填空。 #include "stdio.h"main(){ int i=0,j,k;do{i++;k=316-13*i;}while(k%11);j=k/11;printf("316=13*%d+11*%d",i,j);}
A.k%11 B.k C.k/11==0 D.k==0 答:——B——
4. 设有定义:int n=0,*p=&n,**q=&p,则下列选项中正确的赋值语句是
A.p=1; B.*q=2; C.q=p; D.*p=5;
5. 在16位C编译系统上,若定义long a;,则能给a赋40000的正确语句是
A.a=20000+20000; B.a=4000*10; C.a=30000+10000; D.a=4000L*10L
6. 请选出可用作C语言用户标识符的是
A.void,define,WORD B.a3_b3,_123,IF C.FOR,--abc,Case D.2a,Do,Sizeof
7. C语言允许函数类型缺省定义,此时函数值隐含的类型是
A.float B.int C.long D.double
8. 下列程序的输出结果是 main() { double d=3.2; int x,y; x=1.2; y=(x+3.8)/5.0; printf("%d\n", d*y); }
A.3 B.3.2 C.0 D.3.07
9. 下面程序的运行结果是 #include main() { int y=10; do{y--;}while(--y); printf("%d\n",y--); }
A.1 B.1 C.8 D.0
10. 若x,i,j和k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为
A.4 B.16 C.32 D.52
11. 阅读以下程序及对程序功能的描述,其中正确的描述是 #include main() { FILE *in,*out; char ch,infile[10],outfile[10]; printf("Enter the infile name:\n"); scanf("%s",infile); printf("Enter the outfile name:\n"); scanf("%s",outfile); if((in=fopen(infile,"r"))==NUL
A.程序完成将磁盘文件的信息在屏幕上显示的功能 B.程序完成将两个磁盘文件合二为一的功能 C.程序完成将一个磁盘文件复制到另一个磁盘文件中 D.程序完成将两个磁盘文件合并并在屏幕上输出
12. 有如下程序 int a[10]={1,2,3,4,5,6,7,8,9,10}; int *p=&a[3],b;b=p[5]; 则b的值是
A.5 B.6 C.9 D.8
13. 执行以下程序后,a,b的值分别为 main() { int a,b,k=4,m=6,*p1=&k,*p2=&m; a=p1==&m; b=(*p1)/(*p2)+7; printf("a=%d\n",a); printf("b=%d\n",b); }
A.-1,5 B.1,6 C.0,7 D.4,10
14. 以下程序有语法错误,有关错误原因的正确说法是 main() { int G=5,k; void prt_char(); ... k=prt_char(G); ... }
A.语句 void prt_char();有错,它是函数调用语句,不能用void说明 B.变量名不能使用大写字母 C.函数说明和函数调用语句之间有矛盾 D.函数名不能使用下划线
15. 下面能正确进行字符串赋值操作的是
A.char s[5]={"ABCDE"}; B.char s[5]={ ′A′, ′B′, ′C′, ′D′, ′E′}; C.char *s;s="ABCDE";
D.char *s;char a; scanf("%s",&s);
16. 以下不正确的叙述是
A.在C程序中,逗号运算符的优先级最低 B.在C程序中,APH和aph是两个不同的变量 C.若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变
D.当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值
17. 设有int x=11;则表达式(x++*1/3)的值是
A.3 B.4 C.11 D.12
18. 设有以下说明语句 struct ex { int x ; float y; char z ;} example; 则下面的叙述中不正确的是
A.struct结构体类型的关键字 B.example是结构体类型名
C.x,y,z都是结构体成员名 D.struct ex是结构体类型名
19. C语言中,能识别处理的文件为
A.文本文件和数据块文件 B.文本文件和二进制文件
C.流文件和文本文件 D.数据文件和二进制文件
20. 设有数组定义: char array[]="China"; 则数组 array所占的空间为
A.4个字节 B.5个字节
C.6个字节 D.7个字节
21. 一个C语言程序是由
A.一个主程序和若干子程序组成 B.函数组成
C.若干过程组成 D.若干子程序组成
22. 下列各数据类型不属于构造类型的是
A.枚举型 B.共用型 C.结构型 D.数组型
23. 以下不正确的定义语句是
A.double x[5]={2.0,4.0,6.0,8.0,10.0}; B.int y[5]={0,1,3,5,7,9};
C.char c1[]={′1′,′2′,′3′,′4′,′5′}; D.char c2[]={′\x10′,′\xa′,′\x8′};
24. 下列程序的输出结果是 int b=2; int func(int *a) { b += *a; return(b);} main() { int a=2, res=2; res += func(&a); printf("%d\n",res); }
A.4 B.6 C.8 D.10
25. 下面程序的输出结果是 main() { int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; printf("%d\n",*(p+2));}
A.3 B.4 C.1 D.2
26. 若已定义: int a[]={0,1,2,3,4,5,6,7,8,9}, *p=a,i; 其中 0≤i≤9, 则对a数组元素不正确的引用是
A.a[p-a] B.*(&a[i]) C.p[i] D.a[10]
27. sizeof(float)是
A.一个双精度型表达式 B.一个整型表达式 C.一种函数调用 D.一个不合法的表达式
28. 以下叙述中不正确的是
A.在不同的函数中可以使用相同的名字的变量
B.函数中的形式参数是局部变量
C.在一个函数内定义的变量只在本函数范围内有效
D.在一个函数内的复合语句中定义的变量在本函数范围内有效
29. 若有以下程序 #include int a[]={2,4,6,8}; main() { int i; int *p=a; for(i=0;i<4;i++)a[i]=*p; printf("%d\n",a[2]); } 上面程序输出结果是
A.6 B.8 C.4 D.2
30. 函数 rewind 的作用是
A.使文件位置指针重新返回文件的开始位置 B.将文件位置指针指向文件中所要求的特定位置
C.使文件位置指针指向文件的末尾
D.使文件位置指针自动移至下一个字符位置
31. 下面程序段的运行结果是 char *format="%s,a=%d,b=%d\n"; int a=11,b=10; a+=b; printf(format,"a+=b",a,b);
A.for,"a+=b",ab
B.format,"a+=b"
C.a+=b,a=21,b=10
D.以上结果都不对
32. 有如下程序: long fib(int n) { if(n>2)return(fib(n-1)+fib(n-2)); else return(2); } main() { printf("%d\n",fib(3));} 该程序的输出结果是
A.2
B.4
C.6
D.8
33. 以下程序有错,错误原因是 main() { int *p,i;char *q,ch; p=&i; q=&ch; *p=40; *p=*q; ...... }
A.p和q的类型不一致,不能执行*p=*q;语句
B.*p中存放的是地址值,因此不能执行*p=40;语句
C.q没有指向具体的存储单元,所以*q没有实际意义
D.q虽然指向了具体的存储单元,但该单元中没有确定的值,所以执行*p=*q;没有意义,可能会影响后面语句的执行结果
34. 请选出以下语句的输出结果 printf("%d\n",strlen("\t\"\065\xff\n"));
A.5
B.14
C.8
D.输出项不合法,无正常输出
35. 设有以下语句: char x=3,y=6,z; z=x^y<<2; 则z的二进制值是
A.00010100
B.00011011
C.00011100
D.00011000
36. 在16位IBM-PC机上使用C语言,若有如下定义 struct data { int i; char ch; double f; } b; 则结构变量b占用内存的字节数是
A.1
B.2
C.7
D.11
37. 有以下程序: #include union pw { int i; char ch[2];}a; main() {a.ch[0]=13;a.ch[1]=0;printf("%d\n",a.i);} 程序的输出结果是
A.13
B.14
C.208
D.209
38. 一个c程序的执行是从(? ?? ).
A.main(??? )函数开始,直到main(??? )函数结束
B.第一个函数开始,直到最后一个函数结束
C.第一个语句开始,直到最后一个语句结束
D.main(??? )函数开始,直到最后一个函数结束
39. 选择出合法的if语句(设int x,y;)(? ?? ).
A.程序错误,不许嵌套宏定义
B.x=93
C.x=21
D.程序错误,宏定义不许有参数
41. 设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为( ).
A.int
B.float
C.double
D.不确定
42. 若有以下程序段:…………int a[]={4,0,2,3,1},I,j,t;for(I=1i{t=a;j=I-1;while(j>=0&&t>a){a=a;j--;}a=t;}?…………则该程序段的功能是( ).
A.对数组a进行插入排序(升序)
B.对数组a进行插入排序( 降序)
C.对数组a进行选择排序(升序)
D.对数组a进行选择排序(降序)
43. 逻辑运算符两侧运算对象的数据类型( ).
A.能是0或1
B.只能是0或非0正数
C.只能是整型或字符型数据
D.可以是任何类型的数据
44. 若二维数组a有m列,则在a前面的元素个数为( ).
A.j*m+i
B.i*m+j
C.i*m+j-1
D.i*m+j+1
45. 已知各变量的类型说明如下:则以下不符合C语言与法的表达式是( ).
A.x%(-3)
B.w+=-2
C.k=(a=2,b=3,a+b)
D.a+=a-=(b=4)*(a=3)
46. 以下程序的运行结果是(? )。?????? #define MAX(A,B)? (A)>(B)?(A):(B)?????? #define PARTY(Y)? printf(“Y=%d “,Y)Main(){int a=1,b=2,c=3,d=4,t;T=MAX(a+b,c+d);PRINT(t);}
A.Y=3
B.存在语法错误
C.Y=7
D.Y=0
47. 若使用一维数组名作函数实参,则以下正确的说法是( ).
A.必须在主调函数中说明此数组的大小
B.实参数组类型与形参数组类型可以不匹配
C.在被调函数中,不需要考虑形参数组的大小
D.实参数组名与形参数组名必须一致
48. 设有程序段t=0while(printf(“*”)){t++;if(t}下面描述正确的是( ).
A.其中循环控制表达式与0等价
B.其中循环控制表达式与‘0’等价
C.其中循环控制表达式是不合法的
D.以上说法都不对
49. 设有以下说明:struct packed{ unsigned one:1;unsigned two:2;unsigned three:3;unsigned four:4;} data;则以下位段数据的引用中不能得到正确数值的是( ).
A.data.one =4 B.data.two=3 C.data.three =2 D.data.four=1
50. 若调用fputc函数输出字符成功,则其返回值是( ).
A.EOF B.1 C.0 D.输出的字符
51. 若以下变量均是整形,且num=sum=7;则计算表达式sUM=num++,sUM++,++num后sum的值为( ).
A.7 B.8 C.9 D.10
52. 在位运算中,操作数每右移一位,其结果相当于( ).
A.操作数乘以2 B.操作数除以2 C.操作数除以4 D.操作数乘以4
53. 以下叙述中不正确的是( ).
A.预处理命令行都必须以#号开始
B.在程序中凡是以#号开始的语句行都是预处理命令行
C.C程序在执行过程中对预处理命令行进行处理
D.以下是正确的宏定义#define?? IBM-PC
54. 以下符合C语言语法的赋值表达式是( ).
A.d=9+e+f=d+9
B.d=9+e,f=d+9
C.d=9+e,e++,d+9
D.d=9+e++=d+7
55. 下面四个选项中,均是不正确的八进制数或十六进制数的选项是( ).
A.0160x8f018
B.oabc0170xa
C.010-0x110x16
D.0a127ff-123
56. 在C语言中,char型数据在内存中的存储形式是( )。
A.补码
B.反码
C.源码
D.ASCII码
57. 函数调用语句:fseek(fp,-20L,2);的含义是( ).
A.将文件位置指针移动到距离文件偷0个字节出
B.将文件位置指针从当前位置向后移动20个字节
C.将文件位置指针从文件末尾出向后退20个字节
D.将文件位置指针移动到离当前位置20个字节处
58. 以下关于运算符优先顺序的描述中正确的是( ). 东师答案联系Q:761296021 更多答案请进 ap5u.com
A.关系运算符<算术运算符<赋值运算符<逻辑与运算符
B.逻辑与运算符<关系运算符<算术运算符<赋值运算符
C.以赋值运算符<逻辑与运算符<关系运算符<算术运算符
D.算术运算符<关系运算符<赋值运算符<逻辑与运算符
59. 对for(表达式1; ;表达式3)可以理解为( ).
A.for(表达式1;0;表达式3)
B.for(表达式1;1;表达式3)
C.for(表达式1;表达式1;表达式3)
D.for(表达式1;表达式3;表达式3)
60. 以下能正确计算1*2*3*……*10的程序是( ).
61. 语句while(!e);中的条件!e等价于(?? ?).
A.e==0 B.e!=1 C.e!=0 D.~e
62. 一个c程序是由(?? ?). A.一个主程序和若干子程序组成 B.一个或多个函数组成
C.若干过程组成 D.若干子程序组成
63. fwrite函数的一般调用形式是( ).
A.fwrite(buffer,count,size,fp) ;
B.fwrite(fp,size,count,buffer) ;
C.fwrite(fp,count,size,buffer) ;
D.fwrite(buffer,size,count,fp) ;
64. 已知各变量的类型说明如下: 则以下符合C语言语法的表达式是( )
A.a+=A-=(b=4)*(a=3)
B.a=a*3=2
C.x%(-3)
D.y=float (i)
65. 已有变量定义和函数调用语句:int a=25; print_value(&a);下面函数的正确输出结果是( )。????????? void print_value(int *t)????????? { print(“%d ”,++*x);}
A.23 B.24 C.25 D.26
66. 设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是( ).
A.’x’&&’y’
B.x<=y
C.x||y+z&&y-z
D.!((x<y)&&!z ||1)
67. 设有如下定义:要使P指向data中的n域, 正确的负值语句的是( )
A.p=&data.n; B.*p=data.n; C.p=(struct sk*)&data.n; D.p=(struct sk*)data.n;
68. 下面能正确进行字符串赋值操作的是()
A.char s={“ABCDE”}; B.char s={‘A’,’B’,’C’,’D’,’E’}; C.char *s; s=”ABCDE”; D.char *s; scanf(“%s”,s);
69. fseek函数的正确调用形式是( ).
A.fseek(文件类型指针,起始点,位置量); B.fseek(fp,位置量,起始点); C.fseek(位置量,起始点,fp); D.fseek(起始点,位置量,文件类型指针);
70. 若有说明:int? a[]={0,0};则下面正确的叙述是( )。
A.数组a中每个元素均可得到初值0
B.二维数组a的第一维大小为1
C.因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的行数为1
D.只有元素a0]和a可得到初值0,其余元素均得不到初值0
71. C语言中while和do-while循环的主要区别是( ).
A.do-while的循环体至少无条件执行一次
B.while的循环控制条件比的循环控制条件严格
C.do-while允许从外部转到循环体内
D.do-while的循环体不能是复合语句
72. 以下正确的叙述是( ).
A.在C程序中,每行中只能写一条语句
B.若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数
C.在C程序中,无论是正数还是实数,都能被准确无误的表示
D.在C程序中,%是只能用于正数运算的运算符
73. 语句(1,2,3,4)的结果是( ?)。 A.1 B.2 C.3 D.4
74. 若有代数式则正确的C语言表达式是( )。
A.sqrt (fabs(pow(y,x)+log(y))) B.sqrt (abs(pow(y,x)+long(y)))
C.sqrt (fabs(pow(x,y)+log(y))) D.sqrt (abs(pow(x,y)+long(y)))
75. 下面程序段中,for循环的执行次数是()。????????? char *s=” a18bc”;????????? for (? ;*s! =’’;s++)???? printf(“*”);
A.9 B.5 C.6 D.7
76. 已有定义 int k=2;int *ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是( )。
A.k=*ptr1+*ptr2;
B.ptr2=k;
C.p1=*p2;
D.*p1=p2;
77. 根据题目中已给出的数据的输入和输出形式,程序中输入输出语句的正确内容是( )。main(){ int x;float y;pringf(“enter x,y;”)输入语句输出语句}输入形式? enter x,y:2 3.4输出形式? x+y=5.40
A.scanf(“%d,%f”,&x,&y);printf(“x+y=%4.2f”,x+y); B.scanf(“%d%f”,&x,&y);printf(“x+y=%4.2f”,x+y);
C.scanf(“%d%f”,&x.&y);printf(“x+y=%6.1f”,x+y); D.scanf(“%d%3.1f”,&x,&y);printf(“x+y=%4.2f”,x+y);
78. 以下对结构体类型变量的定义中不正确的是( )。
A.#define STUDENT struct student?STUDENT{int num;float age;}std1;
B.struct student{int num;?float age;}std1;
C.struct{int num;float age;}std1;
D.structint num;则以下语句正确的是(???? )。
A.a=5; B.a={2,’a’,1.2}; C.printf(“%d”,a);
80. 以下不是无限循环的愈句为()
A.r(y=0,x=1;x>++y;x=i++) I=x B.for( ; ;x++=I);
C.while(1){x++; } D.for(I=10; ;I--) sum+=I;
81. 以下对二维整形数组a进行正确初始化的语句是( )。
A.int a[]={{1,01},{5,2,3}}; B.int a[]={{1,2,3},{4,5,6}};
C.int a={{1,2,3},{4,5},{6}}; D.int a[]={{1,0,1},{},{1,1}};
82. C语言共用体型变量在程序运行期间?()。
A.所有成员一直驻留在内存中 B.只有一个成员驻留在内存中 C.部分成员驻留在内存中 D.没有成员驻留在内存中
83. 在C语言中,int、char和short三种类型数据在内存中所占用的字节数()。
A.由用户自己定义
B.均为2个字节
C.是任意的
D.有所用的机器的机器字长决定
84. 若有定义:int a=7; float x=205 ,y=4.7; 则表达式x+a%3*(int)(x+y)%2/4的值是()。
A.2.500000 B.2.750000 C.3.500000 D.0.000000
85. 下面程序的运行结果是( ).main(){struct cmplx {int x;?????????? int y;?????????? } cnum={1,3,2,7};printf(“%d ”,cnum.y/cnum.x*cnum.x);}
A.0 B.1 C.3 D.6
86. 设n=10,i=4、则赋值运算n%=i+1执行后,n的值是( ). (1 分)
A.0 B.3 C.2 D.1
87. 下面程序( )。1 main()2 {3 int a={0};4 int I;5 for(I=0;I6 for(I=I;I7 printf(“%d ”,a);8}
A.没有错误 B.第3行有错误 C.第5行有错误 D.第6行有错误
88. 下面程序段的运行结果是( ).for(y=1;yprintf(“x=%d,y=%d”,x,y);
A.x=27,y=27 B.x=12,y=13 C.x=15,y=14 D.x=y=27
89. 已有程序和输入数据的形式,程序中输入语句的正确形式应当为( )。(注:︼表示空格, 表示回车)main(){ int a; float f;printf(“\nInput number:”);输入语句printf(“\nf=%f,a=%d ”,f,a);} Input number:4.5︼ ︼2
A.scanf(“%d,%f”,&a,&f);
B.scanf(“%f,%d”,&f,&a);
C.scanf(“%d,%f”,&a,&f);
D.scanf(“%f,%d”,&f,&a);
90. 以下程序的运行结果是(? )#include”stdio.h”#define FUDGE(y)??? 2.84+y#define PR(a)???????? printf(“%d”,(int)(a))#define PRINT1(a)??? PR(a);put char(‘ ’)main(){int x=2;PRINT1(FUDGE(5)*x);}
A.11
B.12
C.13
D.15
91. 若有以下说明和语句,则下面表达式中值为1002的是(?? ?? )。Struct student{int age;?int num;};struct student stu={{1001,20},{1002,19},{1003,21}};struct student *p;p=stu;
A.(p++)—>num
B.(p++)—>age
C.(*p).num
D.(*++p).age
92. 若有说明:int? a;则对a数组元素的正确引用是( )。
A.a
B.a
C.a
D.a(2)(1)
93. 设位段的空间分配由右到左,则以下程序的运行结果是( )。struct packed_bit{unsigned a:2;unsigned b:3;unsigned c:4;int I;} data;main(){data.a=8; data.b=2;printf(“%d ”,data.a+data.b);} (1 分)
A.语法错
B.2
C.5
D.10
94. 下面程序运行结果是(? ).?? # include?? main(){ int a=1,b=10;?do?? {b-=a ; a++ ; } while ( b--?printf ( “ a=%d , b=%d ”,a,b);}
A.a=3 , b=11
B.a=2,b=8
C.a=1,b=-1
D.a=4,b=9
95. 下面判断正确的是( )。
A.char * a=”china”;等价于 char *a;*a=”china”;
B.char str={“china”};等价于char str;str[]={“china”};
C.char *s=”china”; 等价于 char *s; s=”china”;
D.char c=”abc”,d=”abc”; 等价于 char c=d=”abc”;
96. 若I为整型变量,则以下循环执行次数是(? )。for(I=2;I==1)? printf(“%d”,I--); (1 分)
A.无限次
B.0次
C.1次
D.2次
97. 下面程序( )。(每行程序前面的数字表示行号)。
A.3 B.6 C.7 D.5
98. 以下C程序正确的运行结果是( )。main(){long y=23456;printf(“y=%3x\n ”,y);printf(“y=%8x \n”,y);printf(“y=%#8x \n”,y);}}
A.y = 5ba0y = ︼ ︼ ︼ ︼5ba0y = ︼ ︼0x5ba0
99. 设有以下语句:则以下表达式的值为6的是( )。
A.p++->n
B.p->n++
C.(*P).n++
D.++p->n
100. 以下程序有错,错误的原因是( )。???????? main()???????? {int *p,i;char *q,ch;???? p=&i;q=&ch;?*p=40;?*p=*q;?.?.?.}
A.p和q的类型不一致,不能执行*p=*q;语句
B.*p中存放的是地址值,因此不能执行*p=40;语句
C.q没有指向具体的存储单元,所以*q没有实际意义
D.q虽然指向了具体的存储单元,但该单元中没有确定的值,所以不能执行*p=*q;语句
101. 有以下定义和语句,则以下引用形式不合法的是( )。
A.ptr->i1++
B.*ptr->i2
C.++ptr->i0
D.ptr->i1
102. 下面四个选项中,均是不合法浮点数的选项是( )。
A.160.0.12e3
B.1232e4.2.e5
C.-.18123e40.0
D.-e30.2341e3
103. 变量的指针,其含义是指该变量的( )。
A.地址
B.名
C.一个标志
104. 若要利用下面的程序片段使指针变量p指向一个存储整型变量的存储单元,则[? ]中应填入的内容是(??? ??? )。Int*p;P=[? ]malloc(sizeof(int));
A.int
B.int*
C.(*int)
D.(int*)
105. 设C语言中,一个int型数据类型在内存中占2个字节,则unsigned int型数据的取值范围为( )。
A.0~255 B.0~32767 C.0~65535 D.0~2147483647
106. 若有宏定义:#define MOD(x,y) x%y则执行以下语句后的输出为(? )
A.11 B.10 C.6 D.宏定义不合法
107. 如果a=1,b=2,c=3,d=4,则条件表达式a<b?a:c<d?c:d的值为( )。
A.1 B.2 C.3
D.4108. 设有以下说明语句struct stu?? {int a;??? float b;?? }stutype;则下面的叙述不正确的是( )。
A.struct是结构体类型的关键字
B.struct stu是用户定义的结构体类型
C.stutype是用户定义的结构体类型名
D.a和b都是结构体成员名
109. 以下正确的描述是( )。
A.C语言的预处理功能是指定完成宏替换和包含文件的调用
B.预处理指令只能位于C源程序文件的首部
C.凡是C源程序中行首以“#”标识的控制行都是预处理指令
D.C语言的编译预处理就是对源程序进行初步的语法检查
110. 若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则文件方式字符串应是( )。
A.“ab+”
B.“wb+”
C.“rb+”
D.“ab”
111. 以下scanf函数调用语句中对结构体 变量成员的不正确引用是( )。Stuct pupil{char name;int age ;int sex;}pup*p;p=pup;
A.scanf(“%s”,pup.name);
B.scanf(“”%d),&pup.age;
C.scanf(“%d”,&sex)); ?(p
D.scanf(“%d”,P->age);
112. 在C语言中,要求运算数必须是整形的运算符是( )。
A./
B.++
C.!=
D.%
113. C语言派程序的基本单位是(?? )。
A.过程
B.函数
C.子程序
D.标识符
114. 下面程序段的运行结果是().for(x=3,x<6;x++)printf((x%2)?(“##%d ”),x);
A. **3
##4
**5
**5
B.##3
**4
##5
C.##3
**4##5
D.**3##4
**5
115. 若有说明:int *p1,*p2,m=5,n;以下均是正确赋值语句的选项是( )。
A.p1=&m;p2=&p1;
B.p1=&m;p2=&n;*p1=*p2;
C.p1=&m;p2=p1
D.p1=&m;*p2=*p1;
116. 选择出合法的if语句(设int x,a,b,c;)(? )。
A.if(a=b)x十十;
B.if(a=<b)x十+;
C.if(a<>b)x十十;
D.if(a=>b)x十十;
117. 以下程序的运行结果是( )
A.10
B.15
C.100
D.150
118. 下面程序段的运行结果是( )。
A.cde
B.字符’c’
C.字符’c’的地址
D.无确定的输出结果
119. 以下对结构体变量stul 中成员age? 的非法引用是(? )。
A.stul.age
B.student.age
C.p—>age
D.(*p).age
120. 在“文件包含”预处理语句的使用形式中,当#include后面的文件名用“”括起时,寻找被包含文件的方式是(? )。
A.直接按系统设定的标准方式搜索目录
B.先在源程序所在目录搜索,再按系统设定的标准方式搜索
C.仅仅搜索源程序所在目录
D.仅仅搜索在前目录
121. 以下对C语言中共用体类型数据的叙述正确的是(??? )。
A.可以对共用体变量名直接赋值
B.一个共用体变量中可以同时存放其所有成员
C.一个共用体变量中不可能同时存放其所有成员
D.共用体类型定义中不能出现结构体类型的成员
122. 若哟于以下说明和语句:
B.p->age
C.(*p).age
D.*p.age
123. 函数ftell(fp)的作用是( )。
A.得到流式文件的当前位置
B.移动流式文件的位置指针
C.初始化流式文件的位置指针
D.以上答案均正确
124. 以下正确的c语言标识符是(?? ?)。
A.%x
B.a十b
C.a123
D.test!
125. 请读程序#include#defineMUL(x,y)(x)*ymain(){int a=3,b=4,c;c=MUL(a++,b++);printf("%d ",c);?????? }上面程序的输出结果是( )。
A.12
B.15
C.20
D.16 C
126. 以下for循环是(?? ?)。
A.r(x=0,y=0;(y!=123)&&(x<4);x++);
B.无限循环
C.循环次数不定
D.执行4次
E.执行3次
127. 若x,y均定义为int型,z定义为double型,以下不合法的scanf函数调用语句是( ).
A.scanf(“%d%d1x,%1e”,&x,&y,&z);
B.scanf(“%2d*%d%1f”,&x,&y,&z);
C.scanf(“%x%*d%o”,&x,&Y);
D.scanf(“%x%o%6.2f”, &x,&y,&z);
128. 以下不正确的语句(设有int p,q)是(?? ?)。
A.P*=3;
B.p/=q;
C.p十=3;
D.p&&=q;
129. 若有以下宏定义: ((N+1)*n)则执行语句z=2*(N+Y(5));后的结果是( )。
A.语句有错误
B.z=34
C.z=70
D.z无定值
130. 阅读以下程序,当输入数据的形式为:25,13,10,正确的输出结果为()。main(){ int x,y,z;scanf(“%d%d%d”,&x,&y,&z);printf(“x+y+z=%d ”,x+y+z);}
A.x+y+z=48
B.x+y+z=35
C.x+z=35
D.不确定值
131. 以下对一维整形数组a的正确说明是( )。
A.int a(10);
B.int n=10,a;
C.int n;scanf(“%d”,&n);int a;
D.#define SIZE 10int a;
132. 若有宏定义如下:#define X 5#define Y X+1#define Z Y*X/2则执行以下printf语句后,输出结果是( )。Int a;a=Y;Printf(“%d ”,Z);Printf(“%d ”,--a);
A.76
B.126
C.125
D.75
133. 以下程序的输出结果为( )。#include#define(y)??? 3.84+y#definePR(a)??? printf("%d",(int)(a))#definePRINT(a)?? PR(a);putchar( )main(){int x=2;PRINTF(F(3)*x));}
A.8
B.9
C.10
D.11
134. 以下程序的正确运行结果是(? )。#include void num(){extern int x,y;int a=15,b=10;x=a-b;y=a+b;}int x,y;main(){ int a=7,b=5;x=a+b;y=a-b;num();printf(“%d,%d ”,x,y);}
A.12,2
B.不确定
C.5,25
D.1,12
135. 当说明一个共用体变量时系统分配给它的内存是(?? )。
A.各成员所需内存量的总和
B.结构中第一个成员所需内存量
C.成员中占内存量最大者所需的容量
D.结构中最后一个成员所需内存量
136. 下列运算符中优先级最高的是( )。
A.<
B.十
C.%
D.!=
137. 表达式~0x13的值是( )。
A.0xFFEC
B.0xFF71
C.0xFF68
D.0xFF17
138. 一个C语言程序是由(? )。
A.一个主程序和若干子程序组成
B.函数组成
C.若干过程组成
D.若干子程序组成
139. 函数rewind的作用是( )。
A.使位置指针重新返回文件的开头
B.将位置指针指向文件中所要求的特定位置
C.使位置指针指向文件的末尾
D.使位置指针自动移动到下一个字符位置
140. 以下C程序正确的运行结果是( )。???????? main()???????? {long y=-43456;????????? printf(“y=%-8ld ”,y);????????? printf(“y=%-08ld ”,y);printf(“y=%08ld ”,y);printf(“y=%+8ld ”,y);}
A.y=? -43456y=-? 43456y=-0043456y=-43456
B.y=-43456y=-43456y=-0043456y=+ 43456
C.y=-43456y=-43456y=-0043456y=? -43456
D.y=? -43456y=-0043456y=00043456y=+43456
141. C语言结构体类型变量在程序执行期间( )。
A.所有成员一直驻留在内存中
B.只有一个成员驻留在内存中
C.部分成员驻留在内存中
D.没有成员驻留在内存中
142. 已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2=’A’+’6’-‘3’;后,c2的值为( )。
A.D
B.68
C.不确定的值
D.C
143. 以下程序的运行结果是 ( ?)..??? .?????????? typedef union {long a;????????????????????????? int b;????????????????????????? char c;????????????????????????? }TY?????????? TY our;?????????? main()?????????? {printf (“%d ”,sizeof(our));?????????? }
A.32
B.16
C.8
D.24
144. 以下程序的输出结果是( )。??????????? Struct stu ???????????? {int x;???????????????? int*y;?????????????? } *p;???????????? int dt ={10,20,30,40};???????????? struct stu a={50,&dt,60,&dt,????????????? ?????????????????????????? 70,&dt,80,&dt????????? ????????????????????????? };????????????? main()????????????? {p=a;?????????????? printf(“%d,”,++p->x);?????????????? printf(“%d,”,(++p)->x);?????????????? printf(“%d ”,++(*p ->y));???? ???? }
A.10,20,20
B.50,60,21
C.51,60,21
D.60,70,31
145. 在C语言中,引用数组元素时,其数组下标的数据类型允许是( )。
A.整型常量
B.整型表达式
C.整型常量或整型表达式
D.任何类型的表达式
146. 以下结果为整数的表达式(设有int i;char c;float f;)( )。
A.i十f
B.i*c
C.c十f
D.i十c十f
147. 下面程序的运行结果是( )。#includemain(){int i,b,k=0;?for(i=1;i?? {b=i%2;???? while(b- ->=0) k++;}printf(“%d,%d”,k,b);}
A.3,-1
B.8,-1
C.3,0
D.8,-2
148. 以下叙述中正确的是( )。
A.在程序的一行上可以出项多个有效的预处理命令行
B.使用带参的宏时,参数的类型应与宏定义时的一致
C.宏替换不占用运行时间,只占编译时间
D.在以下定义中C? R是称为”宏名”的标识符#define?? C? R?????? 045
149. 以下不正确的叙述是( )。
A.在C程序中,逗号运算符的优先级最低
B.在C程序中,APH和aph是两个不同的变量
C.若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变
D.当从键盘输入数据时,对于整形变量只能输入整形数值,对于实型变量只能输入实型数值
150. 表示图中坐标轴上阴影部分的正确表达式是( ).??????????? //// |????????????? | ////|??????????? //// |????????????? | ////|?????? ##########################_X??????????????? A?????????????? b???? c
A.(x<=a)&& (x>=b)&&(x<=c)
B.(x<=a) ||? (b<=x<=c)
C.(x<=a) ||(x>=b)&&(x<=c)
D.(x<=a)&&(b<=x<=c)
151. C语言规定,数组名做实参时,它和对应形参之间的数据传递方式是()
A.用户指定传递方式
B.无传递
C.单向值传递
D.地址传递
152. 利用fseek函数的正确调用形式是( )。
A.改变文件的位置指针
B.文件的顺序读写
C.文件的随机读写
D.以上答案均正确
153. 以下不正确的说法为(? )。
A.在不同的函数中可以使用相同名字的变量
B.形式参数是局部变量
C.在函数内定义的变量只在本函数范围内有效
D.在函数内定义的变量只在本函数范围内有效
154. 设int a=04,b;则执行b=a>>1;语句后,b的结果是(? )。
A.04
B.4
C.10
D.2
155. 若有以下说明和语句,则 对中域的正确引用方式是( )。????????? Struct pupil ?????????? {char?? name [20 ;?????????????? int sex;??????????? }pup,*p;??????????? p=&pup;
A.p.pup.sex
B.p->pup.sex
C.(*p).pup.sex
D.(*p).sex
156. 阅读以下程序及对程序功能的描述,其中正确的描述是( )。???????? #include???????? main()???????? {???????? file *in, *out ;???????? char ch,infile,outfile ;???????? scanf(“%s”,infile) ;???????? printf(“Enter the infile name : ”) ;?? ???????? scanf(“%s”,outfile) ;???????? if(in=fopen(infile,”r”))==NULL)?????????? {???????????? printf(“cannot open infile ”) ;???????????? exit(0) ;??????????? }????????? if((out=fopen(outfile,”w”))==NULL)???????????? {????????????? Printf(“cannot open outfile ”) ;????????????? Exit(0) ;???????????? }????????? while(!? Feof(in)fputc(fgetc(in),out) ;????????? fclose(in) ;????????? fclose(out) ;}
A.程序完成将磁盘文件的信息在屏幕上显示的功能
B.程序完成将两个磁盘文件和二为一的功能
C.程序完成将一个磁盘文件复制到另一个磁盘文件中
D.程序完成将两个磁盘文件合并且在屏幕上输出
157. 下面程序段的运行结果是( )?????? int n=0;?????? while(n++<=2);? printf(“%d”,n);
A.2
B.3
C.4
D.有语法错
158. 已有如定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A 和B,当从第一列开始输入数据时,正确的数据输入方式是( )。(注:表示回车)int a1,a2;? char c1,c2;scanf(“%d%d”,&a1,&a2);scanf(“%c%c”,&c1,%c2);
A.1020AB
B.10︼20AB
C.10︼ ︼20︼ ︼AB
D.10︼20AB
159. 以下程序的正确运行结果是(? ).#includemain(){ int k=4,m=1,p;?p=func(k,m);printf(“%d,”,p);?p=func(k,m);printf(“%d ”,p);}func(int a,int b){ static int m=0,i=2;? i+=m+1;? m=i+a+b;? return(m);}
A.8,17
B.8,16
C.8,20
D.8,8
160. 若已定义int a=5;下面对(1),(2)两个语句的正确解释是( )。(1)int *p=&a;??? (2) *p=a;
A.语句(1)和(2)中的 *p含义相同,都表示给指针变量p赋值
B.(1)和(2)语句的执行结果,都是把变量a的地址值赋给指针变量p
C.(1)在对p进行说明的同时进行初始化,使p指向a(2)将变量a的值赋给指针变量p
D.(1)在对p进行说明的同时进行初始化,使p指向a(2)将变量a的值赋于*p
161. 设 char *s=” a17bc”; 则指针变量s指向的字符串所占的字节数是( )。
A.9
B.5
C.6
D.7
162. 若有说明:int a[]={1,2,3,4,5,6,7};则a数组第一维的大小是( )。
A.2
B.3
C.4
D.无确定值
163. 在16位IBM-PC机上使用C语言,若有如下定义:? union data ???? {int i;????? char ch;????? double f;????? }b;????????? 则共用体变量 占用内存的字节数是( )。
A.1
B.2
C.8
D.11
164. 以下有关宏替换的叙述不正确的是( )。
A.宏替换不占用运行时间
B.宏名无类型
C.宏替换知识字符替换
D.宏名必须用大写字母表示
165. 若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式是( ).
A.A%2==1
B.!(入%2==0)
C.!(A%2)
D.A%2
166. 以下程序的正确运行结果是().#define MAX 10int a,I;main(){printf(“ ”);sub1();sub3(a);sub2();sub3(a);}sub2(){int a,I,max;max=5;for(I=0;I}sub1(){for(I=0;I}sub3(int a[]){int I;for(I=0;Iprintf(“ ”);}
A.0 2 4 6 8 10 12 14 16 18 0 1 2 3 4
B.0 1 2 3 40 2 4 6 8 10 12 14 16 18
C.0 1 2 3 4 5 6 7 8 90 1 2 3 4
D.0 2 4 6 8 10 12 14 16 180 2 4 6 8 10 12 14 16 18
167. 下列四个选项中,均是C语言关键字的选项是( )。
A.autoenuminclude
B.switchtypedefcontinue
C.signedunionscanf
D.ifstructtype
168. 请读程序片段:int x=20;printf(“%d ”, ~x);上面程序片段的输出结果是( )。
A.02
B.–20
C.-21
D.-11
169. 请读程序:#define ADD(x)? x+xmain(){int m=1,n=2,k=3;int sum=ADD(m+n)*k;printf(“sum=%d”,sum);}上面程序的运行结果是( )。
A.sum=9
B.sum=10
C.sum=12
D.sum=18
170. 编辑程序的功能是(? ? )。
A.建立并修改程序
B.将c源程序编译成目标程序
C.调试程序
D.命令计算机执行指定的操作
171. 设有以下语句:char x=3,y=6,z;z=x^y则z的二进制值是( )。
A.00010100
B.00011011
C.00011100
D.00011000
172. 以下for循环的执行次数是( ).??? for(x=0,y=0;(y=123)&&(x<4);x++);
A.是无限循环
B.循环次数不定
C.执行4次
D.执行3次
173. 以下可作为函数fopen中第一个参数的正确格式是( )。
A.c:user ext.txt
B.c:user ext.txt
C.user ext.txt
D.c\user\text.txt
174. 若有说明:int *p,m=5,n; 以下正确的程序段是( )。
A.p=&n;scanf(“%d”,&p);
B.p=&n;scanf(“%d”,*p);
C.scanf(“%d”,&n);*p=n;
D.p=&n;*p=m
175. 若有语句int *point,a=4;和point=&a; 下面均代表地址的一组选项是( )。
A.a,point,*&a
B.&*a,&a,* point
C.*&point,*point,&a
D.&a,&*point,point
176. 若有以下定义和说明:???????? #include“stdio.h”???????? struct std???????? { char num;????????? char name;????????? float mark;???????? }a;????????? FILE? *fp;???????? 设文件中以二进制形式存有10个班的学生数据,且已正确打开,文件指针定???????? 位于文件开头。若要从文件中读出30个学生的数据放入a数组中,以下不能???????? 此功能的语句是( )。
A.for(i=0;ifread( &a, sizeof( struct std ), 1L, fp );
B.for(i=0; ifread( a+i, sizeof( struct std ), 1L,fp );
C.fread( a, sizeof( struct std ), 30L,fp );
D.for( i=0; ifread( a, sizeof( struct std ), 1L,fp );
177. 已知学生记录描述为???????? struct student{int no;?char name;char set;struct?? {int year;??? int month;??? int day;?? }birth;};?????? struct student s;设变量s中的“生日”应是“1984年11月11日”,下列对生日的正确赋值方式是( )。
A.year=1984;month=11;? day=11;
B.birth.year=1984;birth.month=11;birth.day=11;
C.s.year=1984;s.month=11;s.day=11;
D.s.birth.year=1984;s.birth.month=11;s.birth.day=11;
178. 设有以下说明,则下面不正确的叙述是(??? )。Union data{? int? i;char c;float f;}un;
A.un所占的内存长度等于成员f的长度
B.un的地址和它的各成员地址都是同一地址
C.un可以作为函数参数
D.不能对un赋值,但可以在定义un时对它初始化
179. 若有代数式3ae/bc,则不正确的C语言表达式是( )
A.a/b/c*e*3
B.3*a*e/b/c
C.3*a*e/b*c
D.a*e/c/b*3
180. 设有以下结构体类型: struct st { char name; int num; float s; }student; 并且结构体数组student中的元素都已有值,若要将这些元素写到硬盘 文件fp中,以下不正确的形式是( )。
A.fwrite( student, sizeof( struct st ), 50, fp );
B.fwrite( student, 50*sizeof( struct st ), 1, fp );
C.fwrite( student, 25*sizeof( struct st ), 25, fp );
D.for( i=0;ifwrite( student+i, sizeof( struct st ), 1, fp );
181. 以下对一维整形数组a进行正确初始化的语句是( )。
A.int a=(0,0,0,0,0);
B.int a={};
C.int a[]={0};
D.int a={10*1};
182. 若要求的值分别为10、20、A、B,正确的数据输入是( )。
A.10A 20B
B.10 A 20 B
C.10 A20B
D.10A20 B
183. 对以下说明语句的正确理解是( )。int a={6,7,8,9,10};
A.将5个初值依次赋给a至a
B.将5个初值依次赋给a至a
C.将5个初值依次赋给a至a
D.因为数组长度与初值的个数不同,所以此语句不正确
184. 若以下程序段:????????? struct dent? ????????? { int n;???????????? int*m;??????????? };?????????? int a=1, b=2,c=3;?????????? struct dent s={{101?????????? main()??????????? {???????????? struct dent *p;????????????? p=s;????????????? …..????????????? } ?????????????? 则以下表达中值为2的是(? )。
A.(p++)->m
B.*(P++)->m
C.(*p).m
D.*(++p)->m
185. 以下正确的定义语句是( )。
A.int a={1,2,3,4,5};
B.float x[]={{1},{2},{3}};
C.long b={{1},{1,2},{1,2,3}};
D.double y[]={0};
186. 以下程序的输出结果为( )。#definePT??? 5.5#defineS(x)?? PT*x*xmain(){inta=1,b=2;printf("%4.1 ",S(a+b));}
A.12.0 B.9.5 C.12.5
D.33.5
187. fgetc函数的作用是从指定文件读入一个字符,该文件的打开方式必须是( )。
A.只写 B.追加 C.读或读写 D.答案B和C都正确
188. 下面程序( )。(每行程序前面的数字表示行号)。???????????????? 1? main()???????????????? 2? {???????????????? 3??? int a={3*0};???????????????? 4??? int i;???????????????? 5?? for(i=0;i???????????????? 6?? for(i=1;i???????????????? 7??? printf("%d ",a);???????????????? 8? }
A.第3行有错误 B.第7行有错误
C.第5行有错误 D.没有错误
189. 以下程序段中存在错误的是( )。
A.#define array_size? 100Int array1;
B.#define PI?? 3.14159#define S(r)? PI*(r)*(r)………Area=S(3.2);
C.#define PI? 3.14159#define S(r)? PI*(r)*(r)………Area=S(a+b);
D.#define PI? 3.14159#define S(r)? PI*(r)*(r)…………..Area=S(a);...
190. 使用typedef定义一个新类型的正确步骤是(? )。
A.2,4,1,3 B.1,3,2,4
C.2,1,4,3 D.4,2,3,1
191.C语言中函数返回值的类型与下列哪项无关?
A.定义函数时所指定的函数类型
B.调用函数时临时
C.调用该函数的主函数类型
D.return语句中的表达式类型
192.已知:int x,a,b;下列选项中正确的if语句是______。
A.if(a=b) x++;
B.if(a=<b) x++;
C.if(a-b) x++;
D.if(x) x++;
193.下列说法不正确的是______。
A.C程序由符号构成
B.C程序由标识符构成
C.C程序由函数构成
D.C程序由C语句构成
194.以下对C语言函数的有关描述中,错误的是:______。
A.调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
B.函数既可以嵌套定义又可以递归调用
C.函数必须有返回值,否则不能使用函数
D.程序中有调用关系的所有函数必须放在同一个源程序文件中
195.对函数的正确使用方法描述
A.用数组做函数参数时,必须在主调函数和被调函数中分别定义数组
B.实参数组元素和形参数组元素类型可以不一致
C.形参数组长度可以不指定
D.形参数组长度可以大于实参数组长度
196.下列字符中能构成标识符的是______。
A.数字字符
B.连接符
C.下划线字符
D.大写字母
197.以下叙述中正确的是______。
A.对于double类型数组,不可以直接用数组名对数组进行整体输入或输出
B.当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息
C.可以通过赋初值的方式确定数组元素的个数
D.数组名代表的是数组所占存储区的首地址,其值不可改变
198.关于静态局部变量的说明正确的是______。
A.静态局部变量存储在静态存储区
B.静态局部变量是在编译时赋初值的,即只赋一次值,在程序运行时它已有初值
C.若在定义局部变量时不赋初值,则编译时自动赋初值为0或空字符
D.虽然静态局部变量在函数调用结束后仍然存在,但其他函数是不能引用它的
199.内存中供用户使用的存储空间可分为:______。
A.程序区
B.静态存储区
C.动态存储区
D.数据存储区
200.以下不正确的描述是______。
A.函数的定义可以嵌套,函数的调用不可以嵌套
B.函数的定义不可以嵌套,函数的调用可以嵌套
C.函数的定义和函数的调用均可以嵌套
D.函数的定义和函数的调用均不可以嵌套
201.不与while(x)语句中的x等价的是_____。
A.x= =0
B.x= =1
C.x!=1
D.x!=0
202.带参宏定义与函数的区别是:______。
A.函数调用时,先求出实参表达式的值,然后代入形参,带参的宏只是进行简单的字符替换
B.函数调用是在程序运行时为形参分配临时的存储单元,而宏展开是在编译前进行的
C.宏不存在类型问题,宏名和参数都不存在类型问题
D.调用函数只能得到一个返回值,而使用宏可设法得到几个结果
203.关于宏定义的说法正确的是:
A.宏名一般习惯用大写字母表示,以便与变量名相区别
B.使用宏名代替一个字符串,可以减少程序中重复书写某些字符串的工作量
C.宏定义是用宏名代替一个字符串,也就是简单的置换,不作正确性检查
D.宏定义不是C语句,不必在行末加分号
204.下列描述正确的是
A.由main 函数及其参数argc和* argv[]可以实现命令行方式
B.使用fclose关闭文件时,先释放文件指针,再写缓冲区数据到文件中
C.字符数组并不要求它的最后一个字符是‘\0’
D.‘A’和“A”都是字符串常量
205.关于文件的打开方式描述正确的是:______。
A.r:打开只读文件
B.a+:打开或建立用于更新数据的文件,数据追加到文件尾
C.a:打开或建立一个把数据追加到文件尾的文件
D.r+:打开用于更新数据的文件
206.以下对一维数组a进行初始化,错误的语句是______。
A.int a=(0,0,0,0,0);
B.int a={};
C.int a={0};
D.int a={10,9,8}
207.以下正确的C语言标识符是_____。
A.ABC
B.abc
C.a_bc
D.ab.c
208.C提供的预处理功能主要有______。
A.宏定义
B.文件包含
C.条件编译
D.异常终止
209.以下说法不正确的是______。
A.定义函数时,形参的类型说明可以放在函数体内
B.return后边的值不能为表达式
C.如果函数值的类型与返回值表达式的类型不一致,以函数值类型为准
D.如果形参与实参的类型不一致,以实参类型为准
210.函数调用可以______。
A.出现在一个表达式中
B.出现在执行语句中
C.作为一个函数的实参
D.作为一个函数的形参
211.以下不正确的叙述是______。
A.C语言的主函数是无参函数
B.C语言的主函数最多允许有1个参数
C.C语言的主函数最多允许有2个参数
D.C语言的主函数可以有2个以上参数
212.在文件操作中,用于检测和设置文件状态的函数有______。
A.文件结束检测函数feof()
B.读写文件出错检测函数ferror()
C.文件出错和结束标志文件函数才clearerr()
D.文件关闭函数fclose()
213.若有以下定义和语句:double r=99,*p=&r; *p=r;则以下不正确的叙述是:______
A.以上两处的*p含义相同,都说明给指针变量p赋值
B.语句“*p=r;”把变量r的地址值赋给指针变量p
C.语句“*p=r;”取变量r的值放回r中
D.在“double r=99,*p=&r;”中,把r的地址赋值给了p所指的存储单元
214.在C语言中,正确的int类型的常数是:______。
A.0
B.32768
C.037
D.0xaf
215.在缓冲文件系统中用于读写的函数有
A.putchar ()
B.fread()
C.rewind ()
D.purw()
216.下列说法中错误的是______。
A.不允许设置参数的默认值
B.设置参数的默认值只能在定义函数时设置
C.设置参数的默认值时,应该设置右边的参数
D.设置参数的默认值时,应该全部参数都设置
217.对静态变量的正确描述
A.静态局部变量在静态存储区内分配单元
B.静态外部变量可以赋初值,也可以不赋初值
C.静态外部变量的作用与外部变量相同
D.静态局部变量在函数调用结束时,仍保存其值,不会随着消失。
218.关于实参和形参的说法正确的是______。
A.在定义函数中指定的形参,在未出现函数调用时,它们并不占内存中的存储单元
B.实参可以是变量、常量或表达式
C.实参与形参的类型应相同或赋值兼容
D.实参变量对形参变量的数据传递是“值传递”
219.已知:int x;,则下面的说明指针变量pb的语句______不是正确的。
A.int pb=&x;
B.int *pb=x;
C.int *pb=&x;
D.*pb=*x
220.下列关于#include命令的叙述中,正确的是______。
A.一个#include命令中只能指定一个被包含文件
B.一个#include命令中可以指定多个被包含文件
C.一个被包含文件中又可以包含另一个被包含文件
D.#include命令中,文件名可以用双引号或尖括号括起来
221.以下______是正确的转义字符。()
A.‘\\'
B.‘\’
C.‘\81'
D.‘\0'
222.设有如下定义:int (*ptr)();则以下叙述中不正确的是______。
A.ptr是指向一维数组的指针变量
B.ptr是指向int型数据的指针变量
C.ptr是指向函数的指针,该函数返回一个int型数据
D.ptr是一个函数名,该函数的返回值是指向int型数据的指针
223.若定义:int a{0,2,4,6,8,10};以下描述正确的有
A.A、*(a+1)为元素6的地址
B.B、*(a+1)的值为2
C.C、**(a+1)+2的值为8
D.D、a与a相同
224.在动态存储区中主要存放以下数据______。
A.函数形式参数
B.自动变量
C.函数调用时的现场保护和返回地址
D.全局变量
225. 模运算符要求两侧均应为整型数据。()
226. 语句int pt中的*pt是指针变量名。
227. C程序中各函数之间既允许直接递归调用也允许间接递归调
228. 静态外部变量既可以在文本文件中引用,也可以在其它文件引用
229. C语言中,整常数有三种表示形式:十进制整数,八进制整数,十六进制整数。()
230. 一个int型与一个double型数据进行混合运算时,其结果是double型。
231. switch语句中,各个case和default的出现次序不影响执行结果。()
232. C程序的执行总是从第一个定义的函数开始
233. 宏名必须用大写字母表示。
234. putchar()函数可以输出一个字符串
235. 若打开文件的方式为“w”而该文件已经存在,则文件中原有数据被清除。
236. switch语句中,多个case可以共用一组执行语句。()
237. 主函数和其它函数可以相互调用
238. 使用符号常量的好处是:一,含义清楚,二,在需要改变一个常量时能做到“一改全改”()
239. 宏定义就是用宏名代替一个字符串,也就是简单的置换,不作正确性检查。
240. C语言规定标识符可由字母、数字、下划线三种字符组成,第一个字符可以为数字或字母。()
241. 函数必须有返回值,否则不能使用函数
242. 调用函数只可得到一个返回值,而用宏可以设法得到几个结果。
243. 数据结构指的是数据的组织形式,数组就是一种数据结构()
244. 对于double类型数组,不可以直接用数组名对数组进行整体输入或输出。
245. 使用getchar函数可以不添加#include 命令。()
246. C语言编译系统在给出逻辑运算结果时,以数值1代表真,以0代表假,但在判断一个量是否为“真”时,以0代表假,以非0代表真。()
247. 共用体所占的内存空间大小取决于占空间最多的那个成员变量。
248. 使用printf和scanf函数时,必须添加#include 命令。()
249. ‘ a’和“a”在内存中所占字节数相同。()
250. puts和gets函数只能输入或输出一个字符串
251. for(;;)语句相当于while(1)语句
252. 下面程序段的运行结果是##。char *p=”PDP1-0”;int I,d;for(I=0;I{d=isdigit(*(p+ii));if(d!=0) printf(“%c *(p+I));}
253. 下面程序段的运行结果是##。har str[]=”abcdefghi”,*p=str;printf(“%s”,p+5);
254. 把以下多项式写成只含七次乘法运算,其余皆为加、减运算的表达式##.5X^7+3X^6-4X^5+2X^4+X^3-6X^2+X+10
255. 若x和n均是int型变量,且x的初值为12,n的初值为5,则计算表达式后x的只为##。x%=(n%=2)
256. 在C语言中(以16位PC机为例),一个char型数据在内存中所占用的字节数为##;一个int型数据在内存中所占用的字节数为##。
257. 以下的运行结果是##。#include”string.h”int *P;main(){int a=1,b=2,c=3;p=&b;pp(a+c,&b);printf(“(!) %d %d %d ”,a,b,*p);}pp(inta ,int *b){int c=4;p=*b+c;a=*p-c;printf(“(2) %d %d %d ”,a,*b,*p);}
258. 表达式10/3的结果是##
259. 若有定义:int a=2,b=3;float x=3.5,y=2.5;则下面表达式的值为##.(float)(a+b)/2+(int)x%(int)y
260. 以下程序的运行结果是##。main(){ int i=2,x=5,j=7;fun(j,6);printf(“i =%d;j=%d;x=%d ”,i,j,x);}fun(int i,int j){ int x=7;printf(“i=%d;j=%d;x=%d ”,i,j,x);}
261. 下面程序的运行结果是##。#includemain##{int i,k=0;for(i=1;;i++){k++;while(k{k++;if(k%3==0) goto loop;}}loop:printf(“%d,%d,i,k”);}
262. 设x=10100011,若要通过x^y使x的高4位取反,低4位不变,则y的二进制数是##。
263. 下面程序段的运行结果是##。i=1;sdo{s+=i++;if(s%7==0) continue;else ++i;}while(sprintf(“%d”,i);
264. 请读程序片段:int x=1;printf(“%d ”,x);上面程序片段的输出结果是##.
265. 设二进制数x的值是11001101,若想通过x&y运算使x中的低4位不变,高4位轻零,则y的二进制数是##.
266. 设int x;当x的值分别为1、2、3、4时.表达式(x&l==1)?1:o的值分别是##,##,##,##.
267. 以下程序的运行结果是##.main##{char a=-8;unsigned char b=248;printf(“%d,%d”,a>>2,b>>2);}
268. 与表达式a&=b 等价的另一书写形式是##.
269. 在C语言中,一个int型数据在内存中占用2个字节,则int型数据的取值范围为##
270. feof(fp)函数用来判断文件是否结束,如果遇到文件结束,函数值为##,否则为##。
271. 与表达式x^=y-2等价的另一书写形式是##.
272. 若a是int型变量,且a的初值为6,则计算表达式后a的值为##a+=a-=a*a
273. 下面程序的运行结果是##。#includemain##{int y,a;y=2;a=1;while(y--!=-1){do{a*=y; a++;}while(y--);}printf(“%d,%d”,a,y);}
274. 表达式10%3的结果是##
275. 已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=’a’+’8’-‘3’的值为##。
276. 读程序片段:int a=-1;a=a |0377;printf(“%d,%o ”,a,a);以上程序片段的输出结果是##.
277. C语言规定,可执行程序的开始执行点是##
278. 当运行以下程序时,从键盘输入 bookbook (表示回车, 表示空格),则下面程序段运行的结果是##。char a1,a2,*s1=a1,*s2=a2;gets(s1);gets(s2);if(!strcmp(s1,s2)) printf(“*”):else printf(“#”);printf(“%d”,strlen(strcat(s1,s2)));
279. 当调用函数read从磁盘文件中读数据时,若函数的返回值为10,则表明读入了10个字符;若函数的返回值为0,则是##;若函数的返回值为-1,则意味着##。
280. 若有以下定义,则计算表达式y+=y-=m*=y后y值是##
281. 在C语言中,&运算符作为单目运算符时表示的是##;作为双目运算符时表示的是##运算.
282. 函数调用语句:fgets(buf,n,fp);从fp指向的文件中读入##个字符放到buf字符数组中。函数值为##。
283. 把int类型变量low中的低字节及变量high中的高字节放入变量s中的表达式是##。
284. 在C语言中的实型变量分为两种类型,他们是##和##)。
285. 下面程序段的运行结果是##。char a[]=”123456789”,*p;int i=0;p=a;while(*p){if(i%2==0) p=’*’;p++; i++; }puts(a)
286. 在C语言中,文件的存取是以##为单位的,这种文件被称作##文件。
287. 在C语言中(以16位PC机为例),一个float型数据在内存中所占用的字节数为##;一个double型数据在内存中所占用的字节数为##。
288. 若x和y都是double型变量,且x的初值为3.0,y的初值为2.0,则表达式pow(y,fabs(x))的值为##。
289. 若有定义:int x=3,y=2;float a=2.5,b=3.5;则下面表达式的值为##。
290. 以下程序的运行结果是##.main##{struct EXAMPLE{struct{int x;inty;}in;int a;int b;}e;e.a=1;e.b=2;e.in.x=e.a*e.b;e.in.y=e.a+e.b;printf(“%d,%d”,e.in.x,e.in.y);}
291. 下面程序运行结果是##。char s=”abcd”;char *ssp=s;sp++;puts(strcat(sp,”ABCD”));
292. 若x=0123,则表达式(5+(int)(x))&(2)的值是##
293. 下面程序段的运行结果是##。char s, *sp=”HELLO!”;sp=strcpy(s,sp);s=’h’;puts(sp);
294. 请读程序片段:int a=1,b=2;if(a&b)printf(“*** ”);else printf(“$$$ ”);以上程序片段的输出结果是##.
295. 面程序段的运行结果是##。char[]=”12345’,*p;int s=0;for9p=a;*p!=``;p++) s=10*s+*p-`0`;printf(“%s”,P+5);
296. 若a、b和c均是int型变量,则计算表达式后,a值为##,b值为##,c值为##。a=(b=4)+(c=2)
297. 若有定义:int e=1,f=4,g=2;float m=10.5,n=4.0,k;则计算赋值表达式k=(e+f)/g+sqrt ((double)n)*1.2/g+m后k的值是##.
无忧答案网附件是答案,核对题目下载
页:
[1]