c语言试题库简单选择题

更新时间:2023-05-27 14:56:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1.下列语句中符合C语言语法的赋值语句是

(A) a=7+b+c=a+7; (B) a=7+b++=a+7; (C) a=7+b,b++,a+7 (D) a=7+b,c=a+7;

2.在C语言中,要求运算数必须是整型的运算符是

(A) % (B) / (C) < (D) !

3.以下有4组用户标识符,其中合法的一组是

(A) For (B) 4d (C) f2_G3 (D) WORD

4. 在C语言中,形参的缺省存储类是

(A) auto (B) register (C) static (D) extern

5. 以下不能正确进行字符串赋初值的语句是

(A) char str[5]="good!"; (B) char str[]="good!";

(C) char *str="good!"; (D) char str[5]={‘g',‘o',‘o',‘d'};

6.若定义:int a=511,*b=&a;, 则printf("%d\n",*b);的输出结果为

(A) 无确定值 (B) a的地址 (C) 512 (D) 511

7. 以下程序中,while循环的循环次数是D

main()

{ int i=0;

while(i<10)

{ if(i<1) continue;

if(I==5) break;

i++;

}

......

}

(A) 1 (B) 10

(C) 6 (D) 死循环,不能确定次数

8.假定x和y为double型,则表达式x=2,y=x+3/2的值是

(A) 3.500000 (B) 3 (C) 2.000000 (D) 3.000000

9.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是

(A) 地址传递

(C) 由实参传给形参,再由形参传回实参 (B) 单向值传递 (D) 传递方式由用户指定

10. 已知字母A的ASCⅡ码为十进制的65,下面程序的输出是

(A) 67,D (B) B,C (C) C,D (D) 不确定的值

main()

{ char ch1,ch2;

ch1='A'+'5'-'3';

ch2='A'+'6'-'3';

PRINTF("%d,%c\n",ch1,ch2);}

11.下面程序的输出是

(A) 0 (B) 1 (C) 3 (D) 不确定的值

main()

{ int x=10,y=3;

printf("%d\n",y=x/y);}

12.若执行下面的程序时从键盘上输入3和4,则输出是

(A) 14

main() (B) 16 (C) 18 (D) 20

