|
一、单选题(共 35 道试题,共 70 分。)V 1. 设有如下的程序段: char str[ ]="hello"; char *ptr; ptr=str; 执行上面的程序段后,*(ptr+5)的值为( )
A. o''
B. ''\0''
C. 不确定的值
D. ''o''的地址
满分:2 分
2. 有以下程序: 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
满分:2 分
3. 若有说明:int a[3][4]; 则对a数组元素的正确引用是( )
A. a[2][4]
B. a[1,3]
C. a[1+1][0]
D. a(2)(1);
满分:2 分
4. 以下不正确的语句为( )
A. if(x>y);
B. if (x= y) &&(x! = 0) x+= y;
C. if(x!= y)scanf("%d",&x); else scanf("%d",&y);
D. if(x< y){x++ ;y++;}
满分:2 分
5. 以下程序有语法错误,有关错误原因的正确说法是 ( ) main() { int G=5,k; void prt_char(); ... k=prt_char(G); ... }
A. 语句void prt_char( );有错,它是函数调用语句,不能用void说明
B. 变量名不能使用大写字母
C. 函数说明和函数调用语句之间有矛盾
D. 函数名不能使用下划线
满分:2 分
6. 下面程序应能对两个整型变量的值进行交换。以下正确的说法是( ) main( ) {int a=10,b=20; printf("(1)a=%d,b=%d\n",a,b); swap(&a,&b); prinif("(2)a=%d,b=%d\n",a,b);} swap(int p,int q) {int t; t=p;p=q;q=t;}
A. 该程序完全正确
B. 该程序有错,只要将语句swap(&a,&b);中的参数改为a,b即可
C. 该程序有错,只要将swap()函数中的形参p和q以及t均定义为指针(执行语句不变)即可
D. 以上说法都不正确
满分:2 分
7. 以下对一维整型数组a的正确说明是( )
A. int a(10)
B. int n=10,a[n];
C. int n;scanf("%d",&n);int a[n];
D. #define SIZE 10 <CR> int a[SIZE];
满分:2 分
8. 己有变量定义和函数调用语句:int a=25 ;print_vaue(&a);下面函数的正确输出结果是( ) void print_value(int *x) {printf("%d\n",++*x);}
A. 23
B. 24
C. 25
D. 26
满分:2 分
9. 下面程序的运行结果是( ) #include<stdio.h> { int k=0; char c='A'; do {switch(c++) {case 'A':k++;break; case 'B':k--; case 'C':k+=2;break; case 'D':k=k%2;continue; case 'E':k=k*10;break; default:k=k/3;} k++;} while(c<'G')
A. k=3
B. k=4
C. k=2
D. k=0
满分:2 分
10. 能正确表示逻辑关系:“a≥10或a≤0”的C语言表达式是( )
A. a>=10 or a<=0
B. a>=0|a<=10
C. a>=10 &&a<=0
D. a>=10‖a<=0
满分:2 分
11. 对下面程序 ,从整体功能及语法上看,说法正确的是( )(每行程序前面的数字表示行号)。 1 main() 2 { 3 float a[10]={0.0}; 4 int i 5 for(i=0;i<3;i++) scanf("%d",&a[i]); 6 for(i=0;i<10;i++) a[0]=a[0]+a[i]; 7 printf("%d\n",a[0]); 8 }
A. 没有错误
B. 第3行有错误
C. 第5行有错误
D. 第7行有错误
满分:2 分
12. 以下叙述中正确的是( )
A. 在程序的一行上可以出现多个有效的预处理命令行
B. 使用带参的宏时,参数的类型应与宏定义时的一致
C. 宏替换不占用运行时间,只占编译时间
D. 在以下定义中CR是称为"宏名"的标识符 #define C R 045
满分:2 分
13. 若有说明:int a[ ][4]={0,0};则下面不正确的叙述是( )
A. 数组a的每个元素都可得到初值0
B. 二维数组a的第一维大小为1
C. 因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a行数为1
D. 只有元素a[0][0]和a[0][1]可得初值0,其余元素均得不到初值0
满分:2 分
14. putchar函数可以向终端输出一个( )
A. 整型变量表达式值
B. 实型变量值
C. 字符串
D. 字符或字符型变量值
满分:2 分
15. 若有以下定义,则能使值为3的表达式是( ) int k= 7,x =12;
A. x%=(k%= 5)
B. x%=(k-k%5)
C. x%=k- k%5
D. (x%=k)-(k%=5)
满分:2 分
16. 以下对二维数组a的正确说明是( )
A. int a[3][];
B. float a(3,4);
C. double a[1][4];
D. float a(3)(4)
满分:2 分
17. 以下不正确的if语句形式是( )
A. if(x>y && x!=y);
B. if(x= =y) x+=y;
C. if(x != y) scanf("%d",&x ) else scanf("%d",&y);
D. if(x<y) {x++;y++;}
满分:2 分
18. 下面程序段,说法正确的为( ) for (t=1; t<=100;t++) {scanf("%d",&x); if(x<0) continue; printf("%3d",x);}
A. 当x<0时整个循环结束
B. x>=0时什么也不输出
C. printf函数永远也不执行
D. 最多允许输出100个非负整数
满分:2 分
19. 若有如下语句: int x=3; do { printf(" %d\n",x -=2);} while(!(--x)); 则上面程序段( )
A. 输出的是 1
B. 输出的是1和-2
C. 输出的是3和0
D. 是死循环
满分:2 分
20. 与下面程序段等价的是( ) for(n=100;n<=200; n++) {if (n%3==0) continue; printf("%4d",n);}
A. for(n=100;(n%3)&& n<=200;n++) printf("%4d",n);
B. for(n=100;(n%3)|| n<=200;n++) printf("%4d",n);
C. for(n=100;n<=200;n++) if(n%3!=0) printf("%4d",n)
D. for(n=100;n<=200;n++) {if(n%3) printf("%4d",n); else continue; break;}
满分:2 分
21. C语言规定,函数返回值的类型是由( ) 决定的
A. return语句中的表达式类型
B. 调用该函数时的主调函数类型
C. 调用该函数时由系统临时
D. 在定义函数时所指定的函数类型
满分:2 分
22. 以下正确的说法是( )
A. 用户若需要调用标准库函数,调用前必须重新定义
B. 用户可以重新定义标准库函数,如若此,该函数将失去原有定义
C. 系统不允许用户重新定义标准库函数
D. 用户若需要使用标准库函数,调用前不必使用预处理命令将该函数所在的头文件包含编译,系统会自动调用。
满分:2 分
23. 设有说明:char w; int x; f1oat y; double z;则表达式w* x+z-y值的数据类型为( )
A. float
B. char
C. int
D. double
满分:2 分
24. 若有条件表达式(exp) ? a++:b--,则以下表达式中能完全等价于表达式(exp)的是( )
A. (exp==0)
B. (exp!=0)
C. (exp==1)
D. (exp!=1)
满分:2 分
25. 在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是( )
A. extern
B. register
C. auto
D. static
满分:2 分
26. 以下正确的描述是( )
A. C语言的预处理功能是指完成宏替换和包含文件的调用
B. 预处理指令只能位于C源程序文件的首部
C. 凡是C源程序中行首以"#"标识的控制行都是预处理指令
D. C语言的编译预处理就是对源程序进行初步的语法检查
满分:2 分
27. 以下正确的描述是( )
A. continue语句的作用是结束整个循环的执行
B. 只能在循环体内和switch语句体内使用break语句
C. 在循环体内使用break语句或continue语句的作用相同
D. 从多层循环嵌套中退出时, 只能使用goto语句
满分:2 分
28. 若有函数max(a,b),并且已使函数指针变量p指向函数max,当调用该函数时,正确的调用方法是( )
A. (*p)max(a,b);
B. *pmax(a,b);
C. (*p)(a,b);
D. *p(a,b);
满分:2 分
29. 设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为( )
A. int
B. float
C. double
D. 不确定
满分:2 分
30. 以下正确的描述是( )
A. 函数的定义可以嵌套,但函数的调用不可以嵌套
B. 函数的定义不可以嵌套,但函数的调用可以嵌套
C. 函数的定义和函数的调用均不可以嵌套
D. 函数的定义和函数的调用均可以嵌套
满分:2 分
31. 对下面程序段: #define A 3 #define B(a) ((A+1)*a) x=3*(A十B(7)); 正确的判断是( )
A. 程序错误,不许嵌套宏定义
B. )x=93
C. x=21
D. 程序错误,宏定义不许有参数
满分:2 分
32. 以下正确的叙述是( )
A. 在C程序中,每行中只能写一条语句
B. 若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数
C. 在C程序中,无论是整数还是实数,都能被准确无误地表示
D. 在C程序中,%是只能用于整数运算的运算符
满分:2 分
33. 下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除。请选择填空( ) #include <stdio.h> main() {int i=0,j,k; do{ i++;k=316-13*i;} while(【1】);j=k/11; printf(" 316=13* %d+11*%d",i,j);}
A. k/11
B. k%11
C. k/11==0
D. k/11== 0
满分:2 分
34. 设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是( )
A. 7
B. 8
C. 6
D. 2
满分:2 分
35. 若调用一个函数,且此函数中没有return语句,关于该函数则正确的说法是( )
A. 没有返回值
B. 返回若干个系统默认值
C. 能返回一个用户所希望的函数值
D. 返回一个不确定的值
满分:2 分
二、多选题(共 5 道试题,共 10 分。)V 1. 有定义:int a[5][4],*p=a[0];,则能正确引用a[2][3]元素地址的有( )
A. a[2]+3
B. *((p+2)+3)
C. *(p[2]+3)
D. *(a+2)+3
E. p+2*4+3
满分:2 分
2. 以下程序正确计算p=n! (n>=0)的是( )
A. for(p=1.0,k=1;k<=n;) p*=k++;
B. p=1.0;k=0;while(k<n) p*=++k;
C. p=1.0;k=1;do{++k;p*=k;} while(k<=n);
D. p=1.0;for(k=n;k>=1;k--) p*=k--;
满分:2 分
3. 以下程序正确计算p=n! (n>=0)的是( )
A. for(p=1.0,k=1;k<=n;) p*=k++;
B. p=1.0;k=0;while(k<n) p*=++k;
C. p=1.0;k=1;do{++k;p*=k;} while(k<=n);
D. p=1.0;for(k=n;k>=1;k--) p*=k--;
满分:2 分
4. 定义char s[81]; 后,能正确输入一个字符串到数组s的语句是( )
A. gets(s);
B. scanf (”%c”,s);
C. scanf (”%s”,&s[0]);
D. gets(&s[0]);
满分:2 分
5. 以下关于C源程序文件的说法中正确的是( )
A. 是一种二进制文件
B. 是一种文本(ASCII码)文件
C. 可以用DOS的type命令显示其内容
D. 文件扩展名一般为c
满分:2 分
三、判断题(共 10 道试题,共 20 分。)V 1. C语言把文件看作是一个字符的序列。
A. 错误
B. 正确
满分:2 分
2. 以数组名作函数参数时,实参数组与形参数组都不必定义长度,因此实参与形参的结合方式是地址结合,与数组长度无关。
A. 错误
B. 正确
满分:2 分
3. 已知int a[4],*p;则语句p=&a;是正确的。
A. 错误
B. 正确
满分:2 分
4. 动态变量都存储在内存动态存储区中。
A. 错误
B. 正确
满分:2 分
5. 宏替换就是字符替换,不能进行任何计算。
A. 错误
B. 正确
满分:2 分
6. 在内存中存储结构体类型的变量要占连续一段的存储单元。
A. 错误
B. 正确
满分:2 分
7. return后面括号里的表达式的值即是此函数的值。
A. 错误
B. 正确
满分:2 分
8. 对二维数组a来说,由于a+1与*(a+1)的值相等,因此二者的含义是一样的。
A. 错误
B. 正确
满分:2 分
9. 若有定义:long int j, *p;,则操作j=p;是合法操作。
A. 错误
B. 正确
满分:2 分
10. continue语句用在循环体中,可使整个循环不结束。
A. 错误
B. 正确
满分:2 分 |
|