{ int a,b,s;

scanf("%d%d",&a,&b);

s=a;

if(a5) printf("%d\n",x);

else printf("%d\n,x--);}

13.下面程序的输出是

(A) 3 (B) 4

main()

{ int a[10]={ 1,2,3,4,5,6,7,8,9,10},*p=a;

printf("%d\n",*(p+2));}

14.执行下面程序中输出语句后,a的值是

(A) 65 (B) 20 (C) 15 (D) 10

main()

{int a;

printf("%d\n",(a=3*5,a*4,a+5));}

15.下面程序的输出是

(A) 0 1 2 3 (B) 0 4 0 10

main()

{ enum team { my,your=4,his,her=eis+10};

printf("%d%d%d%d\n",my,your,his,her);}

16.下面程序的输出是

(A) 0 0 3 (B) 0 1 2 (C) 1 0 3

main()

{ int a=-1,b=4,k;

k=(a++<=0)&&(!(b--<=0));

printf("%d%d%d%\n",k,a,b);}

17.下列函数的功能是

(A)求字符串的长度

(C)将字符串X复制到字符串Y

int fun1(chat* x)

{char*y=x;

while(*y++);

return(y-x-1);}

18.若fp是指向某文件的指针,且已读到该文件的末尾,则C语言函数feof( fp)的返回是

(A)EOF (B)-1 (C)非零值 (D)NULL

19.根据下面的定义,能印出字母M的语句是

(A)printf("%c\n",class[3].name);

(B)printf("%c\n",class[3].name[1]);

(C)printf("%c\n",class[2].name[1]);

(D)printf("%c\n",clsaa[2].name[0]);

struct person{ char name[9]; int age; };

struct person class[10]={"john",17,

"paul",19,

"mary",18,

"adam",16};

20.下列关于C语言数据文件的叙述中正确的是

(A)文件由ASCII码字符序列组成,C语言只能读写文本文件

(B)文件由二进制数据序列组成,C语言只能读写二进制文件

(C)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件

(D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件

21.C语言提供的合法的数据类型关键字是

(A)Double (B)short (C)integer (D)Char

22.在C语言中,合法的长整型常数是

(A)0L (B)4962710 (C)0.054838743 (D)2.1869e10 (C) 0 4 5 15 (D) 1 4 5 15 (C) 1 (D) 2 (D) 1 1 2 (B)比较两个字符串的大小 (D)将字符串X连接到字符串Y后面

23.表达式:10!=9的值是

(A)true (B)非零值 (C)0 (D)1

24.合法的C语言中,合法的长整型常数是

(A)'\t' (B)"A" (C)65 (D)A

25.若有说明和语句:

int a=5;

a++;

此处表达式a++的值是

(A)(A)7 (B)6 (C)5 (D)4

26.C语言中最简单的数据类型包括

(A)整型、实型、逻辑型 (B)整型、实型、字符型

(C)整型、字符型、逻辑型 (D)整型、实型、逻辑型、字符型 

27.为表示关系x大于等于y大于等于z,应使用C语言表达式

(A)(x>=Y)&&(Y>=z) (B)(x>=Y)AND(y>=z) (C)(x>=Y>=z) (D)(x>=Y)&(Y>=z)

28.下列对C语言字符数组的描述中错误的是

(A)字符数组可以存放字符串 (B)字符数组中的字符串可以整体输入、输出

(C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 (D)不可以用关系运算符对字符数组中的字符串进行比较

29.以下说法中正确的是

(A)C语言程序总是从第一个定义的函数开始执行 (B)在C语言程序中,要调用的函数必须在main()函数中定义

(C)C语言程序总是从main()函数开始执行 (D)C语言程序中的main()函数必须放在程序的开始部分

30.在下列选项中,不正确的赋值语句是

(A)++t; (B)n1=(n2=(n3=0));

(C)k=i==j; (D)a=b+c=1;

31.若有说明:int i,j=7, *p=&i;,则与i=j;等价的语句是

(A)I= *P; (B)*P=*&J; (C)i=&j; (D)i=* *p;

32.不能把字符串:Hello!赋给数组b的语句是

(A)char b[10]={'H','e','l','l','o','!'};

(B)char b[10];b="Hello!";

(C)char b[10];strcpy(b,"Hello!");

(D)char b[10]="Hello!";

33.若有以下说明:

int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};

char c='a',d,g;

则数值为4的表达式是

(A)a[g-c] (B)a[4] (C)a['d'-'c'] (D)a['d'-c]

34.若有以下说明:

int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;

则数值为6的表达式是

(A)*p+6 (B)*(p+6) (C)*p+=5 (D)p+5

35.若有以下说明:

int w[3][4]o={{0,1},{2,4},{5,8}};

int(*p)[4]=w;

则数值为4的表达式是

(A)*w[1]+1 (B)p++,*(p+1)

(C)w[2][2] (D)p[1][1]

36.若程序中有下面的说明和定义

struct abc

{int x;char y;}

struct abc s1,s2;

则会发生的情况是

(A)编译进错 (B)程序将顺利编译`连接`执行

(C)能顺利通过编译`连接`但不能执行 (D)能顺利通过编译`但连接出错

37.能正确表示a≥10或a≤0的关系表达式是

(A)a>=10 or a<=0 (B)a>=10│a<=0

(C)a>=10││a<=0 (D)a>=10 ││a<=0

38.t为int类型,进人下面的循环之前,t的值为0

while( t=l )

{ ……}

则以下叙述中正确的是

(A) 循环控制表达式的值为0 (B) 循环控制表达式的值为1

(C) 循环控制表达式不合法(D) 以上说法都不对

39.下列程序的输出结果是

(A) 5

struct abc

{ int a, b, c; };

main()

{ struct abc s[2]={{1,2,3},{4,5,6}}; int t;

t=s[0],a+s[1],b;

printf("%d \n",t);

}

40.有以下程序

#include <stdio.h>

main()

{ printf("%d\n",NULL); }

程序运行后的输出结果是

(A)0 (B)1 (C)-1

41.C语言源程序名的后缀是

(A).exe (B).C (C).obj (D).cp

42.可在C程序中用做用户标识符的一组标识符是

(A)and (B)Date (C)Hi (D)case

43.以下选项中,合法的一组C语言数值常量是

(A)028 (B)12. (C).177 (D)0x8A

44.以下叙述中正确的是

(A)C语言程序将从源程序中第一个函数开始执行

(B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行

(C)C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束

(D)main可作为用户标识符,用以命名任意一个函数作为主函数

45.若在定义语句:int a,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是

(A)scanf("%d",a,b,c); (B)scanf("%d%d%d",a,b,c);

(C)scanf("%d",p); (D)scanf("%d",&p);

46.以下关于long、int和short类型数据占用内存大小的叙述中正确的是

(A)均占4个字节 (B)根据数据的大小来决定所占内存的字节数

(C)由用户自己定义 (D)由C语言编译系统决定

47.若变量均已正确定义并赋值,以下合法的C语言赋值语句是

(A)x=y==5; (B)x=n%2.5; (C)x+n=I; (D)x=5=4+1;

48.有以下程序段

int j; float y; char name[50];

scanf("%2d%f%s",&j,&y,name);

当执行上述程序段,从键盘上输入55566 7777abc后,y的值为 (D)NULL没定义,出错 (B) 6 (C) 7 (D) 8

(A)55566.0 (B)566.0 (C)7777.0 (D)566777.0

49.若变量已正确定义,有以下程序段

i=0;

do printf("%d,",i);while(i++);

printf("%d\n",i)

其输出结果是(B)。

(A)0,0 (B)0,1 (C)1,1 (D)程序进入无限循环

50.若程序前面已在命令中包含math.h文件,不能够正确计算上述公式的程序段是

(A)if(x>=0) y=sqrt(x); (B)y=sqrt(x)

else y=sqrt(-x); if(x<0) y=sqrt(-x);

(C)if(x>=0)y=sqrt(x); (D)y=sqrt(x>=0?x:-x);

If(x<0)y=sqrt(-x);

51.设有条件表达式:(EXP)?i++;j--,则以下表达式中(EXP)完全等价的是

(A)(EXP= =0) (B)(EXP!=0) (C)(EXP= =1) (D)(EXP!=1)

52.有以下程序

#include

main()

{int y=9;

for( y>0;y--)

if(y%3= =0) printf("%d",--y);

}

程序的运行结果是

(A)741 (B)963 (C)852 (D)875421

53.已有定义:char c; ,程序前面已在命令行中包含ctype.h文件,不能用于判断c中的字符是否为大写字母的表达式是(B)。

(A)isupper(c) (B)’A’<=c<=’Z’

(C)’A’<=c&&c<=’Z’ (D)c<=(‘2’-32)&&(‘a’-32)<=c

54.有以下程序

#include

main()

{int i,j,m=55;

for(i=1;i<=3;i++)

for(j=3;j<=i;j++) m=m%j;

printf("%d\n",m);

}

程序的运行结果是

55.若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是

(A)函数的实参和其对应的形参共占同一存储单元

(B)形参只是形式上的存在,不占用具体存储单元

(C)同名的实参和形参占同一存储单元

(D)函数的形参和实参分别占用不同的存储单元

56.已知字符’A’的ASCⅡ代码值是65,字符变量c1的值是’A’,c2的值是’D’。执行语句printf("%d,%d",c1,c2-2);后,输出结果是

(A)A,B (B)A,68 (C)65,66 (D)65,68

57.以下叙述中错误的是

(A)改变函数形参的值,不会改变对应实参的值

(B)函数可以返回地址值

(C)可以给指针变量赋一个整数作为地址值

(D)当在程序的开头包含文件stdio.h时,可以给指针变量赋NULL

58.以下正确的字符串常量是

(A)"\\\" (B)’abc’ (C)OlympicGames (D)""

59.设有定义:char p[]={’1’,’2’,’3’},*q=p; ,以下不能计算出一个char型数据所占字节数的表达式是

(A)sizeof(p) (B)sizeof(char) (C) sizeof(*q) (D)sizeof(p[0])

60.若有定义语句:int a[3][6]; ,按在内存中的存放顺序,a数组的第10个元素是

(A)a[0][4] (B)a[1][3] (C)a[0][3] (D)a[1][4]

61.以下不合法的用户标识符是

(A)j2_KEY (B)Double (C)4d (D)_8_

62.以下不合法的字符常量是

(A)′\018′(B)′\"′ (C)′\\′ (D)′\xcc′

63.表达式3.6-5/2+1.2+5%2的值是

(A)4.3 (B)4.8 (C)3.3 (D)3.8

64.以下能正确定义字符串的语句是

(A)char str[]={′\064′};(B)char str="kx43";

(C)char str="; (D)char str[]="\0";

65.以下数组定义中错误的是

(A)int x[][3]={0};

(B)int x[2][3]={{l,2},{3,4},{5,6}};

(C)int x[][3]={{l,2,3},{4,5,6}};

(D)int x[2][3]={l,2,3,4,5,6};

66.若要求从键盘读入含有空格字符的字符串,应使用函数

(A)getc() (B)gets() (C)getchar() (D)scanf()

67. 若各选项中所用变量已正确定义,函数fun中通过return语句返回一个函数值,以下选项中错误的程序是

(A)main() (B)float fun(int a,int b){ }

{ x=fun(2,10); } main()

float fun(int a,int b){ }

(C)float fun(int,int);

main()

{ x=fun(2,10); }

{ x=fun(i,j); } (D)main() {float fun(int i,int j); x=fun(i,j); } float fun(int a,int b){ } float fun(int a,int b){ }

68.在以下给出的表达式中,与while(E)中的(E)不等价的表达式是

(A)(!E==0) (B)(E>0‖E<0) (C)(E==0) (D)(E!=0)

69.要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确定义, 以下正确的程序段是

(A)while((ch=getchar())!=′N′)printf("%c",ch);

(B)while(ch=getchar()!=′N′)printf("%c",ch);

(C)while(ch=getchar()==′N′)printf("%c",ch);

(D)while((ch=getchar())==′N′)printf("%c",ch);

70.已定义以下函数

int fun(int *p)

{return *p;)

fun函数返回值是

(A)不确定的值 (B)一个整数 (C)形参P中存放的值 (D)形参P的地址值

71.若有说明语句:double *p,a;则能通过scanf语句正确给输入项读入数据的程序段是

(A)*p=&a; scanf("%1f",p);(B)*p=&a; scanf("%f",p);

(C)p=&a; scanf("%1f",*p);(D)p=&a; scanf("%1f",p);

72.设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为

(A)EOF (B)非0值 (C)0 (D)NULL

73.设有以下语句

int a=1,b=2,c;

c=a^(b<<2);

执行后,C的值为

(A)6 (B)7 (C)8 (D)9

74.有以下程序

main()

{int y=10;

while(y--);printf("y=%d\n",y);

}

程序执行后的输出结果是

(A)y=0 (B)y=-1

75.有以下程序

main()

{int a=0,b=0,c=0,d=0;

if(a=1) b=1;c=2;

else d=3;

printf("%d,%d,%d,%d\n",a,b,c,d);

}

程序输出

(A)0,1,2,0 (B)0,0,0,3 (C)1,1,2,0

76.以下叙述中错误的是

(A)C语言源程序经编译后生成后缀为.obj的目标程序 (D)编译有错 (C)y=1 (D)while构成无限循环

(B)C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件

(C)用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中

(D)C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令

77.以下叙述中错误的是

(A)算法正确的程序最终一定会结束

(B)算法正确的程序可以有零个输出

(C)算法正确的程序可以有零个输入

(D)算法正确的程序对于相同的输入一定有相同的结果

78.有以下程序

main()

{int a=0,b=0,c=0,d=0;

if(a=1) b=1;c=2;

else d=3;

printf("%d,%d,%d,%d\n",a,b,c,d);

}

程序输出

(A)0,1,2,0 (B)0,0,0,3 (C)1,1,2,0

79.以下叙述中错误的是

(A)C语言源程序经编译后生成后缀为.obj的目标程序 (D)编译有错

(B)C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件

(C)用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中

(D)C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令

80.以下叙述中错误的是

(A)算法正确的程序最终一定会结束

(B)算法正确的程序可以有零个输出

(C)算法正确的程序可以有零个输入

(D)算法正确的程序对于相同的输入一定有相同的结果

81.以下叙述中错误的是

(A)C程序必须由一个或一个以上的函数组成

(B)函数调用可以作为一个独立的语句存在

(C)若函数有返回值,必须通过return语句返回

(D)函数形参的值也可以传回给对应的实参

82.以下叙述中错误的是

(A)C程序中的#include和#define行均不是C语句

(B)除逗号运算符外,赋值运算符的优先级最低

(C)C程序中,j++;是赋值语句

(D)C程序中,+、-、*、/、%号是算术运算符,可用于整型和实型数的运算

83.以下叙述中正确的是

(A)预处理命令行必须位于C源程序的起始位置

(B)在C语言中,预处理命令行都以"#"开头

(C)每个C程序必须在开头包含预处理命令行:#include<stdio.h>

(D)C语言的预处理不能实现宏定义和条件编译的功能

84.在C语言提供的合法的关键字是

(A)swicth (B)cher

(C)Case (D)default

85.在C语言中,合法的字符常量是

(A)'\084' (B)'\x43

(C)'ab' (D)"\0"

86.若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是

(A)1 (B)2

(C)2.0 (D)2.5

87.合法的数组定义是

(A)int a[]="string"; (B)int a[5]={0,1,2,3,4,5};

(C)vhst s="string"; (D)char a[]={0,1,2,3,4,5};

88.若有定义和语句:

char s[10]:s="abcd";printf("%s\n",s);

则结果是(以下u代表空格)

89.输出abcd (B)输出a

(C)输出abcduuuuu (D)编译不通过

90.若有定义和语句:

int **pp,*p,a=10,b=20;

pp=&p;p=&a;p=&b;printf("%d\n",*p,**pp);

则输出结果是

(A)10,20 (B)10,10

(C)20,10 (D)20,20

91.,若有以下定义和语句:

int u=010,v=0x10,w=10;

printf("%d,%d,%d\n,u,v,w);

则输出结果是

.(A)8,16,10 (B)10,10,10

(C)8,8,10 (D)8,10,10

93.若有以下定义和语句

char c1='b',c2='e';

printf("%d,%c\n",c2-c1,c2-'a'+"A");

则输出结果是

(A)2,M (B)3,E

(C)2,E (D)输出项与对应的格式控制不一致,输出结果不确定

94.若有以下定义:

char s[20]="programming",*ps=s;

则不能代表字符o的表达式是

(A)ps+2 (B)s[2]

(C)ps[2] (D)ps+=2,*ps

95.若ij已定义为int类型,则以下程序段中内循环体的总的执行次数是

for (i=5;i;i--)

for(j=0;j<4;j++){...}

(A)20 (B)25

(C)24 (D)30

96.若有以下定义和语句:

char *s1="12345",*s2="1234";

printf("%d\n",strlen(strcpy(s1,s2)));

则输出结果是

(A)4 (B)5

(C)9 (D)10

97.若有以下定义和语句:

int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;

则不能表示a数组元素的表达式是

(A)*p (B)a[10]

(C)*a (D)a[p-a]

98.在以下一组运算符中,优先级最高的运算符是

(A)<= (B)=(C)% (D)&&

99.若有以下定义和语句:

int w[2][3],(*pw)[3]; pw=w;

则对w数组元素非法引用是

(A)*(w[0]+2) (B)*(pw+1)[2]

(C)pw[0][0] (D)*(pw[1]+2)

100.若有以下程序片段:

char str[]="ab\n\012\\\"";

printf(%dd",strlen(str));

上面程序片段的输出结果是

(A)3 (B)4(C)6 (D)12

101.函数调用:strcat(strcpy(str1,str2),str3)的功能是

(A)将串str1复制到串str2中后再连接到串str3之后

(B)将串str1连接到串str2之后再复制到串str3之后

(C)将串str2复制到串str1中后再将串str3连接到串str1之后

(D)将串str2连接到串str1之后再将串str1复制到串str3中

102.以下对C语言函数的有关描述中,正确的是

(A)在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参 (B)C函数既可以嵌套定义又可以递归调用

(C)函数必须有返回值,否则不能使用函数

(D)C程序中有调用关系的所有函数必须放在同一个源程序文件中

103.以下叙述中不正确的是

(A)在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值.

(B)在C中,在调用函数时,实在参数和对应形参在类型上只需赋值兼容.

(C)在C中,外部变量的隐含类别是自动存储类别.

(D)在C中,函数形参可以说明为register变量.

104.下列不正确的转义字符是

(A)'\\' (B)'\" (C)'074'

105.若有以下定义:

char a; int b;

float c; double d;

则表达式a*b+d-c值的类型为 (D)'\0'

(A) float (B) int (C) char (D) double

(C) (X<=Y<=Z) (D) (X<=Y)&(Y<=Z) 106.表示关系x<=y<=z的c语言表达式为 (A) (X<=Y)&&(Y<=Z) (B) (X<=Y)AND(Y<=Z)

107.设a=1,b=2,c=3,d=4,则表达式:a<B?A:C<D?A:D的结果为

(A) 4 (B) 3 (C) 2 (D) 1

108.设x为int型变量,则执行以下语句后,x的值为

x=10; x+=x-=x-x;

(A) 10 (B) 20 (C) 40 (D) 30

(D) y=int(x); 109.下列可作为C语言赋值语句的是 (A) x=3,y=5 (B) a=b=6 (C) i--;

x=y=z=1;

t=++x||++y&&++z;

(A) 不定值 (B) 2 (C) 1 110.设x,y,z,t均为int型变量,则执行以下语句后,t的值为 (D) 0

111.设i是int型变量,f是float型变量,用下面的语句给这两个变量输入值:

scanf("i=%d,f=%f",&i,&f);

为了把100和765.12分别赋给i和f,则正确的输入为

(A) 100765.12 (B) i=100,f=765.12 (C) 100765.12 (D) x=100y=765.12

112.设x和y均为int型变量,则执行下的循环后,y值为

for(y=1,x=1;y<=50;y++)

{ if(x=10))break;

if (x%2==1)

{ x+=5; continue;}

x-=3;

}

(A) 2 (B) 4 (C) 6 (D) 8

113.给出以下定义:

char x[ ]="abcdefg";

char y[ ]={'a','b','c','d','e','f','g'};

则正确的叙述为

(A) 数组X和数组Y等价 (B) 数组x和数组Y的长度相同

(D) 数组X的长度小于数组Y的长度 (C) 数组X的长度大于数组Y的长度

114.以下叙述中不正确的是

(A) 在不同的函数中可以使用相同名字的变量

(B) 函数中的形式参数是局部变量

(C) 在一个函数内定义的变量只在本函数范围内有效

(D) 在一个函数内的复合语句中定义的变量在本函数范围内有效

115.假定a和b为int型变量,则执行以下语句后b的值为

a=1; b=10;

do

{ b-=a; a++; }

while (b--<0);

(A) 9 (B) -2 (C) -1 (D) 8

116.设j为int型变量,则下面for循环语句的执行结果是

for( j=10;j3;j--)

{ if(j%3)j--;

--j; --j;

printf("%d ",j);

}

(A) 6 3 (B) 7 4 (C) 6 2 (D) 7 3

117.设有以下宏定义:

#define N 3

#define Y(n) ( (N+1)*n)

则执行语句:z=2 * (N+Y(5+1));后,z的值为

(A) 出错 (B) 42 (C) 48 (D)54

118.设P1和P2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确

执行的语句是

(A)k=*P1+*P2; (B)p2=k; (C)P1=P2; (D)K=*P1 * (*P2);

119.设有如下定义:

int arr[]={6,7,8,9,10};

int * ptr;

则下列程序段的输出结果为

ptr=arr;

* (ptr+2)+=2;

printf ("%d,%d\n",*ptr,*(ptr+2));

(A)8,10 (B)6,8

120.以下程序的输出结果是

main()

{ int i,k,a[10],p[3]:

K=5;

for (i=0;i<10;i++) a[i]=i;

for (i=0;i<3;i++) p[i]=a[i*(i+1)];

for (i=0;i<3;i++) k+=p[i]*2;

printf("%d\n",k);

}

(A) 20 (B) 21 (C) 22 (D)23 (C)7,9 (D)6,10

121.执行以下程序段后,m的值为

int a[2][3]={ {1,2,3},{4,5,6} };

int m,*p;

p=&a[0][0];

m=(*p)*(*(p+2))*(*(p+4));

(A) 15 (B) 14

122.有以下程序段

char arr[]="ABCDE";

char *ptr;

for(ptr=arr;ptr<ARR+5;PTR++)PRINTF("%S\N",PTR);

输出结果是

(A) ABCD (B) A (C) E (D) ABCDE

B D BCDE

C C CDE

D B DE

E A E

123.有以下程序

main()

{ int x,i;

for(i=1;i<=50;i++)

{ x=i;

if(++x%2==0)

if(x%3==0)

if(x%7==0) (C) 13 (D) 12

printf("%d,i);

}

}

输出结果是

(A) 28 (B) 27 (C) 42 (D) 41

124.设x、y、z和k都是int型变量,则执行表达式:x=(y=4,z=16,k=32)后,x的值为

(A) 4 (B) 16 (C) 32 (D) 52

125.设有如下的变量定义:

int i=8, k, a, b;

unsigned long w=5;

double x=1, 42, y=5.2;

则以下符合C语言语法的表达式是

(A) a+=a-=(b=4)*(a=3) (B) x%(-3); (C) a=a*3=2 (D) y=float(i)

126. 假定有以下变量定义:

int k=7,x=12;

则能使值为3的表达式是

(A) x%=(k%=5) (B) x%=(k-k%5) (C) x%=k-k%5 (D) (x%=k)-(k%=5)

127.以下叙述中正确的是

(A) 输入项可以是一个实型常量,如:scakf("%f",3.5);

(B) 只有格式控制,没有输入项,也能正确输入数据到内存,例如:scakf("a=%d,b=%d");

(C) 当输入一个实型数据时,格式控制部分可以规定小数点后的位数,例如:scakf("%4.2f",&f);

(D) 当输入数据时,必须指明变量地址,例如:scakf("%f",&f);

128.以下程序的输出结果是

(A) 10 10 (B) 12 12 (C) 11 10 (D) 11 13

main()

{ int a=12,b=12;

printf("%d,%d\n",- -a,+ +b);

}

129.以下程序运行后,输出结果是

(A) cde

main() (B) 字符c的ASCII码值 (C)字符c的地址 (D) 出错

{ char *s="abcde";

s+=2;

printf("%ld\n",s);

}

130. 以下程序输出结果是

(A) 7 (B) 6 (C) 5

main()

{ int m=5;

if(m++>5) printf("%d\n",m);

esle printf("%d\n",m- -);

}

131. 当a=1,b=3,c=5,d=5时,执行下面一段程序后,x的值为

(A) 1 (B) 2 (C) 3 (D) 6

if(a<(B)

if(c else

if(a<c)

if(b else x=3;

else x=6;

else x=7; (D) 4

132.在执行以下程序时,如果从键盘上输入,ABCdef<回车>,则输出

(A) ABCdef

#include

main()

{ char ch;

while((ch=getchar())!='\n')

{ if(ch>='A' && ch<='Z') ch=ch+32;

else if(ch>='a' && ch<='z') ch=ch-32;

printf("%c",ch);

}

printf("\n");

}

133. 下面能正确进行字符串赋值操作的语句是

(A) char s[5]={"ABCDE"};

(C) char *s;s="ABCDEF";

134. 执行以下程序段时

(A) 循环体将执行一次

(C) 循环体将执行无限次

X=-1;

do {x=x*x; } while(! x);

135. 执行以下程序后,输出的结果是

(A) -1 (B) 1

main ()

{ int y=10; (C) 8 (D) 0 (B) char s[5]={'A','B','C','D','E'}; (D) char *s; scanf("%s",s); (B) 循环体将执行两次 (D) 系统将提示有语法错误 (B) abcDEF (C) abc (D) DEF

do { y - -;} while(- - y);

printf("%d\n",y - -);

}

136. 在下列选项中,没有构成死循环的程序段是 (A) int i=100 (B) for( ; ;);

while(1)

{ i=i%100+1;

if(i>100)break;

}

(C) int k=1000; (D) int s=36;

do{++k;} while(k>=10000); while(s);--s;

137. 执行语句: for(i=l:i++<4:);后,变量i的值是

(A) 3 (B) 4 (C) 5 (D) 不定

138.以下程序运行后,如果从键盘上输入ABCDE<回车>,则输出结果为

(A) 8 (B) 7 (C) 6 (D) 5

#include

#include

func

{ int num=0;

while(*(str+num)!='\0') num++;

return(num);

}

main()

{ char str[10],*p=str;

gets(p); printf("%d\n",func(p));

}

139.运行以下程序后,如果从键盘上输入 china#<回车>,则输出结果为

(A) 2,0

#include

mair() (B) 5,0 (C) 5,5 (D) 2,5

{ int v1=0,v2=0;

char ch;

while((ch=getchar())!='#')

switch(ch)

{ case 'a';

case 'h';

default; v1++;

case '0'; v2++;

}

printf("%d,%d\n",v1,v2);

}

140. 若以下程序所生成的可执行文件名为filel.exe;当打入以下命令执行该程序时;

FILEL CHINA BEIJING SHANGHAI

程序的输出结果是

(A) CHINA BEIJING SHANGHAI

(C) C B S (D) F C B

main(int argc,char *argv[])

{ while(arge-->0)

{ ++argv;printf("%s ",*argv);}

}

141. 下面程序运行的结果是

(A) 2ba56 (B) 6521 (C) 6 (D) 62

main()

{ char ch[7]={65ab21"};

int i,s=0

for(i=0;ch[i]>='0' && ch[i]<='9';i+=2)

s=10*s+ch[i]-'0';

printf("%d\n",s);

}

142. 运行下面的程序,如果从键盘上输入:

ab<回车>

c <回车>

def<回车>

则输出结果为

(A) a (B) a

b b c

c c d

d d

e

f

#include

#define N 6

main()

{ char c[N];

int i=0;

for( ;i

for( i=0;i (B) FILEL CHINA BEIJING (C) ab (D) abcdef

}

143. 以下程序运行后,输出结果是

(A) 8 (B) 7 (C) 6

#include

ss(char *s)

{ char *p=s;

while(*p) p++;

return(p-s);

}

main()

{ char *a="abded";

int i;

i=ss(a);

printf("%d\n",i);

}

144.以下选项中属于C语言的数据类型是

(A) 复数型 (B) 逻辑型 (C) 双精度型 (D) 集合型

145.在C语言中,不正确的int类型的常数

(A)32768 (B) 0 (C) 037 (D) 0Xaf

146. 语句:printf("%d",(a=2)&&(b= -2);的输出结果是

(A) 无输出 (B) 结果不确定 (C) -1 (D) 1

147.下列描述中不正确的是

(A) 字符型数组中可以存放字符串

(B) 可以对字符型数组进行整体输入、输出

(C) 可以对整型数组进行整体输入、输出

(D) 不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值

148.下列关于C语言数据文件的叙述中正确的是

(A)文件由ASCII码字符序列组成,C语言只能读写文本文件

(B)文件由二进制数据序列组成,C语言只能读写二进制文件

(C)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件

(D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件

149. 设有如下定义:int x=l,y=-1;,则语句:printf("%d\n",(x--&++y));的输出结果是

(A) 1 (B) 0 (C) -1 (D) 2

150.当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是

(A) c=b=a; (B) (a=c) ‖(b=c) ; (C) (a=c) &&(b=c); (D) a=c=b;

151. 以下程序的输出结果是

(A) 10 1 9 2 (B) 9 8 7 6

main( )

{ int x=10,y=10,I;

for(i=0;x>8;y=++i)

printf("%d,%d ",x--,y);

}

152. 以下程序的输出结果是

(A) 5 2 (B) 5 1 (C) 5 3 (C) 10 9 9 0 (D) 10 10 9 1 (D) 5 (D) 9 7

main( )

{ int i,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];

for(i=0;i<4;i+=2)printf("%d ",p[i]);

}

153.以下程序的输出结果是

(A)6 (B) 6789 (C) '6' (D) 789

main( )

{ char a[10]={'1','2','3','4','5','6','7','8','9',0},*p;

int i;

i=8;

p=a+I;

printf("%s\n",p-3);

}

154.以下程序的运行结果是

(A) 运行后报错 (B) 6 6

#include "stdio.h"

main( )

{

int a[ ]={1,2,3,4,5,6,7,8,9,10,11,12,};

int *p=a+5, *q=NULL;

* q=*(p+5);

printf("%d %d \n",*p,*q);

}

155.以下说法中正确的是

(A) #define和printf都是C语句 (C) 6 12 (D) 5 5 (B) #define是C语句,而printf不是

(C) printf是C语句,但#define不是 (D) #define和printf都不是C语句

156.语句:printf("%d \n",12 &012);的输出结果是

(A) 12 (B) 8 (C) 6 (D) 012

157. 能正确表示a和b同时为正或同时为负的逻辑表达式是

(A) (a>=0‖b>=0)&&(a<0‖b<0) (B) (a>=0&&b>=0)&&(a<0&&b<0)

(C) (a+b>0)&&(a+b<=0)

158.以下程序的输出结果是

(A) 2 0

main( )

{ int n=4;

while(n--)printf("%d ",--n);

}

159.若已定义:int a[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1] 地址的表达式是

(A) p+1 (B) a+1 (C) a++ (D) ++p

160.以下程序的输出结果是

(A) 17,021,0x11 (B) 17,17,17

(B) 17,0x11,021

main( )

{ int k=17; (D) 17,21,11 (B) 3 1 (D) a*b>0 (C) 3 2 1 (D) 2 1 0

printf("%d,%o,%x \n",k,k,k);

}

161.以下程序的输出结果是

(A) -1 1 (B) 0 1 (C) 1 0

main( )

{ int a= -1,b=1,k;

if((++a<0)&& ! (b-- <=0))

printf("%d %d\n",a,b);

else

printf("%d %d\n",b,a);

}

162.若有说明:long *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是(A)。 (D) 0 0

(A) *p=&a; scanf("%ld",p);

(B) p=(long *)malloc(8); scanf("%ld",p);

(C) scanf("%ld",p=&a);

(D) scanf("%ld",&a);

163.以下选项中,能定义s为合法的结构体变量的是

(A) typedef struct abc (B) struct

{ double a;

char b[10];

{ double a; char b[10]; } s; (D) typedef ABC { double a; char b[10]; } ABC s; } s; (C) struct ABC { double a; char b[10]; } ABC s;

164以下叙述中错误的是

(A)用户所定义的标识符允许使用关键字

(B)用户所定义的标识符应尽量做到“见名知意”

(C)用户所定义的标识符必须以字母或下划线开头

(D)用户定义的标识符中,大、小写字母代表不同标识

165.以下叙述中错误的是

(A)C语句必须以分号结束

(B)复合语句在语法上被看作一条语句

(C)空语句出现在任何位置都不会影响程序运行

(D)赋值表达式末尾加分号就构成赋值语句

166以下叙述中正确的是

(A)调用printf函数时,必须要有输出项

(B)使用putchar函数时,必须在之前包含头文件stdio.h

(C)在C语言中,整数可以以十二进制、八进制或十六进制的形式输出

(D)调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCII码

167.以下关于函数的叙述中正确的是

(A)每个函数都可以被其它函数调用(包括main函数)

(B)每个函数都可以被单独编译

(C)每个函数都可以单独运行

(D)在一个函数内部可以定义另一个函数

168.若有语句:char *line[5];,以下叙述中正确的是

(A)定义line是一个数组,每个数组元素是一个基类型为char的指针变量

(B)定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组

(C)定义line是一个指针数组,语句中的*号称为间址运算符

(D)定义line是一个指向字符型函数的指针

169.有以下程序段

typedef struct NODE

{ int num; struct NODE *next;

} OLD;

以下叙述中正确的是

(A)以上的说明形式非法

(C)OLD是一个结构体类型 (B)NODE是一个结构体类型 (D)OLD是一个结构体变量

170以下叙述中错误的是

(A)C语言中对二进制文件的访问速度比文本文件快

(B)C语言中,随机文件以二进制代码形式存储数据

(C)语句 FILE fp; 定义了一个名为fp的文件指针

(D)C语言中的文本文件以ASCII码形式存储数据

171当把以下四个表达式用作if语句的控制表达式时,有一个选项与其它三个选项含义不同,这个选项是

(A)k%2 (B)k%2==1 (C)(k%2)!=0 (D)!k%2==1

172以下不能正确计算代数式值的C语言表达式是

(A)1/3*sin(1/2)*sin(1/2)

(C)pow(sin(0.5),2)/3 (B)sin(0.5)*sin(0.5)/3 (D)1/3.0*pow(sin(1.0/2),2)

173以下能正确定义且赋初值的语句是

(A)int n1=n2=10; (B)char c=32; (C)float f=f+1.1; (D)double x=12.3E2.5;

179.以下程序的功能是:给r输入数据后计算半径为r的圆面积s。程序在编译时出错。

main()

/* Beginning */

{ int r; float s;

scanf("%d",&r);

s=*p*r*r; printf("s=%f\n",s);

}

出错的原因是

(A)注释语句书写位置错误 (B)存放圆半径的变量r不应该定义为整型

(C)输出语句中格式描述符非法 (D)计算圆面积的赋值语句中使用了非法变量

180.设有定义:int k=1,m=2; float f=7;,则以下选项中错误的表达式是

(A)k=k>=k (B)-k++ (C)k%int(f) (D)k>=f>=m

(D)a||(b+b)&&(c-a) 181.设有定义:int a=2,b=3,c=4;,则以下选项中值为0的表达式是 (A)(!a==1)&&(!b==0) (B)(a<b)&& !c||1

182.有以下程序段

int k=0,a=1,b=2,c=3;

k=ac ? c:k;

执行该程序段后,k的值是

(A)3 (B)2

183.有以下程序段

int n,t=1,s=0;

scanf("%d",&n);

do{ s=s+t; t=t-2; }while (t!=n);

为使此程序段不陷入死循环,从键盘输入的数据应该是

(A)任意正奇数 (B)任意负偶数 (C)任意正偶数 (D)任意负奇数

184.若有定义:int x=0, *p=&x;,则语句printf("%d\n",*p);的输出结果是

(A)随机值 (B)0 (C)x的地址 (D)p的地址

185.设函数fun的定义形式为

void fun(char ch, float x ) { }

则以下对函数fun的调用语句中,正确的是

(A)fun("abc",3.0); (B)t=fun('D',16.5); (C)fun('65',2.8); (D)fun(32,32);

186.有以下程序

main()

{ char p[]={'a', 'b', 'c'}, q[]="abc";

printf("%d %d\n", sizeof(p),sizeof(q));

};

程序运行后的输出结果是

(A)4 4 (B)3 3 (C)3 4

187.有以下程序

main()

{ char a1='M', a2='m';

printf("%c\n", (a1, a2) ); } (D)4 3 (C)1 (D)0 (C)a && b

以下叙述中正确的是

(A)程序输出大写字母M (B)程序输出小写字母m

(C)格式说明符不足,编译出错 (D)程序运行时产生出错信息

188.有以下程序

#include

main()

{ char c1='1',c2='2';

c1=getchar(); c2=getchar(); putchar(c1); putchar(c2);

}

当运行时输入:a<回车> 后,以下叙述正确的是

(A)变量c1被赋予字符a,c2被赋予回车符

(B)程序将等待用户输入第2个字符

(C)变量c1被赋予字符a,c2中仍是原有字符2

(D)变量c1被赋予字符a,c2中将无确定值

189.有以下程序

# include

struct STU

{ int num;

float TotalScore; };

void f(struct STU p)

{ struct STU s[2]={{20044,550},{20045,537}};

p.num = s[1].num; p.TotalScore = s[1].TotalScore;

}

main()

{ struct STU s[2]={{20041,703},{20042,580}};

f(s[0]);

printf("%d %3.0f\n", s[0].num, s[0].TotalScore);

}

程序运行后的输出结果是

(A)20045 537 (B)20044 550

190.以下程序的功能是进行位运算

main()

{ unsigned char a, b;

a=7^3; b= ~4 & 3;

printf("%d %d\n",a,b);

}

程序运行后的输出结果是

(A)4 3 (B)7 3 (C)7 0 (C)20042 580 (D)20041 703 (D)4 0

191.以下选项中可作为C语言合法常量的是

(A)-80. (B) -080 (C)-8e1.0 (D)-80.0e

192.以下叙述中正确的是

(A)用C程序实现的算法必须要有输入和输出操作

(B)用C程序实现的算法可以没有输出但必须要输入

(C)用C程序实现的算法可以没有输入但必须要有输出

(D)用C程序实现的算法可以既没有输入也没有输出

193.以下不能定义为用户标识符的是

(A)Main (B)_0 (C)_int (D)sizeof

(15)以下选项中不能作为合法常量的是

(A)1.234e04 (B)1.234e0.4 (C)1.234e+4 (D)1.234e0

194.数字字符0的ASCII值为48,若有以下程序

main()

{ char a='1',b='2 ';

printf("%c,",b++);

printf("%d\n",b-a);

}

程序运行后的输出结果是

(A) 3,2 (B)50,2

195.有以下程序

main()

{ int m=12,n=34;

printf("%d%d",m++,++n);

printf("%d%d\n",n++,++m);

}

程序运行后的输出结果是

(A)12353514 (B)12353513 (C)12343514 (D)12343513

196.有定义语句:int b;char c[10];,则正确的输入语句是

(A) scanf("%d%s",&b,&c); (B)scanf("%d%s",&b, c);

(C) scanf("%d%s",b, c); (D) scanf("%d%s",b,&c);

197.有以下程序

main()

{ int m,n,p;

scanf("m=%dn=%dp=%d",&m,&n,&p);

printf("%d%d%d\n",m,n,p);

}

若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是

(A)m=123n=456p=789 (B) m=123 n=456 p=789

(C) m=123,n=456,p=789 (D)123 456 789

198.有以下程序

main()

{ int a,b,d=25;

a=d/10%9;

b=a&&(-1);

printf("%d,%d\n",a,b);

}

程序运行后的输出结果是

(A)6,1 (B)2,1

199.有以下程序

main() (C)6,0 (D)2,0 (C)2,2 (D)2,50

{ int i=1,j=2,k=3;

if(i++==1&&(++j==3||k++==3))

printf("%d %d %d\n",i,j,k);

}

程序运行后的输出结果是

(A)1 2 3 (B)2 3 4 (C) 2 2 3 (D)2 3 3

200.若整型变量a、b、c、d中的值依次为:1、4、3、2。则条件表达式a<B?A:C<D?C:D的值是

201.(A)1 (B)2 (C)3 (D)4

202.有以下程序

main()

{ int p[8]={11,12,13,14,15,16,17,18},i=0,j=0;

while(i++<7) if(p%2) j+=p;

printf("%d\n",j);

}

程序运行后的输出结果是

(A)42

203.有以下程序

main()

{ char a[7]="a0\0a0\0"; int i,j;

i=sizeof(a); j=strlen(a);

printf("%d %d\n",i,j);

}

程序运行后的输出结果是

(A)2 2 (B)7 6 (C)7 2

204.以下能正确定义一维数组的选项是

(C)char a={'A','B','C'}; (D)6 2 (B)45 (C)56 (D)60 (A)int a[5]={0,1,2,3,4,5}; (B)char a[]={0,1,2,3,4,5}; (D)int a[5]="0123";

205.有以下程序

int f1(int x,int y){return x>y?x:y;}

int f2(int x,int y){return x>y?y:x;}

main()

{ int a=4,b=3,c=5,d=2,e,f,g;

e=f2(f1(a,b),f1(c,d)); f=f1(f2(a,b),f2(c,d));

g=a+b+c+d-e-f;

printf("%d,%d,%d\n",e,f,g);

}

程序运行后的输出结果是

(A)4,3,7 (B)3,4,7 (C)5,2,7 (D)2,5,7

206.已有定义:char a[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是

(A)数组a和b的长度相同 (B)a数组长度小于b数组长度

(C)a数组长度大于b数组长度

207.有以下程序

void f(int *x,int *y)

{ int t;

t=*x;*x=*y;*y=t;

}

main()

{ int a[8]={1,2,3,4,5,6,7,8},i,*p,*q;

p=a;q=&a[7];

while(p<Q)

{f(p,q);p++;q--;}

for(i=0;i<8;i++)printf("%d,",a);

}

程序运行后的输出结果是

(A)8,2,3,4,5,6,7,1, (B)5,6,7,8,1,2,3,4,

(C)1,2,3,4,5,6,7,8, (D)8,7,6,5,4,3,2,1,

208.有以下程序

main()

{ int a[3][3],*p,i;

p=&a[0][0];

for(i=0;i<9;i++)p=i;

for(i=0;i<3;i++)printf("%d",a[1]); (D)上述说法都不对

本文来源:https://www.bwwdw.com/article/ebb4.html

Top