C语言-基本选择题及答案 (自动保存的)(含五篇)

时间:2019-05-11 23:51:11下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《C语言-基本选择题及答案 (自动保存的)》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《C语言-基本选择题及答案 (自动保存的)》。

第一篇:C语言-基本选择题及答案 (自动保存的)

计算机程序设计基础(C语言)

单项选择练习题

说明:带*号的对非信息学院的同学不作要求。

一、基本概念

1.C语言程序是由C 构成的。

A)一些可执行语言 B)main函数 C)函数 D)包含文件中的第一个函数 2.(A)是构成C语言程序的基本单位。

A、函数 B、过程 C、子程序 D、子例程 3.C语言程序从C开始执行。

A)程序中第一条可执行语句

B)程序中第一个函数

C)程序中的main函数

D)包含文件中的第一个函数

4.C语言程序从main()函数开始执行,所以这个函数要写在_D___。

A)程序文件的开始 B)程序文件的最后 C)它所调用的函数的前面 D)程序文件的任何位置

5、以下说法中正确的是(C)。

A、C语言程序总是从第一个定义的函数开始执行

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

D、C语言程序中的main()函数必须放在程序的开始部分 6.下列方法中错误的是(D)。

A.主函数可以分为两个部分:主函数说明部分和主函数体。B.主函数可以调用任何非主函数的其它函数。C.任何非主函数可以调用其它任何非主函数。D.程序可以从任何非主函数开始执行。7.下列说法错误的是:(B)

A.C程序运行步骤是编辑、编译、连接、执行。B.C语言的变量名必须用小写,常量用大写。C.C语言的三种基本结构是顺序、选择、循环。D.C程序一定由函数构成的。

8.下列关于C语言的说法错误的是(B)。

A)C程序的工作过程是编辑、编译、连接、运行 B)C语言不区分大小写。

C)C程序的三种基本结构是顺序、选择、循环 D)C程序从main函数开始执行 9.系统默认的C语言源程序扩展名为.C,需经过C之后,生成.exe文件,才能运行。

A)编辑、编译 B)编辑、连接 C)编译、连接 D)编辑、改错 *10.下列说法中正确的是(B)。

A.由于C源程序是高级语言程序,因此一定要在TC软件中输入。

B.由于C源程序是由字符流组成的,因此可以作为文本文件在任何文本编辑的软件中输入。

C.由于C程序是高级语言程序,因此输入后即可执行。D.由于C程序是高级语言程序,因此它是由命令组成的。

二、数据类型、运算符与表达式

1.不是C语言提供的合法关键字是(B)。

A.switch

B.cher

C.case

D.default *2.C语言提供的合法关键字是(D)。

A.next B.string C.do case D.struct *3.下列不属于C语言中关键字的是 B

A)long B)print C)default D)typedef 4.下列正确的标识符是(C)。

A.-a1 B.a[i] C.a2_i D.int t 5.下列C语言用户标识符中合法的是(B)。A、*y B、sum C、int D、%5f 6.下面四个选项中,合法的标识符是:(D)A.auto B.define C.6a D.c 7.下列C语言用户标识符中合法的是(B)。A)3ax B)x C)case D)-e2 E)union 8.以下选项中合法的用户标识符是B

A)long

B)_2Test

C)3Dmax

D)A.dat 9.下列四组选项中,正确的C语言标识符是(C)。

A)%xB)a+b C)a123D)123 10.请选出可用作C语言用户标识符的一组标识符(B)A)void

B)a3_b3

C)For

D)2a define _123-abc DO WORD sum Case sizeof

11、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。A、print _3d db8 aBc B、Iam one_half start$it 3pai 2 C、str_1 Cpp pow while D、Pxq My->book line# His.age 12.下列C语言标识符中合法的变量名是B。

A)2e3 B)you C)*y D)float 13.C语言中的简单数据类型包括(D)。

A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型

14、下列可以正确表示字符型常量的是(A)。A、’t’ B、”a” C、”n” D、297 15.下列表达式中,D是正确的C语言字符常量。A)”x” B)e3 C)”COMPUTER” D)’#’ 16.在下列表达式中,属于字符型常量的是B。A)A B)'a' C)“A” D)b 17.以下选项中合法的字符常量是(B)A)“B” B)‘n’ C)‘68’

D)E 18.下面字符常量表示错误的是(D)A)’a’ B)’?’ C)’n’ D)”n”

19.已定义c为字符型变量,则下列语句中正确的是(C)A)c='97' B)c=“97”C)c=‘a’ D)c=“a” 20.已知ch是字符型变量,不正确的赋值语句是(A)A)ch='a+b';

B)ch=' ';C)ch=' 7';D)ch=’;’;

21.C语言中字符型(char)数据在内存中的存储的是(D)A)原码 B)补码 C)反码 D)ASCII码

22.在C语言中,字符型数据所占的内存空间是(C)A)2个字节 B)4字节 C)1字节 D)由用户自定义

*23.若int类型数据占2个字节,则unsigned int类型数据的取值范围是(B)//unsigned无符号位,默认为整数

A)0~255 B)0~65535 C)-32768~32767 D)-256~255 *24.若有以下类型说明语句:char a;int b;float c;double d;则表达式a*b+d-c的结果类型为(D)A)float B)char C)int D)double *25.若有以下类型说明语句:char w;int x;float y;double z;则表达式w-x*y/z的结果为(D)类型,表达式(int)(x+y-z*w)的结果为(C)类型。A)float B)char C)int D)double 26.C语言中运算对象必须是整型的运算符是(A)

A)%= B)/ C)= D)〈= 27.在C语言程序中,表达式8/5的结果是(B)A)1.6 B)1C)3D)0 x=10;x+=x;A)10 B)20 C)40 D)30

31.在C语言程序中,表达式5%2的结果是C。A)2.5 B)2 C)1 D)3 32.如果int a=3,b=4;则条件表达式“a

A)3B)4 C)0D)1 33.若int x=2,y=3,z=4 则表达式x

A、’a’&&’b’ B、a<=b C、a||b+c&&b-c D、!((a

37.下面(D)表达式的值为4.A)11/3

B)11.0/3

C)(float)11/3

D)(int)(11.0/3+0.5)

*39.已知int x=5,y=5,z=5;执行语句x%=y+z;后,x的值是(C)A.0 B.1 C.5 D.6 40.已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'+'6'-'3';后,c2中的值为(B)A)68 B)‘D’ C)错误 D)‘d’ 41.下列关于C语言的叙述错误的是(A)

A)大写字母和小写字母的意义相同 B)不同类型的变量可以在一个表达式中

C)在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型 D)同一个运算符号在不同的场合可以有不同的含义 42.有:int w=11,x=12,y=3,m;执行下面语句后m的结果是(C)m=(w

35.设a,b和c都是int型变量,且a=3,b=4,c=5,则下面表达式中,值为0的A.1 B.2 C.3 D.以上结果都不对

43.有:int w=7,x=12,y=3,m;执行下面语句后m的值是(A)m=(w>x)?w:x;m=(m>y)?m:y;A.12 B.0 C.3 D.1

45.设整型变量 a=2,则执行下列语句后,浮点型变量b的值不为0.5的是(B)

A.b=1.0/a B.b=(float)(1/a)C.b=1/(float)a D.b=1/(a*1.0)

48.以下运算符中优先级最高的运算符是(B)

A)&& B)++ C)+= D)!= 49.若“int n;float f=13.8;”,则执行“n=(int)f%3”后,n的值是(A)A.1 B.4 C.4.333333 D.4.6

52.设x为int型变量,则执行以下语句后,x的值为(C)

x=10;x*=x;A)10 B)20 C)100 D)0 53.若有语句int a=1,b;double y=2.3;b=(int)y;则b的值为(B)。

A)3 B)2 C)1 D)2.3 54.已知int x;char y;则下面错误的scanf函数调用语句为(B)A)scanf(“%d,%d”,&x,&y);B)scanf(“%d,%c”,x,y)

C)scanf(“%d%d”,&x,&y)D)scanf(“%d,%c”,&x,&y)

57.在C语言的库函数中,可以输出char型变量x值的语句是C。A)getchar(x);B)fputc(x)C)putchar(x)D)puts(x)

60.以下说法正确的是(C)

A)'x'+5是一个错误的表达式 B)C语言不允许类型的混合运算

C)强制类型转换时,类型说明符必须加括号 D)(int)x+y 和(int)(x+y)是完全等价的表达式 61.设 int x=0, y=1;表达式(x||y)的值是(B)

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

三、选择结构

1.在C语言中,认为(D)为逻辑“真” A)true B)大于0的数 C)非0整数 D)非0的数 A)(x<=y)&&(y<=z)B)(x<=y)AND(y<=z)C)(x<=y<=z)D)(x<=y)&(y<=z)3.能正确表示逻辑关系:“a≥=10或a≤0”的C语言表达式是(D)A)a>=10 or a<=0 B)a>=0|a<=10 C)a>=10 &&a<=0 D)a>=10‖a<=0

4、判断char型变量c1是否为大写字母的表达式为(D)。

A、’A’<=c1<=’Z’ B、(c1>=’A’)&(c1<=’Z’)C、(’A’<=c1)AND(‘Z’>=c1)D、c1>=’A’&& c1<=’Z’ 5.为表示逻辑表达式79

A)(X>79)&&(X<90)B)(X>79)!=(X<90)C)7979)||(X<90)6.设有语句“int a=2,b=3,c=-2,d=2;”,则逻辑表达式“a>0&&b&&c<0&&d>0”的 值是(B)//A A.1 B.0

C.-1 D.出错 2.表示关系x<=y<=z的c语言表达式为A 7.设a为整型变量,则不能正确表达数学关系10<a<15的C语言表达式是(A)。A.1010&&a<15 D.!(a<=10)&&!(a>=15)8.设x,t均为int型变量,则执行语句“x=10;t=x&&x>10;”后,t的值为(D)A.不定值

B.10 C.1 D.0 9.若int i=10;执行下列程序后,变量i的正确结果是(C)。//A没有break会一直执行下去,直到遇到default switch(i){ case 9: i+=1;case 10: i+=1;case 11: i+=1;default : i+=1;} A、13 B、12 C、11 D、10 10.在下面的条件语句中(其中s1和s2表示是C语言的语句),只有一个在功能上与其它三个语句不等价,它是(D)。

A、if(a)s1;else s2;B、if(a= =0)s2;else s1;C、if(a!=0)s1;else s2;D、if(a= =0)s1;else s2;11.假定所有变量均已正确定义,则下列程序段运行后y的值是(C)//A

int a=0,y=10;if(a=0)y--;else if(a>0)y++;else y+=y;A.20 B.11 C.9 D.0 12.假定所有变量均已正确定义,则下列程序段运行后x的值是(B)。

a=b=c=0;x=35;if(!a)x--;else if(b);if(c)x=3;else x=4;A.34 B.4 C.35 D.3 13.C语言对嵌套if语句的规定是:else语句总是与(D)配对。A)其之前最近的if B)第一个if C)缩进位置相同的if D)其之前最近的且尚未配对的if 14.在C语言语句中,用来决定分支流程的表达式是(B)。//A A.可用任意表达式

B.只能用逻辑表达式或关系表达式 C.只能用逻辑表达式

D.只能用关系表达式 15.C语言中用(B)表示逻辑“真”。

A.true B.整数值1 C.非零整数值 D.false

16、若k是int型变量,且有下面的程序段:

int k;k=-3;if(k<=0)printf(“####”); else printf(“&&&&”); 上面程序段的输出结果是(A)

A、#### B、&&&& C、####&&&& D、有语法错误,无输出结果

17.main(){ int x=0,a=0,b=0;switch(x){ case 0: b++;case 1: a++;case 2: a++;b++;} printf(“a=%d,b=%dn”,a,b);} //开关语句的穿透现象

该程序的输出结果是D(没有break,所以依次执行完所有代码才结束)A)a=2,b=1 B)a=1,b=1 C)a=1,b=0 D)a=2,b=2 18.以下程序的输出结果是:(C)

main(){ int x=-10,y= 1,z=1;if(x

int a=10,b=50,c=30; if(a>b)a=b; b=c; c=a;

printf(“a=%2d b=%2d c=%2dn”,a,b,c); A)a=10 b=50 c=10 B)a=10 b=30 c=10 C)a=50 b=30 c=10 D)a=50 b=30 c=50

四、循环结构

*1.在C语言中,下列说法中正确的是(D)。

A)do-while语句构成的循环不能用其它语句构成的循环来代替。B)do-while语句构成的循环只能用break语句退出。

C)do-while语句构成的循环在while后的表达式非零时结束循环。D)do-while语句构成的循环,在while后的表达式为零时结束循环。2.break语句不能出现在(D)语句中

A.switch B.for C.while D.if„else *3.对于break语句和continue语句的说法错误的是(B)

A)break语句不能用于循环语句和switch语句之外的任何其他语句中。B)break和continue也可以用于if语句中

C)continue语句只结束本次循环,而不是终止整个循环的执行。D)break语句是结束整个循环过程,不再判断执行循环的条件是否成立。4.语句while(!y);中的表达式!y等价于A(!Y即y为假)

A)y==0 B)y!=1 C)y=!0 D)y==1 5.若有“int a=1,x=1;”,则循环语句“while(a<10)x++;a++;”的循环执行(D)//A A.无限次

B.不确定次

C.10次

D.9次 6.有以下程序段

int k=0 while(k)k++;则while循环体执行的次数是C A)无限次

B)有语法错,不能执行

D)执行1次 C)一次也不执行

7.下列循环语句中有语法错误的是(C)//D A while(x=y)5; B while(0);

C do 2;while(x= =b); D do x++ while(x= =10); *8.当运行时输入:abcd$abcde,下面程序的运行结果是D//B #include main(){while(putchar(getchar())!='$');printf(“end”);} A)abcd$abcde B)abcd$end C)abcdend D)abcd$abcdeend 9.以下程序段(A)x=-1;do { x=x*x;} while(x>0);A.是死循环 B.循环执行一次 C.循环执行二次 D.有语法错误 10.下面程序段执行后的结果为:(D)//B int sum=0, n=10;do { sum=sum+n;n++;} while(n<10)printf(“%d,%d”,sum,n)A.0, 10 B.10, 11 C.0, 11 D.以上结果都不对 11.对以下程序段的叙述正确的是__B__.//A int x=1;do { x=-1*x;} while(!x)A)是死循环 B)循环执行一次 C)循环执行二次 D)有语法错误 12.循环“for(i=0,x=1;i=10&&x>0;i++);”的循环执行(A)。A.无限次

B.不确定次

C.10次

D.9次 13.执行语句{for(j=0;j<=3;j++)a=1;}后变量j的值是C.A)0 B)3 C)4 D)1 14. 有如下程序

main(){ int i,sum=2;for(i=1;i<=3;i+=2)sum+=i;printf(“%dn”,sum);} 该程序的执行结果是A A)6 B)3 C)死循环 D)4 *

15、执行语句”for(i=0;i++<3;);”后,变量i的值为(C A、2 B、3 C、4 D、5 16.设x和y均为int型变量,则执行以下的循环后,y的值为(D)。for(y=1,x=1;y<=50;y++){ if(x>=0)break;if(x%2==1){x+=5;continue;} x-=3;} A.2 B.4 C.6 D.1 五 数组

1.以下对一维数组a的正确说明是:C//D数组[]里不能填变量

A)char a(10);

B)int a[];

C)int k=5,a[k]; D)char a[3]={‘a’,’b’,’c’};2.以下能对一维数组a进行初始化的语句是:(C)A.int a[5]=(0,1,2,3,4,)B.int a(5)={} C.int a[3]={0,1,2} D.int a{5}={10*1}

。)3.在C语言中对一维整型数组的正确定义为 B。//D数组[]里不能填变量 A)int a(10);B)int n=10,a[n];C)int n;a[n];D)#define N 10 int a[N];

4、已知:int a[10];则对a数组元素的正确引用是(D)。

A、a[10]

B、a[3.5]

C、a(5)

D、a[0] 5.执行下面的程序段后,变量k中的值为C A)不定值 B)33 C)30 D)10 int k=3, s[2];s[0]=k;k=s[0]*10;*6.下列说法中错误的是C

A构成数组的所有元素的数据类型必须是相同的 B用指针法引用数组元素允许数组元素的下标越界 C一维数组元素的下标依次是1、2、3„„ D定义数组时的长度可以是整型常量表达式

7.若有以下数组说明,则数值最大的和最小的元素下标分别是(B)。int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};A.1,12 B.0,11 C.1,11 D.0,12 8.若有以下数组说明,则i=10;a[a[i]]元素数值是(C)。//B int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};A.10 B.9 C.6 D.5 9.假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是D A)3

11.若有说明:int a[][3]={{1,2,3},{4,5},{6,7}};则数组a的第一维的大小为:(C)//B第一维就是指二维数组中第一个一维数组 A.2 B.3 C.4 D.无确定值

12.以下定义语句中,错误的是(A)//D数组[]里不能填变量

B)6

C)10

D)20 A)int a[]={1,2};B)char *a;D)int n=5,a[n];C)char s[10]=“test”;

int i;13.下面程序段的输出结果是:(C)int x[3][3]={1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)printf(“%d ”,x[i][2-i]);A)1 5 9 B)1 4 7 C)3 5 7 D)3 6 9 14.对二维数组的正确定义是(C)

A.int a[ ] [ ]={1,2,3,4,5,6};B.int a[2] [ ]={1,2,3,4,5,6};C.int a[ ] [3]={1,2,3,4,5,6};D.int a[2,3]={1,2,3,4,5,6};15.已知int a[3][4];则对数组元素引用正确的是__C__ A)a[2][4] B)a[1,3] C)a[2][0] D)a(2)(1)

六、函数

1.C语言中函数返回值的类型是由A 决定的.A)函数定义时指定的类型 B)return语句中的表达式类型 C)调用该函数时的实参的数据类型 D)形参的数据类型 2.在C语言中,函数的数据类型是指(A)A 函数返回值的数据类型 B.函数形参的数据类型 C 调用该函数时的实参的数据类型 D.任意指定的数据类型 *3.C程序中函数返回值的类型是由A决定的.A)函数定义时指定的函数类型 B)函数中使用的最后一个变量的类型 C)调用函数时临时确定 D)调用该函数的主调函数类型

*4.C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式为

(B)A.由系统选择 B.单向值传递 C.由用户指定传递方式 D.地址传递 5.在函数调用时,以下说法正确的是(B)

A.函数调用后必须带回返回值

B.实际参数和形式参数可以同名

C.函数间的数据传递不可以使用全局变量

D.主调函数和被调函数总是在同一个文件里

*6.在C语言程序中,有关函数的定义正确的是(B)。

A.函数的定义可以嵌套,但函数的调用不可以嵌套 B.函数的定义不可以嵌套,但函数的调用可以嵌套 C.函数的定义和函数的调用均不可以嵌套 D.函数的定义和函数的均可以嵌套

A.在C语言程序中,调用函数时,如函数参数是简单变量,则只能把实参的B.C语言函数既可以嵌套定义又可递归调用 C.C语言函数必须有返回值,否则不能使用函数 *7.以下对C语言函数的有关描述中,正确的是(A)。值传递给形参,形参的值不能传送给实参 D.在C语言程序中有调用关系的所有函数必须放在同一个源程序文件中

*8.C语言中对函数的描述正确的是 C.A)可以嵌套调用,不可以递归调用 B)可以嵌套定义 C)嵌套调用,递归调用均可 D)不可以嵌套调用 9.以下叙述中正确的是A A)构成C程序的基本单位是函数

B)可以在一个函数中定义另一个函数

C)main()函数必须放在其它函数之前

D)所有被调用的函数一定要在调用之前进行定义 10.用数组名作为函数调用时的实参时,传递给形参的是A。

A)数组首地址 B)数组第一个元素的值

C)数组全部元素的值

D)数组元素的个数

11.有一函数的定义如:void fun(char *s){……},则不正确的函数调用是(D)。A.main(){char a[20]=”abcdefgh”;fun(a);„„ } B.main(){ char a[20]=”abcdefgh”;fun(&a[0]);„„ } C.main(){ char a[20]=”abcdefgh”;char *p=a;fun(p);„„ } D.main(){char a[20]=”abcdefgh”;fun(a[]);„„ }

13、函数的功能是交换变量x和y中的值,且通过正确调用返回交换的结果。能 正确执行此功能的函数是(D)。A、funa(int *x, int *y){ int *p;*p=*x;*x=*y;*y=*p;}

C、func(int *x, int *y){ int *p;p=x;x=y;y=p;}

14.有如下程序

int func(int a,int b){ return(a+b);} main(){ int x=2,y=x,z=8,r;r=func(func(x,y),func(y,z));printf(“%dn”,r);} 该程序的输出的结果是C A)12 B)13 C)14 D)15 *15.以下程序的输出结果是B int a, b;void fun(){ a=100;b=200;} main(){

int a=100, b=100;fun();printf(“%d%d n”, a,b);} A)100200

*16.下列说法中正确的是:(A)

A.局部变量在一定范围内有效,且可与该范围外的变量同名。B.如果一个源文件中,全局变量与局部变量同名,则在局部变量范围内,局部变量不起作用。

C.局部变量缺省情况下都是静态变量。

B、funb(int x , int y)

{ int t;t=x;x=y;y=t;}

D、fund(int *x, int *y)

{ int t;

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

} B)100100

C)200100

D)200200 D.函数体内的局部静态变量,在函数体外也有效。17.在C语言中,表示静态存储类别的关键字是:(D)//C A)auto

B)register

C)static

D)extern 18.未指定存储类别的变量,其隐含的存储类别为(B)。//A A)auto B)static C)extern D)register

七、结构体

1.若有以下说明语句: struct student { int num;char name[ ];float score;}stu;则下面的叙述不正确的是:(D)A.struct是结构体类型的关键字

B.struct student 是用户定义的结构体类型 C.num, score都是结构体成员名 D.stu是用户定义的结构体类型名 2.若有以下说明语句: struct date { int year;int month;int day;}brithday;则下面的叙述不正确的是__C__.A)struct是声明结构体类型时用的关键字 B)struct date 是用户定义的结构体类型名 C)brithday是用户定义的结构体类型名 D)year,day 都是结构体成员名

*3.已知:(设整型2字节,字符型1字节,浮点型4字节)struct { int i; char c; float a; }test;

则sizeof(test)的值是 D。A)4 B)5C)6 D)7 4.以下对结构变量stul中成员age的非法引用是B struct student { int age; int num; }stu1,*p; p=&stu1;

A)stu1.age B)student.age C)p->age D)(*p).age

*5.有如下定义

struct person{char name[9];int age;};struct person class[10]={“Tom”,17,“John”,19,“Susan”,18,“Adam”,16,};

根据上述定义,能输出字母A的语句是(B)A)printf(“%cn”,class[3].name);B)printf(“%cn”,class[3].name[0]);C)printf(“%cn”,class[3].name[1]);D)printf(“%cn”,class[2].name[3]);

6.存放100个学生的数据、包括学号、姓名、成绩。在如下的定义中,不正确的是(B)。

A.struct student {int sno;char name[20];float score;} stu[100];B.struct student stu[100] {int sno;char name[20];float score};C.struct { int sno;char name[20];float score;} stu[100];D.struct student {int sno;char name[20];float score;};struct student stu[100];*7.设有定义语句“struct {int x;int y;} d[2]={{1,3},{2,7}};”则“printf(“%dn”,d[0].y/d[0].x*d[1].x);”输出的是(D)。

A.0 B.1 C.3 D.6 8.已知: struct sk { int a;float b;}data, *p;若有p=&data,则对data中的成员a的正确引用是(C)。A、(*p).data.a B、p->data.a C、(*p).a D、p.data.a 9.设有如下定义:

struck sk {int a;float b;}data;int*p;若要使P指向data中的a域,正确的赋值语句是C A)p=&a;B)p=data.a;C)p=&data.a;

D)*p=data.a;10.设有以下说明语句:

typedef struct stu { int a;float b;} stutype;则下面叙述中错误的是(D)。A、struct是结构类型的关键字

B、struct stu是用户定义的结构类型 C、a和b都是结构成员名

D、stutype是用户定义的结构体变量名

八.指针

1. 语句int *p;说明了 C。A)p是指向一维数组的指针

B)p是指向函数的指针,该函数返回一int型数据 C)p是指向int型数据的指针

D)p是函数名,该函数返回一指向int型数据的指针 2.变量的指针,其含义是指该变量的:(B)A.值 B.地址 C.名 D.一个标志

3.若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是(A)

A)pb=&x B)pb=x C)*pb=&x D)*pb=*x

4、已知:int a, *p=&a;则下列函数调用中错误的是(D)。A、scanf(“%d”,&a);B、scanf(“%d”,p);C、printf(“%d”,a);D、printf(“%d”,p);5.对于同类型的指针变量,不可能进行的运算是(D)。//C A.-B.= C.+ D.== 6.对于基类型相同的两个指针变量之间,不能进行的运算是A//C两个指针变量相加什么都得不到

A)

A.int *p=&i,i;B.int *p,i;C.int i,*p=&i;D.int i,*p;8.若有说明:int n=2,*p=&n,*q=p,则以下非法的赋值语句是:(D)

A)p=q B)*p=*q C)n=*q D)p=n 9.int *p,a=10,b=1;p=&a;a=*p+b;执行该程序段后,a的值为C A)编译出错 B)10 C)11 D)12 A)int p=*a;B)int *p=a;C)int p=&a;D)int *p=&a;11.若有说明语句“int a[5],*p=a;”,则对数组元素的正确引用是(C)。A.a[p] B.p[a] C.*(p+2)D.p+2 12.若指针变量p指向整型数组a[10]的首地址, 即p=a;则下列数组元素a[i](0

A.p+i B.&(a+i)C.*(a+i)D.*(p+i*2)13.有如下程序

int a[10]={1,2,3,4,5,6,7,8,9,10},*P=a;则数值为9的表达式是B A)*P+9 B)*(P+8)C)*P+=9 D)P+8 14.若有以下定义,则不能表示a数组元素的表达式是(B)。10.有语句:int a[10],;则D是对指针变量p的正确定义和初始化。//B int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;A.*p B.a[10] C.*a D.a[p-a]

*15.已知int a[5],*p=a;下面的叙述中正确的是A。

A)p+1与a+1等价 B)p[1]与*p等价 C)*(p+1)与a+1等价 D)p[1]与a++等价

16.若有以下说明: int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为4的表达式是(C)A)*p+4 B)*(p+4)C)*(p+3)D)p+3 17.下面程序的输出结果是C A)0

B)1

C)2

D)输出错误

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

p=a;printf(“%dn”,*p+1);}

18.执行语句 char c[10]={ ”abcd”},*pc=c;后,*(pc+4)的值是(A)“abcd” B)’’ C)‘d’ D)不确定 19.下列函数的功能是A。void fun(int *p1,int *p2){int p;p=*p1;*p1=*p2;*p2=p;} A)交换*p1和*p2的值B)语法正确,但无法交换*p1和*p2的值 C)交换*p1和*p2的地址 D)有语法错误 *20.有如下程序

main(){ char s[]=“ABCD”, *P;

for(p=s+1;p

B)BCD B C CD CD C D D D D *21.请读程序,输出结果为:(A)#include int a[]={2,4,6,8};main(){ int i,b[4];int *p=a;for(i=0;i<4;i++){b[i]=*p;p++;} printf(“%dn”,b[2]);} A)6 B)8 C)4 D)2 *22.内存空间被分成不同区域,其中用函数void* malloc(unsigned int size);申请的内存在C分配。

A)程序区 B)静态存储区 C)动态存储区

九、字符串

1.在C语言中,以 D 作为字符串结束标志 A)’n’ B)’’C)’0’ D)’’ 2.下列数据中属于“字符串常量”的是(D)。//A A.“a” B.{ABC} C.‘abc’ D.‘a’ 3.字符串 “ABCD”在内存占用的字节数是(D)。A.4

B.6

C.1

D.5 4.下面不正确的字符串常量是:(A)

A.‘PROGRAM’ B “12’12” C “0” D “” 5.设有数组定义: char array [ ]=“abcd”;则数组array所占的空间为B A)4个字节 B)5个字节 C)6个字节 D)7个字节 *6.下述对C语言中字符数组的描述错误的是C。

A)字符数组可以存放字符串

B)字符数组中的字符串可以整体输入和输出

C)可在赋值语句中通过赋值运算符“=”对字符数组整体赋值

D)可在对字符数组定义时通过赋值运算符“=”对字符数组整体初始化

7.已知char x[]=“hello”, y[]={'h','e','a','b','e'};, 则关于两个数组长 度的正确描述是B A)相同 B)x大于y C)x小于y D)以上答案都不对

8.给出以下定义: char x[ ]=“abcdefg”;char y[ ]={'a','b','c','d','e','f','g'};则正确的叙述为C A)数组x和数组y等价 B)数组x和数组y的长度相同

C)数组x的长度大于数组y的长度

D)数组x的长度小于数组y的长度

9、若有以下语句,则正确的描述是(D)。static char x[ ]=”12345”;static char y[ ]={‘1’,‘2’,‘3’,‘4’, 5’,’’};A、x数组长度大于y数组长度 B、x数组和y数组不相同 C、x数组长度小于y数组长度 D、x数组等价于y数组

10、已知:char s[20]= ”programming”, *ps=s;则不能引用字母o的表达式是(C)。

A、ps[2]

B、s[2]

C、ps+2

D、ps+=2, *ps *11.判断两字符串s1,s2是否相等,应使用(D).A)if(s1==s2)B)if(s1=s2)C)if(strcpy(s1,s2))

D)if(strcmp(s1,s2)==0)*12.以下printf语句的输出结果为:A printf(“%dn”,strlen(“school”));A)7 B)6 C)存在语法错误 D)不定值 13.对字符数组s赋值,不合法的一个是(C)A.char s[]=“Beijing”; B.char s[20]={“beijing”}; C.char s[20];s=“Beijing”;

D.char s[20]={'B','e','i','j','i','n','g'};

14.对字符数组str赋初值,str不能作为字符串使用的一个是(D)A.char str[]=“shanghai”; B.char str[]={“shanghai”};

C.char str[9]={'s','h','a','n','g','h','a','i',’’}; D.char str[8]={ 's','h','a','n','g','h','a','i'}; 15.合法的数组定义是C A)int a[]={“string”};B)int a[5]={0,1,2,3,4,5};C)char a[]= “string”;D)char a[5]={0,1,2,3,4,5};16.对字符数组s赋值,不合法的是:(C)A)char s[]=“china”; B)char s[20]={“ china ”};

C)char s[20];s=“ china”; D)char s[20]={'c','h','i','n','a'};

17.下面初始化与此初始化charc[ ]=“I am happy”;等价的是(A)

A)char c[ ]={‘I’,’’,’a’,’m’,’’,’h’,’a’,’p’,’p’,’y’,’’}; B)char c[ ]={‘I’,’am’,’happy’};C)char c[ ]={‘I’, ’’,’a’,’m’,’’,’h’,’a’,’p’,’p’,’y’};D)char c[ ]={‘I’,’am’,’happy’,’’};18.下面各语句中,能正确进行赋字符串操作的语句是(D)。//C指针变量可以再赋值字符串

A.char s[5]={“ABCDE”};B.char s[5]={‘A’,‘B’,‘C’,‘D’,‘E’,’’};C.char *s;s=“ABCDE”;D.char *s;scanf(“%s”,&s);19.下列字符串赋值方式不正确的是(B)//A数组不能再赋值字符串 A).char str[20];B).char *str;str=”I am a boy!”;str=”I am a boy!”;C).char *str=”I am a boy!”;D).char str[20]=” I am a boy!”;

十、文件

*1.在C语言中,文件由(D)。//A A.字符(字节)序列组成 B.记录组成 C.数据行组成 D.数据块组成 2.下面各函数中能实现打开文件功能的是A A)fopen

B)fgetc //B A.0 B.1 C.非0值 D.NULL 4.下列语句中,把变量fp说明为一个文件型指针的是(A)。

A)FILE *fp;B)FILE fp;C)file *fp;D)file fp;

5、在进行文件操作时,写文件的一般含义是(B)。A、将磁盘中的信息存入计算机内存

B、将计算机内存中的信息存入磁盘 C、将计算机CPU中的信息存入磁盘

C)fputc D)fclose

*3.若文件型指针fp指向某文件的末尾,则函数feof(fp)的返回值是(A)。D、将磁盘中的信息存入计算机CPU *6.以读写方式打开一个已有的文本文件file1,并且FILE *fp,下面fopen函数正确的调用方式是(B)。

A.fp=fopen(“file1”,“r”)B.fp=fopen(“file1”,“r+”)C.fp=fopen(“file1”,“rb”)D.fp=fopen(“file1”,“w”)*7.标准库函数fputs(p1,p2)的功能是(D)。//C A.从p1指向的文件中读一个字符串存入p2指向的内存 B.从p2指向的文件中读一个字符串存入p1指向的内存 C.从p1指向的内存中读一个字符串写到p2指向的文件中 D.从p2指向的内存中读一个字符串写到p1指向的文件中

十一、编译预处理

*1.在C语言程序中,以#号带头的行是预编译处理(A)。

A.命令 B.语句 C.函数 D.字符串 A.define PI 3.14159 B.#define P(a,b)=strcpy(a,b)C.#define stdio.h D.#define PI 3.14159;A.#define MYNAME=”ABC” B.#include stdio.h C.for(i=0;i<10;i++);D.struct int stu{int name};A.#define PI 3.14159 B.#include ;B.if(2);D.for(;;)if(1)break;2.下列正确的预编译命令是(B)。//D 3.下列命令或语句中,正确的是(C)。

*4.下列命令或语句中,错误的是(D)。//C 23

第二篇:C语言-基本选择题及答案

计算机程序设计基础(C语言)

单项选择练习题

一、基本概念

1.C语言程序是由 C 构成的。

A)一些可执行语言 B)main函数 C)函数 D)包含文件中的第一个函数 2.(A)是构成C语言程序的基本单位。

A、函数 B、过程 C、子程序 D、子例程 3.C语言程序从 C 开始执行。

A)程序中第一条可执行语句 B)程序中第一个函数 C)程序中的main函数 D)包含文件中的第一个函数 4.C语言程序从main()函数开始执行,所以这个函数要写在_D___。

A)程序文件的开始 B)程序文件的最后 C)它所调用的函数的前面 D)程序文件的任何位置

5、以下说法中正确的是(C)。

A、C语言程序总是从第一个定义的函数开始执行

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

D、C语言程序中的main()函数必须放在程序的开始部分 6.下列方法中错误的是(D)。

A.主函数可以分为两个部分:主函数说明部分和主函数体。B.主函数可以调用任何非主函数的其它函数。C.任何非主函数可以调用其它任何非主函数。D.程序可以从任何非主函数开始执行。7.下列说法错误的是:(B)

A.C程序运行步骤是编辑、编译、连接、执行。B.C语言的变量名必须用小写,常量用大写。C.C语言的三种基本结构是顺序、选择、循环。D.C程序一定由函数构成的。

8.下列关于C语言的说法错误的是(B)。

A)C程序的工作过程是编辑、编译、连接、运行 B)C语言不区分大小写。

C)C程序的三种基本结构是顺序、选择、循环 D)C程序从main函数开始执行

9.系统默认的C语言源程序扩展名为.C,需经过 C 之后,生成.exe文件,才能运行。 A)编辑、编译 B)编辑、连接 C)编译、连接 D)编辑、改错 *10.下列说法中正确的是(B)。

A.由于C源程序是高级语言程序,因此一定要在TC软件中输入。

B.由于C源程序是由字符流组成的,因此可以作为文本文件在任何文本编辑的软件中输入。

C.由于C程序是高级语言程序,因此输入后即可执行。D.由于C程序是高级语言程序,因此它是由命令组成的。

二、数据类型、运算符与表达式

1.不是C语言提供的合法关键字是(B)。

A.switch

B.cher

C.case

D.default *2.C语言提供的合法关键字是(D)。

A.next B.string C.do case D.struct *3.下列不属于C语言中关键字的是 B A)long B)print C)default D)typedef 4.下列正确的标识符是(C)。

A.-a1 B.a[i] C.a2_i D.int t 5.下列C语言用户标识符中合法的是(B)。A、*y B、sum C、int D、%5f 6.下面四个选项中,合法的标识符是:(D)A.auto B.define C.6a D.c 7.下列C语言用户标识符中合法的是(B)。A)3ax B)x C)case D)-e2 E)union 8.以下选项中合法的用户标识符是 B

A)long

B)_2Test

C)3Dmax

D)A.dat 9.下列四组选项中,正确的C语言标识符是(C)。

A)%x B)a+b C)a123 D)123 10.请选出可用作C语言用户标识符的一组标识符(B)A)void

B)a3_b3

C)For

D)2a define _123-abc DO WORD sum Case sizeof

11、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。A、print _3d db8 aBc B、Iam one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 12.下列C语言标识符中合法的变量名是 B。

A)2e3 B)you C)*y D)float 13.C语言中的简单数据类型包括(D)。

A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型

14、下列可以正确表示字符型常量的是(A)。A、’t’ B、”a” C、”n” D、297 15.下列表达式中,D 是正确的C语言字符常量。

A)”x” B)e3 C)”COMPUTER” D)’#’ 16.在下列表达式中,属于字符型常量的是 B。A)A B)'a' C)“A” D)b 17.以下选项中合法的字符常量是(B)A)“B” B)‘n’ C)‘68’ D)E 18.下面字符常量表示错误的是(D)

A)’a’ B)’?’ C)’n’ D)”n”

19.已定义c为字符型变量,则下列语句中正确的是(C)A)c='97' B)c=“97” C)c=‘a’ D)c=“a” 20.已知ch是字符型变量,不正确的赋值语句是(A)A)ch='a+b';

B)ch=' ';C)ch=' 7';D)ch=’;’;21.C语言中字符型(char)数据在内存中的存储的是(D)A)原码 B)补码 C)反码 D)ASCII码

22.在C语言中,字符型数据所占的内存空间是(C)A)2个字节 B)4字节 C)1字节 D)由用户自定义

*23.若int类型数据占2个字节,则unsigned int类型数据的取值范围是

(B)A)0~255 B)0~65535 C)-32768~32767 D)-256~255 26.C语言中运算对象必须是整型的运算符是(A)A)%= B)/ C)= D)〈= A)1.6 B)1 C)3 D)0 x=10;x+=x;A)10 B)20 C)40 D)30

31.在C语言程序中,表达式5%2的结果是 C。A)2.5 B)2 C)1 D)3 32.如果int a=3,b=4;则条件表达式“a

37.下面(D)表达式的值为4.A)11/3 B)11.0/3 C)(float)11/3 D)(int)(11.0/3+0.5)

*39.已知int x=5,y=5,z=5;执行语句x%=y+z;后,x的值是(C)A.0 B.1 C.5 D.6 40.已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'+'6'-'3';后,c2中的值为(B)A)68 B)‘D’ C)错误 D)‘d’ 41.下列关于C语言的叙述错误的是(A)

A)大写字母和小写字母的意义相同 B)不同类型的变量可以在一个表达式中

C)在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型 D)同一个运算符号在不同的场合可以有不同的含义 42.有:int w=11,x=12,y=3,m;执行下面语句后m的结果是(C)m=(w

43.有:int w=7, x=12, y=3, m;执行下面语句后m的值是(A)m=(w>x)?w:x;m=(m>y)?m:y;A.12 B.0 C.3 D.1

45.设整型变量 a=2,则执行下列语句后,浮点型变量b的值不为0.5的是(B)

A.b=1.0/a B.b=(float)(1/a)C.b=1/(float)a D.b=1/(a*1.0)

48.以下运算符中优先级最高的运算符是(B)

A)&& B)++ C)+= D)!= 49.若“int n;float f=13.8;”,则执行“n=(int)f%3”后,n的值是(A)A.1 B.4 C.4.333333 D.4.6

52.设x为int型变量,则执行以下语句后,x的值为(C)

x=10;x*=x;A)10 B)20 C)100 D)0 53.若有语句int a=1,b;double y=2.3;b=(int)y;则b的值为(B)。

A)3 B)2 C)1 D)2.3 54.已知int x;char y;则下面错误的scanf函数调用语句为(B)A)scanf(“%d,%d”,&x,&y);B)scanf(“%d,%c”,x,y)C)scanf(“%d%d”,&x,&y)D)scanf(“%d,%c”,&x,&y)

57.在C语言的库函数中,可以输出char型变量x值的语句是 C。A)getchar(x);B)fputc(x)C)putchar(x)D)puts(x)

60.以下说法正确的是(C)

A)'x'+5是一个错误的表达式 B)C语言不允许类型的混合运算

C)强制类型转换时,类型说明符必须加括号 D)(int)x+y 和(int)(x+y)是完全等价的表达式 61.设 int x=0, y=1;表达式(x||y)的值是(B)A)0 B)1 C)2 D)-1

三、选择结构

1.在C语言中,认为(D)为逻辑“真” A)true B)大于0的数 C)非0整数 D)非0的数 A)(x<=y)&&(y<=z)B)(x<=y)AND(y<=z)C)(x<=y<=z)D)(x<=y)&(y<=z)3.能正确表示逻辑关系:“a≥=10或a≤0”的C语言表达式是(D)A)a>=10 or a<=0 B)a>=0|a<=10 C)a>=10 &&a<=0 D)a>=10‖a<=0

4、判断char型变量c1是否为大写字母的表达式为(D)。

A、’A’<=c1<=’Z’ B、(c1>=’A’)&(c1<=’Z’)C、(’A’<=c1)AND(‘Z’>=c1)D、c1>=’A’ && c1<=’Z’ 5.为表示逻辑表达式79

A)(X>79)&&(X<90)B)(X>79)!=(X<90)2.表示关系x<=y<=z的c语言表达式为 A C)7979)||(X<90)6.设有语句“int a=2,b=3,c=-2,d=2;”,则逻辑表达式“a>0&&b&&c<0&&d>0”的 值是(A)

A.1 B.0

C.-1 D.出错

7.设a为整型变量,则不能正确表达数学关系10<a<15的C语言表达式是(A)。A.1010&&a<15 D.!(a<=10)&&!(a>=15)8.设x,t均为int型变量,则执行语句“x=10;t=x&&x>10;”后,t的值为(D)A.不定值

B.10 C.1 D.0 9.若int i=10;执行下列程序后,变量i的正确结果是(A)。switch(i){ case 9: i+=1;case 10: i+=1;case 11: i+=1;default : i+=1;} A、13 B、12 C、11 D、10 10.在下面的条件语句中(其中s1和s2表示是C语言的语句),只有一个在功能上与其它三个语句不等价,它是(D)。

A、if(a)s1;else s2;B、if(a= =0)s2;else s1;C、if(a!=0)s1;else s2;D、if(a= =0)s1;else s2;11.假定所有变量均已正确定义,则下列程序段运行后y的值是(A)

int a=0,y=10;if(a=0)y--;else if(a>0)y++;else y+=y;A.20 B.11 C.9 D.0 12.假定所有变量均已正确定义,则下列程序段运行后x的值是(B)。

a=b=c=0;x=35;if(!a)x--;else if(b);if(c)x=3;else x=4;A.34 B.4 C.35 D.3 13.C语言对嵌套if语句的规定是:else语句总是与(D)配对。A)其之前最近的if B)第一个if C)缩进位置相同的if D)其之前最近的且尚未配对的if 14.在C语言语句中,用来决定分支流程的表达式是(A)。

A.可用任意表达式

B.只能用逻辑表达式或关系表达式 C.只能用逻辑表达式

D.只能用关系表达式 15.C语言中用(B)表示逻辑“真”。

A.true B.整数值1 C.非零整数值 D.false

16、若k是int型变量,且有下面的程序段:

int k;k=-3;if(k<=0)printf(“####”); else printf(“&&&&”); 上面程序段的输出结果是(A)

A、#### B、&&&& C、####&&&& D、有语法错误,无输出结果

17.main(){ int x=0,a=0,b=0;switch(x){ case 0: b++;case 1: a++;case 2: a++;b++;} printf(“a=%d,b=%dn”,a,b);} 该程序的输出结果是 D

A)a=2,b=1 B)a=1,b=1 C)a=1,b=0 D)a=2,b=2 18.以下程序的输出结果是:(C)

main(){ int x=-10,y= 1,z=1;if(x

int a=10,b=50,c=30; if(a>b)a=b; b=c; c=a;

printf(“a=%2d b=%2d c=%2dn”,a,b,c);

A)a=10 b=50 c=10 B)a=10 b=30 c=10 C)a=50 b=30 c=10 D)a=50 b=30 c=50

四、循环结构

*1.在C语言中,下列说法中正确的是(D)。

A)do-while语句构成的循环不能用其它语句构成的循环来代替。B)do-while语句构成的循环只能用break语句退出。

C)do-while语句构成的循环在while后的表达式非零时结束循环。

D)do-while语句构成的循环,在while后的表达式为零时结束循环。

2.break语句不能出现在(D)语句中

A.switch B.for C.while D.if„else *3.对于break语句和continue语句的说法错误的是(B)

A)break语句不能用于循环语句和switch语句之外的任何其他语句中。B)break和continue也可以用于if语句中

C)continue语句只结束本次循环,而不是终止整个循环的执行。D)break语句是结束整个循环过程,不再判断执行循环的条件是否成立。4.语句while(!y);中的表达式!y等价于 A

A)y==0 B)y!=1 C)y=!0 D)y==1 5.若有“int a=1,x=1;”,则循环语句“while(a<10)x++;a++;”的循环执行(A)

A.无限次

B.不确定次

C.10次

D.9次 6.有以下程序段

int k=0 while(k)k++;则while循环体执行的次数是

C

A)无限次

B)有语法错,不能执行

D)执行1次 C)一次也不执行

7.下列循环语句中有语法错误的是(D)A while(x=y)5; B while(0);

C do 2;while(x= =b); D do x++ while(x= =10); 9.以下程序段(A)8 x=-1;do { x=x*x;} while(x>0);A.是死循环 B.循环执行一次 C.循环执行二次 D.有语法错误 10.下面程序段执行后的结果为:(B)int sum=0, n=10;do { sum=sum+n;n++;} while(n<10)printf(“%d,%d”,sum,n)A.0, 10 B.10, 11 C.0, 11 D.以上结果都不对 11.对以下程序段的叙述正确的是___A____.int x=1;do { x=-1*x;} while(!x)A)是死循环 B)循环执行一次 C)循环执行二次 D)有语法错误 12.循环“for(i=0,x=1;i=10&&x>0;i++);”的循环执行(A)。A.无限次

B.不确定次

C.10次

D.9次 13.执行语句{for(j=0;j<=3;j++)a=1;}后变量j的值是 C.A)0 B)3 C)4 D)1 14. 有如下程序

main(){ int i,sum=2;for(i=1;i<=3;i+=2)sum+=i;printf(“%dn”,sum);} 该程序的执行结果是 A

A)6 B)3 C)死循环 D)4 五 数组

1.以下对一维数组a的正确说明是: D

A)char a(10);

B)int a[];

C)int k=5,a[k]; D)char a[3]={‘a’,’b’,’c’};2.以下能对一维数组a进行初始化的语句是:(C)A.int a[5]=(0,1,2,3,4,)B.int a(5)={} C.int a[3]={0,1,2} D.int a{5}={10*1} 3.在C语言中对一维整型数组的正确定义为 D。A)int a(10);B)int n=10,a[n];C)int n;a[n];D)#define N 10 int a[N];

4、已知:int a[10];则对a数组元素的正确引用是(D)。

A、a[10]

B、a[3.5]

C、a(5)

D、a[0] 5.执行下面的程序段后,变量k中的值为 C

A)不定值 B)33 C)30 D)10 int k=3, s[2];s[0]=k;k=s[0]*10;*6.下列说法中错误的是 C

A 构成数组的所有元素的数据类型必须是相同的 B 用指针法引用数组元素允许数组元素的下标越界 C 一维数组元素的下标依次是1、2、3„„ D 定义数组时的长度可以是整型常量表达式

7.若有以下数组说明,则数值最大的和最小的元素下标分别是(B)。int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};A.1,12 B.0,11 C.1,11 D.0,12 8.若有以下数组说明,则i=10;a[a[i]]元素数值是(B)。int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};A.10 B.9 C.6 D.5 9.假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是 D A)3

11.若有说明:int a[][3]={{1,2,3},{4,5},{6,7}};则数组a的第一维的大小为:(B)A.2 B.3 C.4 D.无确定值 12.以下定义语句中,错误的是(D)

B)6

C)10

D)20 A)int a[]={1,2};B)char *a;D)int n=5,a[n];C)char s[10]=“test”;

int i;13.下面程序段的输出结果是:(C)int x[3][3]={1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)printf(“%d ”,x[i][2-i]);A)1 5 9 B)1 4 7 C)3 5 7 D)3 6 9 14.对二维数组的正确定义是(C)

A.int a[ ] [ ]={1,2,3,4,5,6};B.int a[2] [ ]={1,2,3,4,5,6};C.int a[ ] [3]={1,2,3,4,5,6};D.int a[2,3]={1,2,3,4,5,6};15.已知int a[3][4];则对数组元素引用正确的是__C___ A)a[2][4] B)a[1,3] C)a[2][0] D)a(2)(1)

六、函数

1.C语言中函数返回值的类型是由 A 决定的.A)函数定义时指定的类型 B)return语句中的表达式类型 C)调用该函数时的实参的数据类型 D)形参的数据类型 2.在C语言中,函数的数据类型是指(A)A 函数返回值的数据类型 B.函数形参的数据类型 C 调用该函数时的实参的数据类型 D.任意指定的数据类型

A.由系统选择 B.单向值传递 C.由用户指定传递方式 D.地址传递 5.在函数调用时,以下说法正确的是(B)

A.函数调用后必须带回返回值

B.实际参数和形式参数可以同名

C.函数间的数据传递不可以使用全局变量

D.主调函数和被调函数总是在同一个文件里 9.以下叙述中正确的是 A

A)构成C程序的基本单位是函数

B)可以在一个函数中定义另一个函数

C)main()函数必须放在其它函数之前

D)所有被调用的函数一定要在调用之前进行定义

10.用数组名作为函数调用时的实参时,传递给形参的是 A。

A)数组首地址 B)数组第一个元素的值

C)数组全部元素的值

D)数组元素的个数

*16.下列说法中正确的是:(A)

A.局部变量在一定范围内有效,且可与该范围外的变量同名。

B.如果一个源文件中,全局变量与局部变量同名,则在局部变量范围内,局部变量不起作用。

C.局部变量缺省情况下都是静态变量。

D.函数体内的局部静态变量,在函数体外也有效。17.在C语言中,表示静态存储类别的关键字是:(C)

A)auto

B)register

C)static

D)extern 18.未指定存储类别的变量,其隐含的存储类别为(A)。A)auto B)static C)extern D)register

八.指针

1. 语句int *p;说明了 C。A)p是指向一维数组的指针

B)p是指向函数的指针,该函数返回一int型数据 C)p是指向int型数据的指针

D)p是函数名,该函数返回一指向int型数据的指针 2.变量的指针,其含义是指该变量的:(B)A.值 B.地址 C.名 D.一个标志

3.若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是(A)

A)pb=&x B)pb=x C)*pb=&x D)*pb=*x

4、已知:int a, *p=&a;则下列函数调用中错误的是(D)。A、scanf(“%d”,&a);B、scanf(“%d”,p);C、printf(“%d”,a);D、printf(“%d”,p);5.对于同类型的指针变量,不可能进行的运算是(C)。

A.-B.= C.+ D.== 6.对于基类型相同的两个指针变量之间,不能进行的运算是 C

A)< B)= C)+ D)-7.下列不正确的定义是(A)。

A.int *p=&i,i;B.int *p,i;C.int i,*p=&i;D.int i,*p;8.若有说明:int n=2,*p=&n,*q=p,则以下非法的赋值语句是:(D)

A)p=q B)*p=*q C)n=*q D)p=n 9.int *p,a=10,b=1;p=&a;a=*p+b;执行该程序段后,a的值为 C A)编译出错 B)10 C)11 D)12 10.有语句:int a[10],;则 B 是对指针变量p的正确定义和初始化。

A)int p=*a;B)int *p=a;C)int p=&a;D)int *p=&a;11.若有说明语句“int a[5],*p=a;”,则对数组元素的正确引用是(C)。A.a[p] B.p[a] C.*(p+2)D.p+2 12.若指针变量p指向整型数组a[10]的首地址, 即p=a;则下列数组元素a[i](0

A.p+i B.&(a+i)C.*(a+i)D.*(p+i*2)13.有如下程序

int a[10]={1,2,3,4,5,6,7,8,9,10},*P=a;则数值为9的表达式是 B

A)*P+9 B)*(P+8)C)*P+=9 D)P+8

16.若有以下说明: int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为4的表达式是(C)A)*p+4 B)*(p+4)C)*(p+3)D)p+3

19.下列函数的功能是 A。void fun(int *p1,int *p2){ int p;p=*p1;*p1=*p2;*p2=p;} A)交换*p1和*p2的值 B)语法正确,但无法交换*p1和*p2的值 C)交换*p1和*p2的地址 D)有语法错误

九、字符串

1.在C语言中,以 D 作为字符串结束标志

A)’n’ B)’ ’ C)’0’ D)’’ 2.下列数据中属于“字符串常量”的是(A)。

A.“a” B.{ABC} C.‘abc’ D.‘a’ 3.字符串 “ABCD”在内存占用的字节数是(D)。A.4

B.6

C.1

D.5 4.下面不正确的字符串常量是:(A)

A.‘PROGRAM’ B “12’12” C “0” D “ ” 5.设有数组定义: char array [ ]=“abcd”;则数组array所占的空间为 B

A)4个字节 B)5个字节 C)6个字节 D)7个字节

7.已知char x[]=“hello”, y[]={'h','e','a','b','e'};, 则关于两个数组长度的正确描述是 B.A)相同 B)x大于y C)x小于y D)以上答案都不对

8.给出以下定义: char x[ ]=“abcdefg”;char y[ ]={'a','b','c','d','e','f','g'};则正确的叙述为 C

A)数组x和数组y等价 B)数组x和数组y的长度相同 C)数组x的长度大于数组y的长度

D)数组x的长度小于数组y的长度

9、若有以下语句,则正确的描述是(D)。static char x[ ]=”12345”;static char y[ ]={‘1’,‘2’,‘3’,‘4’, 5’,’’};A、x数组长度大于y数组长度 B、x数组和y数组不相同 C、x数组长度小于y数组长度 D、x数组等价于y数组

10、已知:char s[20]= ”programming”, *ps=s;则不能引用字母o的表达式是(C)。

A、ps[2]

B、s[2]

C、ps+2

D、ps+=2, *ps 13.对字符数组s赋值,不合法的一个是(C)A.char s[]=“Beijing”; B.char s[20]={“beijing”}; C.char s[20];s=“Beijing”;

D.char s[20]={'B','e','i','j','i','n','g'};

14.对字符数组str赋初值,str不能作为字符串使用的一个是(D)A.char str[]=“shanghai”; B.char str[]={“shanghai”};

C.char str[9]={'s','h','a','n','g','h','a','i',’’}; D.char str[8]={ 's','h','a','n','g','h','a','i'}; 15.合法的数组定义是 C

A)int a[]={“string”};B)int a[5]={0,1,2,3,4,5};C)char a[]= “string”;D)char a[5]={0,1,2,3,4,5};16.对字符数组s赋值,不合法的是:(C)A)char s[]=“china”; B)char s[20]={“ china ”};

C)char s[20];s=“ china”; D)char s[20]={'c','h','i','n','a'};

17.下面初始化与此初始化charc[ ]=“I am happy”;等价的是(A)

A)char c[ ]={‘I’,’’,’a’,’m’,’’,’h’,’a’,’p’,’p’,’y’,’’}; B)char c[ ]={‘I’,’am’,’happy’};C)char c[ ]={‘I’, ’’,’a’,’m’,’’,’h’,’a’,’p’,’p’,’y’};D)char c[ ]={‘I’,’am’,’happy’,’’};19.下列字符串赋值方式不正确的是(A)

A).char str[20];B).char *str;str=”I am a boy!”;C).char *str=”I am a boy!”;

str=”I am a boy!”;D).char str[20]=” I am a boy!”;15

第三篇:二级C语言100道经典选择题及答案

【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】下列四组字符串中都可以用作C语言程序标识符的一组是。

A)print

B)iam

C)Pxq

D)str_l

_3d

one_half My->book Cpp ••• oodbs tart$it

line

#pow ••• aBc

3pai

His.age

while

【1.4】下面各选项组中,均是C语言关键字的组是。

A)auto,enum,include B)switch,typedef,continue C)signed,union,scanf D)if,struct,type

【1.5】下列不属于C语言关键字的是。

A)default B)register C)enum D)external

【1.6】C语言程序从main()函数开始执行,所以这个函数要写在____。

A)程序文件的开始

B)程序文件的最后

C)它所调用的函数的前面

D)程序文件的任何位置

【1.7】下列关于C语言的叙述错误的是____ A)大写字母和小写字母的意义相同

B)不同类型的变量可以在一个表达式中 C)在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型

D)同一个运算符号在不同的场合可以有不同的含义

【1.8】在C语言中,错误的int类型的常数是。

A)32768 B)0 C)037 D)0xAF

【1.9】执行语句 printf(“%x”,-1);屏幕显示____。

A)-1 B)1 C)-ffff D)ffff

【1.10】已知 long i=32768;执行语句printf(“%d”,i);屏幕显示____。

A)-1 B)-32768 C)1 D)32768

【1.11】已知 long i=65539;执行语句printf(“%d”,i);屏幕显示____。

A)65539 B)-3 C)3 D)程序不能执行

【1.12】在C语言中,整数-8在内存中的存储形式是。

A)1111 1111 1111 1000 B)1000 0000 0000 1000 C)0000 0000 0000 1000 D)1111 1111 1111 0111

【1.13】C语言中字符型(char)数据在内存中的存储形式是____。

A)原码 B)补码 C)反码 D)ASCII码 【1.14】将字符g赋给字符变量c,正确的表达式是。

A)c=147 B)c=“147” C)c=’147’ D)c=’0147’

【1.15】下列转义字符中错误的一个是____。

A)’00’ B)’014’ C)’x111’ D)’2’

【1.16】将空格符赋给字符变量c,正确的赋值语句是____。

A)c=’’ B)c=NULL C)c=0 D)c=32

【1.17】已知:char a=’70’;则变量a中。

A)包含1个字符 B)包含2个字符 C)包含3个字符 D)说明非法

【1.18】字符串“"EOFn=-61”“的长度是____。

A)8 B)9 C)14 D)非法字符串

【1.19】字符串”“的长度是____。

A)0 B)1 C)2 D)非法字符串

【1.20】已知:char a;int b;float c;double d;执行语句”c=a+b+c+d;“后,变量c的数据类型是。

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

【1.21】温度华氏和摄氏的关系是: C=5/9*(F-32)。已知:float C,F;由华氏求摄氏的正确的赋值表达式是____。

A)C=5/9(F-32)B)C=5*(F-32)/9 C)C=5/9*(F-32)D)三个表达式都正确

【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;则条件表达式”a

【1.24】为求出s=10!的值,则变量s的类型应当为。

A)int B)unsiged C)long D)以上三种类型均可

【1.25】已知int i=10;表达式“20-0<=i<=9”的值是____。

A)0 B)1 C)19 D)20

【1.26】已知int x=1,y;执行下述语句后变量x的值是____。

y=++x>5&&++x<10; A)1 B)2 C)3 D)4 【1.27】为判断字符变量c的值不是数字也不是字母时,应采用下述表达式____。

A)c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122 B)!(c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122)C)c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122 D)!(c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122)【1.28】已知 int a[3][2]={3,2,1};

则表达式“a[0][0]/a[0][1]/a[0][2]”的值是____。

A)0.166667 B)1 C)0 D)错误的表达式

【1.29】已知 int x=1,y=1,z=1;

表达式“x+++y+++z++”的值是____。

A)3 B)4 C)5 D)表达式错误

【1.30】用十进制表示表达式“12|012”的值是____。

A)1 B)0 C)12 D)14

【1.31】已知以下程序段:

int a=3,b=4;

a=a^b;0011 0100 0111 b=b^a;0100 0011 0111 0100 a=a^b;

则执行以上语句后a和b的值分别是____。

A)a=3,b=4 B)a=4,b=3 C)a=4,b=4 D)a=3,b=3

【1.32】在位运算中,操作数每右移一位,其结果相当于____。

A)操作数乘以2 B)操作数除以2 C)操作数除以16 D)操作数乘以16

【1.33】已知 char a=222;执行语句a=a&052;后,变量a的值是____。

A)222 B)10 C)244 D)254

【1.34】已知二进制数a是00101101,如果想通过整型变量b与a做异或运算,使变量a的高4位取反,低4位不变,则二进制数b的值应是____。

A)11110000 B)00001111 C)11111111 D)00000000

【1.35】已知 int a=15,执行语句a=a<<2以后,变量a的值是____。

A)20 B)40 C)60 D)80

【1.36】已知int x=5,y=5,z=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.25□2.4 C)x=1.25,y=2.4 D)x=1.25□y=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】已知int x=(1,2,3,4);变量x的值是____。

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

【1.40】表达式sizeof(double)是。

A)函数调用 B)double型表达式 C)int型表达式 D)非法表达式

【1.41】执行语句printf(“2:%d,”,printf(“1:%d,”,scanf(“%d,”,&x)));以后的输出结果是____。

A)2:1,1:1, B)1:1,2:1, C)2:4,1:1 D)1:1,2:4,【1.42】已知:int x,y;double z;则以下语句中错误的函数调用是。

A)scanf(“%d,%lx,%le”,&x,&y,&z);

B)scanf(“-*%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)(n!=0)D)(n!=1)

【1.44】已知int i=1,j=0;执行下面语句后j的值是____。

while(i)switch(i)

{ case 1: i+=1;j++;break; case 2: i+=2;j++;break;

case j3: i+=3;++;break;

default: i--;j++;break;

} A)1 B)2 C)3 D)死循环

【1.45】求取满足式 12+22+32+ …… +n2 ≤1000的n,正确的语句是____。

A)for(i=1,s=0;(s=s+i*i)<=1000;n=i++);

B)for(i=1,s=0;(s=s+i*i)<=1000;n=++i);

C)for(i=1,s=0;(s=s+i*++i)<=1000;n=i);

D)for(i=1,s=0;(s=s+i*i++)<=1000;n=i);

【1.46】下面的for语句。

for(x=0,y=10;(y>0)&&(x<4);x++,y--);

A)是无限循环 B)循环次数不定

C)循环执行4次 D)循环执行3次

【1.47】已知int i=1; 执行语句while(i++<4);后,变量i的值为____。

A)3 B)4 C)5 D)6

【1.48】已知int x=12,y=3;执行下述程序后,变量x的值是____。

do { x/=y--;

}while(x>y);

A)1 B)2 C)3 D)程序运行有错误

【1.49】已知

char a[][20]={“Beijing”,“shanghai”,“tianjin”,“chongqing”} ;

语句printf(“%c”,a[30]);的输出是____。

A)<空格> B)n C)不定

D)数组定义有误

【1.50】若用数组名作为函数调用时的实参,则实际上传递给形参的是。

A)数组首地址

B)数组的第一个元素值

C)数组中全部元素的值 D)数组元素的个数

【1.51】对二维数组的正确说明是____。

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

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

【1.52】对字符数组s赋值,不合法的一个是____。

A)char s[]=“Beijing”;

B)char s[20]={“beijing”};

C)char s[20];s=“Beijing”;

D)char s[20]={’B’,’e’,’i’,’j’,’i’,’n’,’g’};

【1.53】对字符数组str赋初值,str不能作为字符串使用的一个是____。

A)char str[]=“shanghai”;

B)char str[]={“shanghai”};

C)char str[9]={’s’,’h’,’a’,’n’,’g’,’h’,’a’,’i’};

D)char str[8]={ ’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 x[10],int n)D)int a(float x,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】已知如下定义的函数:

fun1(a)

{ printf(“n%d”,a);

}

则该函数的数据类型是____。

A)与参数a的类型相同 B)void型

C)没有返回值 D)无法确定

【1.59】定义一个函数实现交换x和y的值,并将结果正确返回。能够实现此功能的是____。

A)swapa(int x,int y)函数swapa是值传递,函数的执行结果不能返回 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;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);

关于此语句的解释,下面说法正确的是____。

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)调用时发生错误

(y不能为0)

【1.63】下面函数的功能是____。

a(s1,s2)char s1[],s2[];

{ while(s2++=s1++);

}

A)字符串比较 B)字符串复制 C)字符串连接 D)字符串反向

【1.64】在下列结论中,只有一个是错误的,它是。

A)C语言允许函数的递归调用

B)C语言中的continue语句,可以通过改变程序的结构而省略

C)有些递归程序是不能用非递归算法实现的D)C语言中不允许在函数中再定义函数

【1.65】已知:int a, *y=&a;则下列函数调用中错误的是。

A)scanf(“%d”, &a); B)scanf(“%d”, y);

C)printf(“%d”, a); D)printf(“%d”, y);

【1.66】说明语句“int(*p)();”的含义是。

A)p是一个指向一维数组的指针变量

B)p是指针变量,指向一个整型数据

C)p是一个指向函数的指针,该函数的返回值是一个整型

D)以上都不对

【1.67】设有说明int(*p)[4];其中的标识符p是。

A)4个指向整型变量的指针变量

B)指向4个整型变量的函数指针

C)一个指向具有4个整型元素的一维数组的指针

D)具有4个指向整型变量的指针元素的一维指针数组

【1.68】已知:char s[10], *p=s,则在下列语句中,错误的语句是。

A)p=s+5; B)s=p+s; C)s[2]=p[4]; D)*p=s[0];

【1.69】已知:char s[100];int i;则引用数组元素的错误的形式是。

A)s[i+10] B)*(s+i)C)*(i+s)D)*((s++)+i)

【1.70】已知:char s[6], *ps=s;则正确的赋值语句是。

A)s=“12345”; B)*s=“12345”; C)ps=“12345”; D)*ps=“12345”;

【1.71】已知:char a[3][10]={“BeiJing”,“ShangHai”,“TianJin”}, *pa=a;不能正确显示字符串“ShangHai”的语句是。

A)printf(“%s”,a+1); B)printf(“%s”,*(a+1));

C)printf(“%s”,*a+1); D)printf(“%s”,&a[1][0]);

【1.72】已知:int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};

int(*ptr)[3]=a,*p=a[0];

则以下能够正确表示数组元素a[1][2]的表达式是。

A)*(*(a+1)+2)B)*(*(p+5))C)(*ptr+1)+2 D)*((ptr+1)[2])

【1.73】已知:int a[ ]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a;则值为3的表达式是。

A)p+=2,*(p++)B)p+=2,*++p C)p+=2,*p++ D)p+=2,++*p

【1.74】已知:int a[]={1,2,3,4}, y, *p=a;则执行语句y =(*++p)--;之后, 数组a各元素的值变为______。

A)0,1,3,4 B)1,1,3,4 C)1,2,2,4 D)1,2,3,3

变量y的值是____。

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

【1.75】已知:int a[ ]={1,3,5,7}, y *p= a;为使变量y的值为3,下列语句正确的是____。

A)y=++*p++; B)y=++(*p++); C)y=(++*p)++; D)y=(*++p)++;

【1.76】已知:int x[ ]={ 1,3,5,7,9,11 },*ptr=x;则能够正确引用数组元素的语句是。

A)x B)*(ptr--)C)x[6] D)*(--ptr)

【1.77】函数的功能是交换变量x和y中的值,且通过正确调用返回交换的结果。能正确执行此功能的函数是。

A)funa(int *x, int *y)B)funb(int x, int y){ int *p; { int t;

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

} }

C)func(int *x, int *y)D)func(int *x, int *y)

{ *x=*y;*y=*x; { *x=*x+*y;*y=*x-*y;*x=*x-*y;

} }

【1.78】有定义如下:

struct sk { int a;

float b;

}data ,*p;

如果 p=&data;则对于结构变量data的成员a的正确引用是____。

A)(*).data.a B)(*p).a C)p->data.a D)p.data.a 【1.79】已知:

struct st { int n;

struct st *next;

};

static struct st a[3]={1,&a[1],3,&a[2],5,&a[0]},*p;

如果下述语句的显示是2,则对p的赋值是____。

printf(“%d”,++(p->next->n));

A)p=&a[0]; B)p=&a[1]; C)p=&a[2]; D)p=&a[3];

【1.80】已知:

struct person { char name[10];

int age;

}class[10]={“LiMing”,29,“ZhangHong”,21,“WangFang”,22};

下述表达式中,值为72的一个是____。

A)class[0]->age + class[1]->age+ class[2]->age B)class[1].name[5] C)person[1].name[5] D)clase->name[5] 【1.81】已知:

struct { int i;

char c;

float a;

}test;

则sizeof(test)的值是。

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

【1.82】已知:

union { int i;

char c;

float a; }test;

则sizeof(test)的值是。

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

【1.83】已知:

union u_type { int i;

char ch;

float a;

}temp;

现在执行“temp.i=266;printf(”%d“,temp.ch)”的结果是。

A)266 B)256 C)10 D)1

【1.84】若有以下程序段:

struct dent { int n;

int *m;

};

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

struct dent s[3] = { {101,&a},{102,&b},{103,&c} };

struct dent *p=s;

则以下表达式中值为2的是。

A)(p++)->m B)*(p++)->m C)(*p).m D)*(++p)->m

【1.85】若有以下说明语句,则对结构变量pup中sex域的正确引用是。

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

【1.86】以下对结构变量stul中成员age的非法引用是。

struct student { int age;

int num;

}stu1,*p;

p=&stu1;

A)stu1.age B)student.age C)p->age D)(*p).age

【1.87】若有以下定义和语句:

union data { int i;

char c;

float f;

}a;

int n;

则以下语句正确的是______。A)a=5; B)a={2,’a’,1.2}; C)printf(“%dn”,a); D)n=a;

【1.88】已知:

struct sk { int a;

int age;

}date,*p;

如果要使指针p指向data中的成员a,正确的赋值语句是____。

A)p =(struct sk *)&data.a; B)p =(struct sk *)data.a;

C)p = &data.a; D)*p = data.a; 【1.89】已知 enum week {sun,mon,tue,wed,thu,fri,sat}day;则正确的赋值语句是____。

A)sun=0; C)san=day; D)sun=mon; D)day=sun;

【1.90】已知 enum color {red,yellow=2,blue,white,black}ren;执行下述语句的输出结果是____。

printf(“%d”,ren=white);

A)0 B)1 C)3 D)4

【1.91】已知 enum name{zhao=1,qian,sun,li}man;执行下述程序段后的输出是____。

man=0;

switch(man)

{ case 0: printf(“Peoplen”);

case 1: printf(“Mann”);

case 2: printf(“Womann”);

default: printf(“Errorn”);

} A)People B)Man C)Woman D)Error

【1.92】下述关于枚举类型名的定义中,正确的是____。

A)enem a={ one,two,three }; B)enem a { one=9,two=-1,three };

C)enem a={“one”,“two”,“three”}; D)enem a {“one”,“two”,“three”};

【1.93】C语言中标准输入文件stdin是指。

A)键盘 B)显示器 C)鼠标 D)硬盘 【1.94】要打开一个已存在的非空文件“file”用于修改,选择正确的语句____。

A)fp=fopen(“file”, “r”); B)fp=fopen(“file”, “a+”);

C)fp=fopen(“file”, “w”); D)fp=fopen(’file“, ”r+“);

【1.95】当顺利执行了文件关闭操作时,fclose函数的返回值是。

A)-1 B)TRUE C)0 D)1

【1.96】fscanf函数的正确调用形式是。

A)fscanf(文件指针, 格式字符串, 输出列表);

B)fscanf(格式字符串, 输出列表, 文件指针);

C)fscanf(格式字符串, 文件指针, 输出列表);

D)fscanf(文件指针, 格式字符串, 输入列表);

【1.97】使用fgetc函数,则打开文件的方式必须是。

A)只写 B)追加 C)读或读/写

D)参考答案B和C都正确

【1.98】已知宏定义

#define N 3

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

执行语句z=2*(N+Y(5+1));后,变量z的值是____。

A)42 B)48 C)52 D)出错

【1.99】已知宏定义 #define SQ(x)x*x,执行语句printf(”%d“,10/SQ(3));后的输出结果是____。A)1 B)3 C)9 D)10 【1.100】已知宏定义如下:

#define PR printf #define NL ”n“ #define D ”%d“ #define D1 DNL

若程序中的语句是 PR(D1,a);经预处理后展开为____。

A)printf(%dn,a); B)printf(”%dn“,a);

C)printf(”%d“"n”,a); D)原语句错误

【参考答案】

【1.1】答案: A 注释:int是C语言的关键字 【1.2】答案: B 【1.3】答案:A 【1.4】答案:B 注释:include是预处理命令;scanf是函数名;type不是C语言的关键字。【1.5】答案:D 【1.6】答案:D 【1.7】答案:A 【1.8】答案:A 注释:int型表示整数的范围是-32768~32767。【1.9】答案:D 注释:整型常量-1在计算机中表示为补码1111 1111 1111 1111,用十六进制显示这个数时,最左边的1不会被解释为符号位,而是与右边其它位共同转换为十六进制数。【1.10】答案:B 注释:长整型数32768在计算机内的表示是1000 0000 0000 0000,以一般整型进行输出时,此数恰是-32768的补码。【1.11】答案:C 注释:长整型数65539在计算机内的表示是0001 0000 0000 0000 0011,以一般整型进行输出时,仅将右侧16位二进制数转换为十进制数。【1.12】答案:A 注释:C语言中,int型的负数是采用补码表示的。【1.13】答案:D 【1.14】答案:C 注释:变量c是字符型,可用字符常量为它赋值。字符常量必须用单引号括起来,所以B是错误的;在单引号或双引号内的反斜线''用于表示转义字符,A选项在无引号时使用反斜线是错误的;C选项单引号内出现反斜线表示它与后面的数字组成一个转义字符;单引号只允许括起一个字符,D选项在单引号内出现4个字符,是错误的。【1.15】答案:C 【1.16】答案:D 注释:空字符和空格符是不同的两个字符,空格符的ASCII码值是32,空字符的ASCII值是0。【1.17】答案:A 【1.18】答案:B 【1.19】答案:A 【1.20】答案:C 【1.21】答案:B 注释:单纯从C语言语法来说,选项B、C都是正确的,但是选项C中第一个运算的两个对象都是整型常数,其结果也是整型数0,最后的运算结果也就是0了。

【1.22】答案:C 【1.23】答案:A 注释:将条件表达式增加一个括号,此式变为a。

【1.27】答案:D C>=48中的48是字符对应的ASCII码,数字的ASCII码从48到57,大写字母为65到90,小写字母为97到122,在以上范围内表示是数字或字母,对它取非表示既不是数字也不是字母,所以选D。

【1.28】答案:B 注释:数组元素在内存中按行排列,此数组的前3个元素的值分别是3、2、1,表达式中虽然数组下标的写法似乎每行有3个元素,和定义时的3行2列不一致,但是C语言引用数组元素时是根据数组的首地址和给出的下标进行运算决定元素的地址。题中表达式引用了数组前3个元素。【1.29】答案: A 【1.30】答案:D

整数12最低8位二进位是00001100,整数012是八进制数,它的最低8位二进位是00001010.这两个二进位位串信息按位或运算,得到结果是00001110,对应十进制数14,八进制数是016.按位与运算符“&”是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0。

按位或运算符“|”是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。

按位异或运算符“^”是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。参与运算数仍以补码出现。

求反运算符~为单目运算符,具有右结合性。其功能是对参与运算的数的各二进位按位求反。

左移运算符“<<”是双目运算符。其功能把“<< ”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。其值相当于乘2。

右移运算符“>>”是双目运算符。其功能是把“>> ”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。其值相当于除2。

【1.31】答案:B 【1.32】答案:B 【1.33】答案:B 【1.34】答案:A 【1.35】答案:C 【1.36】答案:C 【1.37】答案:C 【1.38】答案:D 【1.39】答案:D 【1.40】答案:C

sizeof是求长度的函数,其结果类型就是无符号整形表达式。sizeof(double)是指求double类型数据的数据长度

【1.41】答案:D 注释:scanf函数返回值是输入数据的个数,printf函数的返回值是输出的字符个数。

【1.42】答案:D 【1.43】答案:C 注释:在C语言中,经常用一个变量来作为逻辑表达式,其含义就是:当变量的值不为0时关系成立。【1.44】答案:D 注释:break语句仅可跳出switch语句,不会跳出while循环,这是一个死循环。【1.45】答案:A 【1.46】答案:C 【1.47】答案:C 【1.48】答案:D 注释:当除数y为0时,程序发生溢出错误。【1.49】答案:C 【1.50】答案:A 【1.51】答案:C 【1.52】答案:C 注释:答案C的赋值号左侧是数组s的首地址,是一个常量,赋值号右侧是一个字符串常量,不可能将一个字符串常量赋给一个地址常量。【1.53】答案:D 注释:D选项缺少字符串结束标志。【1.54】答案:C 注释:此处函数形参是一个指针变量,接受实参的地址,而不是一个数组。【1.55】答案:A 【1.56】答案:D 注释:这里首先要明确一些基本概念。在C语言中,程序与文件是不同的概念,一个程序可以由一个文件组成,也可以由多个文件组成;一个文件中又可以包含多个函数;函数是构成C程序的基本单位。变量的作用域因变量的存储类型不同而不同。auto和register类型的变量的作用域是说明变量的当前函数;外部变量的作用域是整个程序,即外部变量的作用域可以跨越多个文件;内部静态变量(定义在一个函数内部的static型的变量)的作用域是当前函数,外部静态变量(定义在函数外面的static型的变量)的作用域是当前文件,即可以跨越同一文件中的不同函数。【1.57】答案:A 【1.58】答案:A 注释:它和参数a一样,数据类型说明被省略,按照C语言的规定,在这种情况下,表示它们是int型。【1.59】答案:C 注释:函数swapa是值传递,函数的执行结果不能返回;函数swapb中变量temp不是指针变量,所以它不能接受地址量,用指针变量x为它赋值是不对的;函数swap中虽然指针变量交换了地址,即它们的指向的目标变量进行了交换,但是目标变量并没有行值的交换。【1.60】答案:B 【1.61】答案:D 【1.62】答案:D 注释:主调函数中b=0,在执行fun1函数里的除法时发生溢出错误。【1.63】答案:B 【1.64】答案:C 【1.65】答案:D 注释:在答案D中,正确的函数调用应当是:printf(“%d”, *y)。【1.66】答案:C 注释:要注意与说明语句“int(*p)[ ];”的区别。说明语句“int(*p)[ ];”说明的是一个指向数组的指针。【1.67】答案:C 注释:题干中由于*和p被小括号括起,所以p应被解释为一个指针,而后的下标运算符[]说明所指向的对象是一个有4个int型元素的一维数组;如果是int(*p)(),则是指向函数的指针。对于int *p[4],则根据运算符的优先级,先考虑p和[]运算符的关系,所以它就是一个指针数组了。【1.68】答案:B 注释:选项B有两处错误,一是数组名是常量,不能出现的赋值好的左侧,二是指针变量只能和整数做加,不能和作为地址常量的数组名相加。【1.69】答案:D 注释:s作为数组名是地址常量,而s++是s=s+1,C语言不允许对常量进行赋值。

【1.70】答案:C 【1.71】答案:C 注释:a是二维数组名,a+1中的1不是1个字节,而是数组的“一行”,即10个字节,所以a+1是第二个字符串的首地址,A选项正确。在C编译系统中对二维数组名可这样理解(注意,这里仅是理解):a指向一个一维数组,故(a+1)是指向a[1]的,*(a+1)就是取a[1]的值,它保存第二个字符串“ShangHai”的首地址,所以选项B也正确。*a是第一个字符串的首地址,加1是第一个字符串中第二个字符的地址,选项C的输出是“beiJing”。选项D中的&a[1][0]是对第二个字符串的第一个字符做取地址运算,得到该地址就是字符串“ShangHai”的首地址。注意,对于二维数组来说,做一次*或[]运算的结果仍是地址量,做两次才是取数值。

【1.72】答案:A 注释:p是一个一级指针,选项B中对它进行了两次*运算是错误的。ptr是一个指向一维数组的指针,它所指向的数组有三个元素,对于这样一个指针,对它进行两次**运算才能取出地址单元中所存的数据,C选项中*ptr表示数组第一行的首地址,该地址是一维数组的地址,+3表示加上三个它所指向的数据类型的长度,所以(*ptr+1)+2是数组中数值4的地址。根据以上分析,选项D对ptr进行了两次地址操作(*和[]),所以结果应是数据,但是它加1后指向数组第二行,根据后面[]中2它的地址增加两个一维数组的长度,就指向数组的最后一行,再做*运算就是数10,即a[3][0]。【1.73】答案:A 【1.74】答案:B B 【1.75】答案:D 【1.76】答案:B 【1.77】答案:D 注释:答案D是另一种交换两个变量值的算法。【1.78】答案:B 【1.79】答案:C 注释:使用C对p进行赋值,则p->next是a[0]的地址,引用其成员n再做前增1运算,结果就是2。【1.80】答案:B 【1.81】答案:D 【1.82】答案:A 【1.83】答案:C 注释:联合变量temp的成员是占用同一存储单元,它的长度是4个字节。266的二进制表示是100001010,存放在存储单元的低端两个字节,如下图: 高字节

0 0 0 0 0 0 0 1 低字节 0 0 0 0 1 0 1 0 引用temp.ch进行输出,只取最低的第一个字节。【1.84】答案:D 注释:由于结构指针指向了结构数组的0号元素,所以表达式(p++)->m的含义是先取出m(变量a的地址),然后指针p加1。表达式*(p++)->m的含义是先取出m的内容(变量a的值),然后指针p再加1。表达式(*p).m的含义是取出m(变量a的地址)。表达式*(++p)->m的含义是先将指针p加1,然后再取m的内容(变量b的值)。【1.85】答案:D 【1.86】答案:B 【1.87】答案:C 【1.88】答案:A 【1.89】答案:D 【1.90】答案:D 【1.91】答案:A 【1.92】答案:B 【1.93】答案:A 【1.94】答案:D 注释:函数fopen中的第二参数是打开模式,“r”模式是只读方式,不能写文件;“a+”模式是读/追加方式,允许从文件中读出数据,但所有写入的数据均自动加在文件的末尾;“w”模式是写方式,允许按照用户的要求将数据写入文件的指定位置,但打开文件后,首先要将文件的内容清空。“r+”模式是读/写方式,不但允许读文件,而且允许按照用户的要求将数据写入文件的指定位置,且在打开文件后,不会将文件的内容清空。本题的要求是“修改”文件的内容,因此只能选择答案D。

【1.95】答案:C 【1.96】答案:D 【1.97】答案:C 【1.98】答案:B 注释:语句z=2*(N+Y(5+1)引用了两个宏定义。C语言是区分字母大小的,第二个宏定义中的N直接用3替换,用5+1替换n,则有z=2*(3+(3+1)*5+1);结果是48。注意对于带参数的宏亦是直接的文本替换,此例中n用5+1去替换,结果是(N+1)*5+1,而不是(N+1)*(5+1)。

【1.99】答案:C 注释:宏替换后的结果是printf(“%d”,10/3*3)。【1.100】答案:C

第四篇:c语言选择题

2.C语言的基本单位是A

A 函数

B 源程序

C 语句

D 程序行

3..以下说法中正确的是C

A C语言程序总是从第一个定义的函数开始执行C;

B C语言程序中至少有一个main函数;

C C语言程序总是从main函数开始执行;

D C语言程序中的main函数必须放在程序的开始部分; 4.C源程序文件的扩展名为C A.exe B.txt

C.c D.obj 5..以下说法中正确的是D

A C源程序可以直接运行产生结果;

B C源程序经编译后才可直接运行产生结果;

C C源程序经连接后才可直接运行产生结果;

D C源程序经编译和连接后才可直接运行产生结果;

6.在C程序中,main()函数的位置是C A 必须作为第一个函数;

B 必须作为最后一个函数;

C 可以任意;

D 必须放在它所调用的函数之后;

7.以下叙述不正确的是D

A 一个C源程序可由一个或多个函数构成;

B 一个C源程序必须包含一个main函数;

C C程序的基本组成单位是函数;

D 在对一个C程序进行编译的过程中,可发现注释中的拼写错误;

8.C语言中,下列正确的叙述是D

A C程序中的关键字必须小写,其他标识符不区分大小写

B C程序中的所有字母都不区分大小写

C C程序中的所有字母都必须小写

D 所有的C语言关键字必须小写

9.要把高级语言编写的源程序转换为目标程序,需要使用D A 编辑程序

B 驱动程序

C 诊断程序

D 编译程序

10.以下叙述中错误的是 D

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

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

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

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

11.用C语言编写的代码程序B

A 可立即执行

B 是一个源程序

C 经过编译即可执行

D 经过编译解释才能执行

12.以下叙述中正确的是B

A C语言的源程序不必通过编译就可以直接运行

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

C C源程序经编译形成的二进制代码可以直接运行

D C语言中的函数不可以单独进行编译

13.以下叙述中正确的是A A 构成C程序的基本单位是函数

B 可以在一个函数中定义另一个函数

C main()函数必须放在其它函数之前

D 所有被调用的函数一定要在调用之前进行定义

14.能将高级语言源程序转换成目标程序的是C

A 调试程序

B 解释程序

C 编译程序

D 编辑程序

15.以下叙述中正确的是C

A C程序的基本组成单位是语句

B C程序中的每一行只能写一条语句

C 简单C语句必须以分号结束

D C语句必须在一行内写完

16.计算机能直接执行的程序是D

A 源程序

B 目标程序

C 汇编程序

D 可执行程序

17.在语言中,以下叙述不正确的是D A 一个C源程序可由一个或多个函数组成B 一个C源程序必须包含一个main函数

C C程序的基本组成单位是函数

D 在C程序中,注释说明只能位于一条语句的后面

18.C语言规定:在一个源程序中,main函数的位置C A 必须在最开始

B 必须在系统调用的库函数的后面

C 可以任意

D 必须在最后

19.一个C程序的执行是从A

A 本程序的main 函数开始,到main函数结束

B 本程序文件中的第一个函数开始,到本程序文件的最后一个函数结束

C 本程序的main 函数开始,到本程序文件的最后一个函数结束

D 本程序文件的第一个函数开始,到本程序main函数结束

20.下列叙述中错误的是A

A 主函数中定义的变量在整个程序中都是有效的。

B 在其它函数中定义的变量在主函数中也不能使用。

C 形式参数也是局部变量。

D 复合语句中定义的变量只在该复合语句中有效。

21.在函数的说明和定义时若没有指出函数的类型,则A A 系统自动地认为函数的类型为整型。

B 系统自动地认为函数的类型为字符型。

C 系统自动地认为函数的类型为实型。

D 编译时会出错。

22.下面叙述中正确的是C

A 对于用户自己定义的函数,在使用前必须加以说明。

B 说明函数时必须明确其参数类型和返回类型。

C 函数可以返回一个值,也可以什么值也不返回。

D 空函数不完成任何操作,所以在程序设计中没有用处。

23.下面正确的函数定义形式是A A double fun(int x,int y)

B double fun(int x;int y)C double fun(int x,int y);

D double fun(int x,y);

24.若调用一个函数,且此函数中没有return语句,则正确的说法是(D)该 函数:

A 没有返回值

B 返回若干个系统默认值;

C 能返回一个用户所希望的函数值;

D 返回一个不确定的值

25.下面说法中不正确的是(B)在C语言中

A 实参可以是常量、变量或表达式;

B 形参可以是常量、变量或表达式;

C 函数的参数是函数间传递数据的一种手段;

D 实参个数应与对应的形参个数相等,类型匹配;

26.C语言允许函数返回值类型缺省定义,此时该函数隐含的返回值类型是B A float型

B int 型

C long 型

D double型

27.C语言规定,函数返回值的类型是由D A return语句中的表达式类型所决定;

B 调用该函数时的主调函数类型所决定;

C 调用该函数时系统临时决定;

D 在定义该函数时所指定的函数类型所决定;

28下面函数调用语句含有实参的个数为(B)

func((exp1,exp2),(exp3,exp4,exp5));A 1 B 2 C 5 D 4

29.以下错误的描述是(D)函数的调用可以

A 出现在执行语句中;

B 出现在一个表达式中;

C 为一个函数的实参;

D 作为一个函数的形参;

30.下正确的说法是(A)。如果在一个函数中的复合语句中定义了一个变量,则该变量

A 只在该复合语句中有效

B 在该函数中有效

C 本程序中有效

D 为非法变量

31.以下不正确的说法是D

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

B 形式参数是局部变量;

C 在函数内定义的变量只在本函数范围内有效;

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

32.如果一个变量在整个程序运行期间都存在,但是仅在说明它的函数内是可见 的,这个变量的存储类型应该被说明为___ A _。

A 静态变量

B 动态变量

C 外部变量

D 内部变量 33.在一个C源程序文件中,•若要定义一个只允许在该源文件中所有函数使用的 变量,则该变量需要使用的存储类别是。D A extern B register C auto D static 34.在C语言中,函数的数据类型是指A A 函数返回值的数据类型

B 函数形参的数据类型

C 调用该函数时的实参的数据类型

D 任意指定的数据类型

35.已知如下定义的函数:

fun1(int a){ printf(“n%d”,a); } 则该函数的数据类型是_A___。

A 与参数a的类型相同

B void型

C 没有返回值

D 无法确定

36.有如下函数调用语句

func(rec1,rec2+rec3,(rec4,rec5));该函数调用语句中,含有的实参个数是A A 3 B 4 C 5 D 有语法错

37.以下所列的各函数首部中,正确的是C A void play(var :Integer,var b:Integer)B void play(int a,b)C void play(int a,int b)

D Sub play(a as integer,b as integer)38.以下正确的说法是B

A 用户若需调用标准库函数,调用前必须重新定义;

B 用户可以重新定义标准库函数,若如此,该函数将失去原有含义;

C 系统根本不允许用户重新定义标准库函数;

D 用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调;

39.函数用 return 语句返回计算 20!的结果,此函数的类型应说明为_D_____。

A int

B long

C unsigned long

D 其它三个答案都不对

40.若有以下程序

#include “stdio.h” void f(int n);main(){

void f(int n);

f(5);}

void f(int n){

printf(“%dn”,n);}

则以下叙述中不正确的是C

A 若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f

B 若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数f C 对于以上程序,编译时系统会提示出错信息:提示对f函数重复说明

D 函数f无返回值,所以可用void将其类型定义为无值型

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

B register

C static

D extern 42.以下叙述中错误的是 D

A C程序必须由一个或一个以上的函数组成 B 函数调用可以作为一个独立的语句存在 C 若函数有返回值,必须通过return语句返回

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

43.在C语言中关于函数的正确叙述是B A 函数的定义和调用均可以嵌套

B 函数的定义不可以嵌套,但函数的调用可以嵌套

C 函数的定义和调用均不可以嵌套

D 函数的定义可以嵌套,但函数的调用不可以嵌套

44.有以下程序

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 ”,e,f,g);}

程序运行后的输出结果是(A)。

A 4,3,7

B 3,4,7

C 5,2,7

D 2,5,7 45.以下关于函数的叙述中正确的是B

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

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

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

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

46.设函数fun的定义形式为 void fun(char ch, float x){ „ } 则以下对函数fun的调用语句中,正确的是(D)。

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

D fun(32,32);

47.若程序中定义了以下函数 double myadd(double a,double B){ return(a+B)} 并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是(A)。

A double myadd(double a,B)

B double myadd(double,double);C double myadd(double b,double A)

D double myadd(double x,double y);

48.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是D A 函数调用可以作为独立的语句存在 B 函数调用可以作为一个函数的实参

C 函数调用可以出现在表达式中

D 函数调用可以作为一个函数的形参

49.有以下函数定义: void fun(int n, double x){ „„ } 若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是(C)。

A fun(int y,double m);

B k=fun(10,12.5);C fun(x,n);

D void fun(n,x);

50.有以下函数定义: void fun(int n, double x){ „„ } 若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是(C)。

A fun(int y,double m);B k=fun(10,12.5);C fun(x,n);

D void fun(n,x);

51.在一个C程序中B

A main函数必须出现在所有函数之前

B main函数可以在任何地方出现

C main函数必须出现在所有函数之后

D main函数必须出现在固定位置

52.有以下程序 int fl(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,e,f; d=f1(a,b);d=f1(d,c);e=f2(a,b);e=f2(e,c); f=a+b+c-d-e;printf(“%d,%d,%dn”,d,f,e);} 执行后输出结果是(C)。

A 3,4,5 B 5,3,4

C 5,4,3 D 3,5,4 53.以下叙述中正确的是B

A 全局变量的作用域一定比局部变量的作用域范围大

B 静态(static)类别变量的生存期贯穿于整个程序的运行期间

C 函数的形参都属于全局变量

D 未在定义语句中赋初值的auto变量和static变量的初值都是随机值

54.C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是B A void

B int

C float

D double 55.有以下程序

float fun(int x,int y){ return(x+y);} main()

{ int a=2,b=5,c=8;printf(“%3.0fn”,fun((int)fun(a+c,b),a-c));} 程序运行后的输出结果是(B)。

A 编译出错

B 9 C 21 D 9.0 56.以下函数值的类型是(A)。

fun(float x){ float y;y= 3*x-4;return y;} A int B 不确定 C void D float 57.下列叙述中正确的是D A C语言编译时不检查语法

B C语言的子程序有过程和函数两种

C C语言的函数可以嵌套定义

D C语言所有函数都是外部函数

58.以下程序的输出结果是(C)。

fun(int x, int y, int z){ z=x*x+y*y;} main(){ int a=31;fun(5,2,a);

printf(“%d”,a);}

A 0 B 29 C 31 D 无定值

59.有如下程序

int runc(int a,int b){ return(a+b);} main()

{ int x=2,y=5,z=8,r;r=func(func(x,y),z);printf(“%dn”,r);}

该程序的输出的结果是(D)。

A 12

B 13 C 14 D 15

60.以下叙述中不正确的是D A 在不同的函数中可以使用相同名字的变量 B 函数中的形式参数是局部变量

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

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

61.有以下程序 viod fun(int a,int b,int c){ a=456;b=567;c=678;} main(){ int x=10,y=20,z=30;fun(x,y,z);printf(“%d,%d,%dn”,z,y,x);} 输出结果是(A)。

A 30,20,10 B 10,20,30 C 456,567,678 D 678,567,456 62.以下叙述中不正确的是C

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

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

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

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

63.若有以下函数调用语句: fun(a+b,(x,y),fun(n+k,d,(a,b)));在此函数调 用语句中实参的个数是A A 3

B 4

C 5

D 6

64.C语言中,函数的隐含存储类别是C A auto

B static

C extern D 无存储类别

65.以下说法中正确的是C

A C语言程序总是从第一个的函数开始执行

B 在C语言程序中,要调用的函数必须在main()函数中定义

C C语言程序总是从main()函数开始执行

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

66.下面说法中不正确的是D A 全局变量一定是外部变量

B 局部变量一定是内部变量。

C 全局变量作为函数间传递数据的手段时,与文件的作用类似,都是通过共享某种资源来传递数据。

D 全局变量与局部变量不可以重名

67.C 语言允许函数返回值类型缺省定义,此时该函数返回值默认的类型是B a)A float 型

B int 型

C long 型

D double 型

68.关于流程控制语句,下列说法正确的一项是C A 一个自定义函数中的return语句只能出现一次;

B break语句只适用于几种循环语句格式,表示终止当前层的循环;

C 在循环体中遇到continue,表示结束本次循环,直接进行下次循环条件的判断;

D 在自定义函数的执行过程中,return语句可能被多次执行。

69.若有定义语句:char s[10]=“1234567”;,则strlen(s)的值是A A 7 B 8 C 9 D 10

70.若有定义:int x,*pb;则以下正确的赋值表达式是(C)

A *pb=&x;B pb=x;C pb=&x;D *pb=*x;71.执行以下程序后,a的值为

main()

{ int a,b,k=4,m=6,*p1=&k,*p2=&m;a=p1==&m;

b=(-*p1)/(*p2)+7;printf(“a=%dn”,a);printf(“b=%d”,b);} A -1 B 1 C 0 D 4

72.下面程序中调用scanf 函数给变量a输入数值的方法是错误的,其错误原因 是(B)main(){ int *p,q,a,b;p=&a;scanf(“%d”,*p);„„ }

A *p表示的是指针变量p的地址;

B *p表示的是变量a的值,而不是变量a的地址

C *p表示的是指针变量p的值

D *p只能用来说明p是一个指针变量

73.若有int k=2,*ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确 执行的语句是B

A k=*ptr1+*ptr2;B ptr2=k;

C ptr1=ptr2;

D k=*ptr1*(*ptr2);

74.若有语句int *point a=4;和point &a;下面均代表地址的一组选项是C A a,point,*&a

B &*a,&a,*point C *&point,*point,&a

D &a,&*point,point 75.若有说明:int *p,m=5,n;下面正确的程序段是D a)A p=&n;scanf(“%d”,&p);

B p=&n;scanf(“%d”,*p);C scanf(“%d”,&n);*p=n;

D p=&n;*p=m

76.下面能正确进行字符串赋值操作的是C A char s[5]={“ABCDE”};

B char s[5]={‘A’,’B’,’C’,’D’,’E’};C char *s s=“ABCDE”;D char *s;scanf(“%s”,s);77.设有下面的程序段:

char s[]=”china”;char *p;p=s;则下列叙述正确的是C A s和p完全相同

B 数组s中的内容和指针变量p中的内容相等

C *P与s[0]相等

D s数组长度和p所指向的字符串长度相等

78.下面程序段的运行结果是C

char *format=”%s,a=%d,b=%dn”;int a=1,b=10;a+=b;printf(format,”a+=b”,a,b);

A for,”a+=b”,ab

B format,”a+=b”

C a+=b,a=11,b=10

D 以上结果都不对

79.若有语句:char s1[]=”string”,s2[8],*s3,*s4=”string2”;则对库 函数strcpy()的正确调用是D A strcpy(s1,”string2”);B strcpy(s4,”string1”);C strcpy(s3,”string1”);

D strcpy(s2,s4);80.下面说明不正确的是D A char a[10]=”china”;

B char a[10],*p=a;p=”china”;C char *a;a=”china”;

D char a[10],*p;p=a=”china”;

81.语句while(!e);中的条件!e等价于A A e==0 B e!=0 C e!=1 D ~e 82.以下程序的输出结果是(C)

main()

{ int num=0;while(num<=2){ num++;printf(“%d,”,num);} }

A 1,B 1,2,C 1,2,3,D 1,2,3,4, 83.以下程序段是(C)

x=-1;do

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

A 死循环

B 循环执行两次

C 循环执行一次

D 有语法错误

84.以下不正确的描述是B

A break语句不能用于循环语句和switch语句外的其它语句

B 在switch语句中使用break语句或continue语句的作用相同

C 在循环语句中使用continue语句是为了结束本次循环

D 在循环语句中使用break语句是为了使流程跳出循环体

85.对于for(表达式1;;表达式3)可理解为B A for(表达式1;0;表达式3)B for(表达式1;1;表达式3)

C for(表达式1;表达式1;表达式3)D for(表达式1;表达式3;表达式3)86.C语言中D

A 不能使用do-whi1e语句构成的循环;

B do-while语句构成的循环必须用break语句才能退出;

C do-while语句构成的循环,当while语句中的表达式值为非零时结束循环;

D do-while语句构成的循环,当while语句中的表达式值为零时结束循环;

87.C语言中while和do-while循环的主要区别是A A do-while的循环体至少无条件执行一次

B while的循环控制条件比do-while的循环控制条件严格

C do-while允许从外部转到循环体内;

D do-while的循环体不能是复合语句;

88.若i为整型变量,则以下循环执行的次数是(B)

for(i=2;i==0;)printf(“%d”,i--);

A 无限次

B 0次

C 1次

D 2次

89.以下for 循环的执行次数是(C)

for(x=0,y=0;(y=123)&&(x<4);x++);

A 是无限循环

B 循环次数不定

C 执行4次

D 执行3次

90.下列循环语句中有语法错误的是D A while(x=y)5;

B while(0); C do 2;while(x==b);

D do x++ while(x==10);

91.有关语句for(;;);执行过程的描绘中,正确的是 C 92.A 不执行任何操作

B 空循环一次

C 无休止地执行循环体

D 上都不对

92.下面有关for循环的正确描述是D

A for循环只能用于循环次数已经确定的情况

B for循环是先执行循环体语句,后判定表达式

C 在for循环中,不能用break语句跳出循环体

D for循环体语句中,可以包含多条语句,但要用花括号括起来

93.与语句 while(!x);等价的语句是A

A while(x==0); B while(x!=0); C while(x!=1); D while(~x);

94.以下for循环是(D)

for(x=0,y=0;(y!=123)&&(x<3);x++);

A 无限循环 B 循环次数不定 C 执行4次 D 执行3次

95.下列关于switch语句和break语句的结论中,正确的是B A break语句是switch语句中的一部分

B 在switch语句中可以根据需要使用或不使用break语句

C 在switch语句中必须使用break语句

D switch语句是break语句的一部分

96.以下叙述中正确的B

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

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

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

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

97.有以下程序段

int n,t=1,s=0;scanf(“%d”,&n);do{ s=s+t;t=t-2;}while(t!=n);

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

A 任意正奇数

B 任意负偶数

C 任意正偶数

D 任意负奇数

98.若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)

s=a;

for(b=1;b<=c;b++)s=s+1;

则与上述程序段功能等价的赋值语句是B A s=a+b;B s=a+c;C s=s+c;D s=b+c;99.有如下程序 B main()

{ int x=23;do

{ printf(“%d”,x--);} while(!x);}

该程序的执行结果是

A 321

B 23

C 不输出任何内容

D 陷入死循环

100.以下循环体的执行次数是(C)。main(){ int i,j;

for(i=0,j=1;i<=j+1;i+=2, j--)printf(“%d n”,i);}

A 3

B 2

C 1 D 0

101.以下不是死循环的语句为(A)

A for(y=1,x=1;x>=++y;x++)B for(;;x++)

C while(1){x++;} D for(i=10;;i--)

102.在C语言中,假定a和b为int型变量,则执行以下语句后b的值为D a=1;

b=10;

do {

b-=a;

a++;}

while(b--<0);

A 9

B-2

C-1 D 8

103.在C语言中,以下的for循环()。

for(x=0,y=0;(y!=123)&&(x<4);x++);C

A 是无限循环 B 循环次数不定 C 执行4次 D 执行3次

104.在TC中,与语句 “while(!x)” 等价的语句是(A)。

A while(x==0)

B while(x!=0)

C while(x!=1)

D while(~x)105.在C语言中,设已定义k为int整型变量,则有下面while循环执行(C)次。k=10;while(k==0)k=k-1;

A 10

B 无限

C 0

D 1

106.在C语言中,当do-while语句中的条件为(C)时,结束该循环。

A TURE

B 1

C 0

D 非0 107.下列说法中正确的是B

A 在程序中定义一个结构体类型,将为此类型分配存储空间。

B 结构体类型的成员名可与结构体以外的变量名相同。

C 结构体类型必须有名称。

D 结构体内的成员不可以是结构体变量。

108.当说明一个结构体变量时系统分配给它的内存是A A 各成员所需内存量的总和;

B 结构体中第一个成员所需的内存量;

C 成员中内存量最大者所需的容量;

D 结构体中最后一个成员所需 的内存量;

109.当说明一个共用体变量时系统分配给它的内存是C A 各成员所需内存量的总和;

B 第一个成员所需的内存量;

C 成员中内存量最大者所需的容量;

D 最后一个成员所需 的内存量;

110.设有以下说明语句

typedef struct { int n;char ch[8];}PER;

则下面叙述中正确的是B A PER 是结构体变量名

B PER是结构体类型名

C typedef struct 是结构体类型

D struct 是结构体类型名

111.以下选项中不能正确把cl定义成结构体变量的是B A typedef struct { int red;int green;int blue;} COLOR;COLOR cl;B struct color cl { int red;int green;int blue;};

C struct color { int red;int green;int blue;} cl;

D struct { int red;int green;int blue;} cl;112.设有如下定义:

struck sk { int a;float b;}data;int *p;

若要使P指向data中的a域,正确的赋值语句是(C)。A p=&a;

B p=data.a;

C p=&data.a;

D *p=data.a;113.设有以下说明语句

struct ex

{ int x float y;char z } example;则下面的叙述中不正确的是B A struct结构体类型的关键字

B example是结构体类型名

C x,y,z都是结构体成员名

D struct ex是结构体类型

114.有如下定义

struct person{char name[9];int age;};strict person class[10]={“Johu”, 17, “Mary”, 18, “Adam 16,};

根据上述定义,能输出字母M的语句是 D A prinft(“%cn”,class[3].mane);

B pfintf(“%cn”,class[3].name[1]);

C prinft(“%cn”,class[2].name[1]);

D printf(“%^cn”,class[2].name[0]);

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

struct abc

{int x;char y;} struct abc s1,s2;则会发生的情况A A 编译出错

B 程序将顺利编译`连接`执行

C 能顺利通过编译`连接`但不能执行

D 能顺利通过编译`但连接出错

116.设有定义: struct complex

{ int real,unreal;} data1={1,8},data2;则以下赋值语句中错误的是B A data2=data1;B data2=(2,6);

C data2.real=data1.real;D data2.real=data1.unreal;

117.C语言中,逻辑“真”等价于C

A 大于零的数

B 大于零的整数

C 非零的数

D 非零的整数

118.C语言的 switch 语句中,case 后B A 只能为常量

B 只能为常量或常量表达式

C 可为常量及表达式或有确定值的变量及表达式

D 可为任何量或表达式

119.main()

Paul”, 19 “ { int a,b,d=241;a=d/100%9;b=(-1)&&(-1);

printf(“%d,%d”,a,b);}B

A 6,1

B 2,1

C 6,0

D 2,0

120.若有int x=10,y=20,z=30;以下语句执行后x,y,z的值是(B)

if(x>y)

z=x;x=y;y=z;

A x=10,y=20,z=30

B x=20,y=30,z=30 C x=20,y=30,z=10

D x=20,y=30,z=20

121.以下程序段的输出结果是B

int a=10,b=50,c=30; if(a>b)a=b; b=c; c=a;

printf(“a=%d b=%d c=%dn”,a,b,c);

A a=10 b=50 c=10

B a=10 b=30 c=10 C a=50 b=30 c=10

D a=50 b=30 c=50

122.已知int i=10;表达式“20-0<=i<=9”的值B A 0

B 1 C 19

D 20

123.设有int i, j, k;则表达式i=1,j=2,k=3, i&&j&&k 的值为A A 1 B 2 C 3 D 0

124.逻辑运算符两侧运算对象的数据类型D A 只能是0或1

B 只能是0或非0正数

C 只能是整型或字符型数据

D 可以是任何类型的数据

125.能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假” 的表达式是C

A(x>=1)&&(x<=10)&&(x>=200)&&(x<=210)

B(x>=1)||(x<=10)||(x>=200)||(x<=210)

C(x>=1)&&(x<=10)||(x>=200)&&(x<=210)D(x>=1)||(x<=10)&&(x>=200)||(x<=210)

126.已知x=43,ch=’a’,y=0;则表达式(x>=y&&ch<’b’&&!y)的值B A 0

B 1

C 语法错误

D 假

127.执行下列语句后a的值为B

int a=5,b=6,w=1,x=2,y=3,z=4;(a=w>x)&&(b=y>z);A 5

B 0

C 2

D 1

128.若w=1,x=2,y=3,z=4,则表达式w

129.设有int a=2,b;则执行b=a&&1;语句后,b的结果是B A 0

B 1

C 2

D 3

130.当a=5,b=2时,表达式a= =b的值为C

A 2

B 1

C 0

D 5 131.下列表达式中能表示a在0到100之间的B A a>0&a<100 B!(a<0||a>100)C 0

D!(a>0&&a<100)

132.已知:int x,a,b;下列选项中错误的if语句是B A if(a=b)x++;B if(a<=b)x++;C if(a-b)x++;D if(x)x++;

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

A k%2

B k%2==1

C(k%2)!=0

D!k%2==1

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

C a && b

D a||(b+b)&&(c-a)

135.以下4个选项中,不能看作一条语句的是D

A {;}

B a=0,b=0,c=0;

C if(a>0);

D if(b==0)m=1;n=2;136.以下非法的赋值语句是C

A n=(i=2,++i);

B j++;

C ++(i+1);

D x=j>0;

137.已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1 && y+z/2的值是D A 6

B 0

C 2

D 1 138.有如下程序

main0

{ int a=2,b=-1,c=2;if(a

该程序的输出结果是C A 0

B 1

C 2

D 3

139.能表示x为偶数的表达式是A

A x%2==0

B x%2==1 C x%2

D x%2!=0 140.下面的程序段中共出现了几处语法错误?C int a,b;

scanf(“%d”,a);b=2a;

if(b>0)printf(“%b”,b);

A 1 B 2 C 3 D 4

141.要打开一个已存在的非空文件“file”用于修改,选择正确的语句_D_

A fp=fopen(“file”, “r”);

B fp=fopen(“file”, “a+”);

C fp=fopen(“file”, “w”);

D fp=fopen(“file”, “r+”);

142.fscanf函数的正确调用形式是。D

A fscanf(文件指针, 格式字符串, 输出列表); B fscanf(格式字符串, 输出列表, 文件指针); C fscanf(格式字符串, 文件指针, 输出列表); D fscanf(文件指针, 格式字符串, 输入列表); 143.若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是B A fopen(“A:userabc.txt”,“r”)B fopen(“A:userabc.txt”,“r+”)C fopen(“A:userabc.txt”,“rb”)D fopen(“A:userabc.txt”,“w” 144.以下叙述中错误的C

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

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

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

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

145.若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数 feof(fp)的值为A A 0 B 1 C-1

D 一个非0值

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

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

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

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

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

147.以下叙述中不正确的是D

A C语言中的文本文件以ASCⅡ码形式存储数据

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

C C语言中,随机读写方式不适用于文本文件

D C语言中,顺序读写方式不适用于二进制文件

148.以下叙述中错误的是D

A 二进制文件打开后可以先读文件的末尾,而顺序文件不可以

B 在程序结束时,应当用fclose函数关闭已打开的文件

C 在利用fread函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据

D 不可以用FILE定义指向二进制文件的文件指针

149.若fp是指向某文件的指针,且已读到此文件末尾,则库函数feof(fp)的返回值是 C A EOF

B 0

C 非零值

D NULL

150.在C程序中,可把整型数以二进制形式存放到文件中的函数是A A fprintf函数

B fread函数

C fwrite函数

D fputc函数

151.使用fopen()以文本方式打开或建立可读可写文件,要求:若指定的文件不存在,则新建一个,并使文件指针指向其开头,若指定的文件存在,打开它,将文件指针指向其结尾。正确的“文件使用方式”描述是B 152.A “r+”

B “w+”

C “a+”

D “a” 153.152.有以下程序

#include main(){ FILE *fp;char str[10];fp=fopen(“myfile.dat”,“w”);fputs(“abc”,fp);fclose(fp);fpfopen(“myfile.data”,“a++”);fprintf(fp,“%d”,28);rewind(fp);fscanf(fp,“%s”,str);puts(str);fclose(fp);}

程序运行后的输出结果是C

A abc

B 28bc

C abc28 D 因类型不一致而出错

153.在C语言中,以下哪个函数用于将字符输出到标准输出设备(A)

A putchar()

B open()

C read()

D getw()154.C语言中用于结构化程序设计的三种基本结构是A A 顺序结构、选择结构、循环结构

B if、switch、break C for、while、do-while

D if、for、continue

155.已知i、j、k为int型变量,若从键盘输入:1,2,3<回车>,使i的值 为

1、j的值为

2、k的值为3,以下选项中正确的输入语句是C A scanf(“%2d%2d%2d”,&i,&j,&k);B scanf(“%d %d %d”,&i,&j,&k);C scanf(“%d,%d,%d”,&i,&j,&k);

D scanf(“i=%d,j=%d,k=%d”,&i,&j,&k);156.若有以下程序:

main()

{ int k=2,i=2,m;

m=(k+=i*=k);printf(“%d,%dn”,m,i);} 执行后的输出结果是(C)。

A 8,6

B 8,3

C 6,4

D 7,4

157.若有定义:int x,y;char a,b,c;并有以下输入数据(此处< CR> 代表换行 符,/u代表空格): 1u2 AuBuC

则能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C 的正确程序段是D

A scanf(“x=%d y+%d”,&x,&y);a=getchar();b=getchar();c=getchar();B scanf(“%d %d”,&x,&y);a=getchar();b=getchar();c=getchar();C scanf(“%d%d%c%c%c,&x,&y,&a,&b,&c);

D scanf(”%d%d%c%c%c%c%c%c:&x,&y,&a,&a,&b,&b,&c,&c);158.有以下程序

#include main(){ char a,b,c,d;scanf(“%c%c”,&a,&b);c=getchar();d=getchar();printf(“%c%c%c%c ”,a,b,c,d);} 当执行程序时,按下列方式输入数据(从第1列开始,代表回车,注意:车也是一个字符)12 34 则输出结果是C

A 1234

B 12

C 123

D 1234 159.以下关于数组的描述正确的是C

A 数组的大小是固定的,但可以有不同的类型的数组元素;

B 数组的大小是可变的,但所有数组元素的类型必须相同;

C 数组的大小是固定的,但所有数组元素的类型必须相同;

D 数组的大小是可变的,但可以有不同的类型的数组元素;

160.在定义int a[10];之后,对a的引用正确的是A A a[9]

B a[6.3]

C a(6)

D a[10]

161.以下对一维数组a进行不正确初始化的是A A int a[10]=(0,0,0,0);B int a[10]={};C int a[]={0};

D int a[10]={10*2};

162.以下对字符数组进行不正确初始化的是A A static char word[]='cool';

B static char word[]={‘c’,’o’,’o’,’l’};C static char word[]={“cool”};D static char word[]=”cool”;

163.在执行char str[10]=”china”;strlen(str)的结果B A 5

B 6

C 7

D 9

164.在C语言中,引用数组元素时,其数组下标的数据类型允许是B A 整型常量

B 整型表达式或整型常量

C 实型常量

D 任何类型 的表达式

165.以下程序给数组所有的元素输入数据,空处应填入(C)

main()

{ int a[10],i=0;

while(i<10)scanf(“%d”,____________);} A &a[i] B a[i++]

int a=10,b=50,c=30; if(a>b)a=b; b=c; c=a;

printf(“a=%d b=%d c=%dn”,a,b,c);

A a=10 b=50 c=10

B a=10 b=30 c=10 C a=50 b=30 c=10

D a=50 b=30 c=50

166.有字符数组a[80],b[80],则正确的输出语句是D A puts(a,b);

B printf(“%s,%s”,a[],b[]);C putchar(a,b);

D puts(a);puts(b);

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

A char str[]={'64'};

B char str=“x43”;

C char str=“;

D char str[]=”“;

168.以下数组定义中正确的是 D A int x[][3]={0};

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

C nt x[][3]={{1,2,3},{4,5,6}};

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

169.要说明一个有10个int元素的数组,应当选择语句A A int a[10] B int a[2,5] C int a[ ] D int *a[10] 170.已知: int a[10];则对a数组元素引用正确的是D A a[10] B a[3.5] C a(5)D a[10-10]

171.已有定义:char a[]=”xyz“,b[]={''x'',''y'',''z''};,以下叙述中正确的是 C A 数组a和b的长度相同

B a数组长度小于b数组长度

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

D 上述说法都不对

172.以下能正确定义一维数组的选项是B A int a[5]={0,1,2,3,4,5};B char a[]={0,1,2,3,4,5};C char a={''A'',''B'',''C''};D int a[5]=”0123“;

173.假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是D

A 3

B 6

C 10

D 20

174.执行下面的程序段后,变量k中的值为(A)。

int k=3, s[2];s[0]=k;k=s[1]*10;

A 不定值

B 33

C 30

D 10

175.设有数组定义: char array [ ]=”China“;数组 array所占的空间为C A 4个字节

B 5个字节

C 6个字节

D 7个字节

176.下列描述中不正确的是C A 字符型数组中可以存放字符串

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

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

177.给出以下定义: char x[ ]=”abcdefg“;

char y[ ]={''a'',''b'',''c'',''d'',''e'',''f'',''g''};则正确的叙述为C A 数组X和数组Y等价

B 数组x和数组Y的长度相同

C 数组X的长度大于数组Y的长度

D 数组X的长度小于数组Y的长度

178.定义如下变量和数组: int i;

int x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是

for(i=0;i<3;i++)printf(”%d“,x[i][2-i]);C

A 1 5 9

B 1 4 7

C 3 5 7

D 3 6 9

179.以下一维数组a 的正确定义是D A int a(10);

B float n=10,a[n];C int n;scanf(”%d“,&n);float a[n];D #define size 10;long a[size];180.合法的数组定义是D 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};

181.下列选项中,能正确定义数组的语句是D A int num[0..2008];B int num[];

C int N=2008;int num[N];D

#define N 2008 int num[N];

182.在C语言中,能实现字符串连接的函数是A A strcat()B strcmp()C strcpy()

D strlen()

183.在C语言中,定义数组int a[7]={3,4,5,6,7,8,9},则a[5]的值为D A 9 B 6 C 7 D 8

184.在C语言中,定义int a[12]={1,2,3,4,5,6,7,8,9,10,11,12},i=5,则 下列选项中不能正确引用数组元素的是A A a[2*i-12]

B a[2*i-2] C a[12-i]

D a[2*i]

185.在C语言中,定义 char a[]={'a','b','l','l','o'},已知字符'b'的 ASCII码为98,则 printf(”%dn“,a[0]);的值为A A 97

B a

C 98

D b 186.在C语言中,有以下定义:char

b[10]={''h'',''n'',''s'',''p'',''k'',''s''};,则语句

printf(”%cn“,b[1]);的结果为B A h

B n

C s

D p

187.在C语言中,定义数组int a [12]={1,2,3,4,5,6,7,8,9,10,11,12},则a[3]的值B A 3

B 4

C 5

D 6

188.在C语言中,有以下程序main(){int p[8]={11,12,13,14,15,16,17,18},i=0,j=0;while(i<5){if(p[i]%2)j+=p[i];i++;}printf(”%dn“,j);}程序运行后的输出结果是A A 39

B 45

C 56

D 60

189.在C语言中,若有定义:int y=3,x[7]={1,2,3,4,5,6,7},则表达式y+=x[2]的值为A A 6

B 5

C 8

D 9

190.在C语言中,若有定义:int y=5,x[7]={1,2,3,4,5,6,7},则表达式y+=x[6]的值为D A 9

B 10

C 11

D 12

191.字符型常量在内存中存放的是A

A ASCⅡ 代码

B BCD 代码

C 内部码

D 十进制码

192.下列运算符中,结合方向为自左向右的是B A ? :

B ,C +=

D ++ 193.在C语言中运算对象必须是整型的运算符是A A %

B!

C /

D * 194.下列关于C语言的叙述错误的是A A 大写字母和小写字母的意义相同

B 不同类型的变量可以在一个表达式中 C 在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型

D 同一个运算符号在不同的场合可以有不同的含义

195.在C语言中,错误的int类型的常数是A

A 32768

B 0

C 037

D 0xAF 196.C语句x*=y+2;还可以写成C

A x=x*y+2;

B x=2+y*x;C x=x*(y+2);

D x=y+2*x;

197.如果有整型变量x,浮点型变量y,双精度型变量z,则表达式y*z+x+y执 行后的类型为 A

A 双精度

B 浮点型

C 整型

D 逻辑型

198.设C语言中,一个int 型数据在内存中占2个字节,则unsigned int 型 数据的取值范围是C

A 0—255

B 0—32767

C 0—65535

D 0--2147483647 199.以下说法不正确的D

A 在C程序中,逗号运算符的优先级最低;

B 在C程序中,aph和aPh是两个不同的变量;

C 若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变;

D 当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数;

200.设有float x;则x是__B__变量。

A 整型

B 实型

C 字符型

D 长型

201.若变量已正确定义并赋值,下面符合C语言语法的表达式是B A a:=b+1

B a=b=c+2

C int 18.5%3

D a=a+7=c+b

202.若有float x,y;则以下不合法的语句是B A ++x;

B y=(x%2)/10;C x*=y+8;D x=y=10;

203.不合法的十六进制数是A A oxff B 0xabc C 0x11 D 0xbeef

204.现有 #define N 3;的宏定义,执行语句 i=N*3 后,i的值是C A 3

B 6

C 9

D 其它三个答案都不对

205.turbo c中int类型变量所占字节数是B A 1

B 2

C 3

D 4

206.正确的合法的定义变量的语句是B A int ab_=086;

B int _ab=0xE8 C char a-b=‘1’;D float a3.b; 207.以下选项中不属于C语言的类型的是D A signed short int B unsigned long int C unsigned int D long short

208.以下叙述中错误的是 D

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

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

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

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

209.正确的字符串常量是A

A “ABCD”

B {ABCD}

C ‘ABCD’

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

A 复数型

B 逻辑型

C 双精度型

D 集合型

211.以下运算符中优先级最低的运算符是D A &&

B &

C ||

D = 212.以下叙述中错误的是A

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

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

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

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

213.设有以下定义 int a=0;double b=1.25;char c=’A’;#define d 2 则下面语句中错误的是D

A a++;

B b++

C c++;

D d++;214.下列关于单目运算符++、--的叙述中正确的是D A 它们的运算对象可以是任何变量和常量

B 它们的运算对象可以是char型变量和int型变量,但不能是float型变量

C 它们的运算对象可以是int型变量,但不能是double型变量和float型变量

D 它们的运算对象可以是char型变量、int型变量和float型变量

215.以下选项中合法的实型常数是C A 5E2.0

B E-3

C.2E0

D 1.3E

216.已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的字符常量‘101’为A

A 字符A

B 字符a

C 字符e

D 非法的常量

217.以下选项中合法的字符常量是B A “B”

B ‘10’

C 68

D D

218.若变量a、i已正确定义,且i已正确赋值,合法的语句是B A a==1

B ++i;

C a=a++=5;

D a=int(i);

219.以下选项中合法的字符常量是B A “B”

B ‘10’ C 68

D D

220.C语言提供的合法的数据类型关键字是B A Double

B short C integer D Char 221.在C语言中,合法的长整型常数是B

A 0

B 04962710

C 0.054838743

D 2.1869e10 222.表达式(int)2.5的值是A

A 2

B 3

C 0

D 2.5

223.以下选项中不能作为C语言合法常量的是A

A 'cd'

B 0.1e+6

C ”a“

D '11'

224.在TC中,已知: int x=10, y=3 , z;则下列语句的输出结果是 C printf(”%dn", z=(x%y,x/y));

A 1

B 0

C 3

D 4

225.若变量a、i已正确定义,且i已正确赋值,合法的语句是(B)。

A a==1

B ++i;C a=a++=5;D a=int(i);

226.设有说明语句:char a=’72’;则变量a为A A 包含1个字符

B 包含2个字符

C 包含3个字符

D 说明不合法

第五篇:C语言选择题

C语言选择题精选

*

1、A 一个C程序的执行是从_____。

A)本程序的main函数开始,到main函数结束√

B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C)本程序的main函数开始,到本程序文件的最后一个函数结束 D)本程序文件的第一个函数开始,到本程序main函数结束 *

2、C 以下叙述正确的是: A)在C程序中,main函数必须位于程序的最前面× B)C程序的每行中只能写一条语句× C)C语言本身没有输入输出语句

D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误× *

3、D 以下叙述不正确的是。

A)一个C源程序可由一个或多个函数组成 B)一个C源程序必须包含一个main函数 C)C程序的基本组成单位是函数

D)在C程序中,注释说明只能位于一条语句的后面 *

4、C C语言规定:在一个源程序中,main函数的位置。A)必须在最开始

B)必须在系统调用的库函数的后面 C)可以任意 D)必须在最后 *

5、B 一个C语言程序是由

A)一个主程序和若干子程序组成 B)函数组成

C)若干过程组成 D)若干子程序组成 *

6、A 在C语言中(以16位PC机为例),5种基本数据类型的存储空间长度的排列顺序为 A)char

7、C 若x,i,j和k都是int型变量,则执行下面表达式后x的值为 x=(i=4,j=16,k=32)A)4 B)16 C)32 D)52 *

8、B 假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是: A)7 B)8 C)6 D)2 *

9、A 下列四组选项中,均不是C语言关键字的选项是 A)define B)getc C)include D)while IF char scanf go type printf case pow *

10、B 下面四个选项中,均是C语言关键字的选项是 A)auto B)switch C)signed D)if enum typedef union struct include continue scanf type *

11、C 下面四个选项中,均是不合法的用户标识符的选项是。

A)A B)float C)b-a D)一123 P_0 1a0 goto temp do 一A int INT *

12、C C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符 A)必须为字母 B)必须为下划线

C)必须为字母或下划线 D)可以是字母,数字和下划线中任一种字符 *

13、A 下面四个选项中,均是合法整型常量的选项是: A)160 B)一0xcdf C)一01 D)一0x48a 一0xffff 01a 986, 012 2e5 011 0xe 0668 0x *

14、D 下面四个选项中,均是不合法的整型常量的选项是: A)一一0f1 B)一0Xcdf C)一018 D)一0x48eg 一0xffff 017 999 一068 0011 12,456 5e2 03f *

15、B 下面四个选项中,均是不合法的浮点数的选项是 A)160.B)123 C)一.18 D)一e3 0.12 2e4.2 123e4.234 e3.e5 0.0 1e3 *

16、B 下面四个选项中,均是合法浮点数的选项是

A)+le+1 B)-.60 C)123e D)一e3 5e一9.4 12e-4 1.2e-.4.8e4 03e2 一8e5 +2e一1 5.e一0 *

17、A 下面四个选项中,均是合法转义字符的选项是 A)''' B)'' C)'18' D)'' '' '17' 'f' '101' 'n' '“' 'xab' 'xlf' *

18、B 下面四个选项中,均是不合法的转义字符的选项是 A)''' B)'1011' C)'11' D)'abc' '' '' 'f' '101' 'xf' 'a' '}' 'xlf' *

19、C 下面正确的字符常量是: A)”a“ B)''' C)'W' D)'' *20、D 下面四个选项中,均是不正确的八进制数或十六进制数的选项是。A)016 B)oabc C)010 D)0a12 0x8f 017-0x11 7ff 018 0x8 0x16-123 *

21、C 下面四个选项中,均是正确的八进制数或十六进制数的选项是。A)一10 B)0abc C)0010 D)0al2 0x8f 一017 一0x11-0xl23 一011 0xc 0xf1 一0x8 *

22、D 下面四个选项中、均是正确的数值常量或字符常量的选项是: A)0.0 B)”a“ C)'3' D)十001 0f 3.9E-2.5 011 0xabcd 8.9e lel 0xFFOO 2e2 '&' '''' 0a 50.*

23、A 下面不正确的字符串常量是。

A)'abc' B)”12'12“ C)”0“ D)”“

*

24、C 若有代数式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 *

25、A 已知各变量的类型说明如下: int k,a,b;unsigned long w= 5;double x=1.42;则以下不符合C语言语法的表达式是: A)x%(一3)B)w+=-2 C)k=(a=2,b=3,a十b)D)a十= a一=(b=4)*(a=3)*

26、A 已知各变量的类型说明如下: 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)a=a*3=2 C)x%(一3)D)y=f1oat(i)*

27、D 以下不正确的叙述是

A)在C程序中,逗号运算符的优先级最低 B)在C程序中,APH和aph是两个不同的变量

C)若a和b类型相同,在执行了赋值表达式a=b后b中的值将放人a中,而b中的值不变。D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值。*

28、D 以下正确的叙述是: A)在C程序中,每行中只能写一条语句

B)若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数//存进去后就变成float型了 C)在C程序中,无论是整数还是实数,都能被准确无误地表示 D)在C程序中,%是只能用于整数运算的运算符 *

29、B 以下符合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 *30、A 已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'十'6'一'3';后,c2中的值为 A)D B)68 C)不确定的值 D)C *

31、D 在C语言中,要求运算数必须是整型的运算符是。A)/ B)++ c)!= D)% *

32、B 7 8 8 若以下变量均是整型,且num=sum=7;则执行表达式sum=num++,sum++,++num后sum的值为 A)7 B 8 C)9 D)10 *

33、D 在C语言中,int、char和short种类型数据在内存中所占用的字节数 A)由用户自己定义 B)均为2个字节

C)是任意的 D)由所用机器的机器字长决定 *

34、A 若有说明语句:char c='72'则变量c A)包含1个字符 B)包含2个字符

C)包含3个字符 D)说明不合法,c的值不确定

*

35、A 7 7.2 1 0 若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是 A)2·500000 B)2.7500OO C)3.500000 D)0.000000。*

36、B sizeof(float)是: A)一个双精度型表达式 B)一个整型表达式 C)一种函数调用 D)一个不合法的表达式 *

37、C 设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为 A)int B)float C)double D)不确定 *

38、A 下面四个选项中,均是非法常量的选项是。

A)'as' B)'' c)-0xl8 D)0xabc-0fff '1' 01177 '' 'xa' 12, 56 0xf”a“ *

39、D 在C语言中, char型数据在内存中的存储形式是: A)补码 B)反码 C)原码 D)ASCII码 *40、B 1.256998 设变量n为f1oat类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五人运算的表达式是一一一。A)n=(n*100+0.5)/100.0 B)m=n*100+0.5 ,n= m/100.0 C)n=n*100+0.5/100.0 D)n=(n/100+0.5)*100.0 *

41、C 4 8 表达式18/4*sqrt(4.0)/8值的数据类型为:// sqrt函数返回值为double型 A)int B)float C)double D)不确定 *

42、C 设C语言中,一个int型数据在内存中占2个字节,则unsigned int型数据的取值范围为: A)0~255 B)0~32767 C)0~65535 D)0~2147483647 *

43、D 设有说明: char w;int x;f1oat y;double z;则表达式w* x+z一y值的数据类型为: A)float B)char C)int D)double *

44、D 若有以下定义,则能使值为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)*

45、C 设以下变量均为int类型,则值不等于7的表达式是 A)(x= y= 6, x+y,x+1)B)(x= y= 6,x+y,y+1)C)(x= 6,x+1,y= 6,x+y)D)(y=6,y+l,x = y,x+1)*

46、D putchar函数可以向终端输出一个: A)整型变量表达式值 B)实型变量值 C)字符串

D)字符或字符型变量值 *

47、B printf函数中用到格式符%5s ,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式 A)从左起输出该字串,右补空格 B)按原字符长从左向右全部输出 C)右对齐输出该字串,左补空格 D)输出错误信息 *

48、C printf函数中用到格式符%5s ,其中数字5表示输出的字符串占用5列。如果字符串长度小于5,则输出按方式。A)从左起输出该字串,右补空格 B)按原字符长从左向右全部输出 C)右对齐输出该字串,左补空格 D)输出错误信息 *

49、D 已有定义 int a=-2;和输出语句:printf(”%8lx“,a);以下正确的叙述是: A)整型变量的输出格式符只有%d一种

B)%x 是格式符的一种,它可以适用于任何一种类型的数据

C)%x 是格式符的一种,其变量的值按十六进制输出,但%8lx 是错误的 D)%8lx 不是错误的格式符,其中数字8规定了输出字段的宽度 *50、D 若x ,y均定义为int型,z定义为double型,以下不合法的scanf函数调用语句是: 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);*

51、A 已有如下定义和输入语句 ,若要求a1,a2,c1,c2值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是 int a1,a2;char c1,c2;scanf(”%d%c%d%c“,&a1,&c1,&a2,&c2);A)10A 20B< CR> B)10 A 20 B C)10A20 D)10A20 B。*

52、B 已有定义int x;f1oat y;且执行scanf(”%3d%f“,&x,&y);语句,若从第一列开始输入数据12345 678(回车),则x 的值为 A)12345 B)123 C)45 D)345 *

53、B 已有定义int x;f1oat y;且执行scanf(”%3d%f“,&x,&y);语句,若从第一列开始输入数据12345 678(回车),则y 的值为: A)无定值 B)45.0000 C)678.000000 D)123.00000 *

54、D 已有如下定义和输入语句,若要求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 *

55、D 已有程序段和输入数据的形式如下,程序中输入语句的正确形式应当为 main(){int a;float f;printf(”nInput number:“);输入语句

printf(”nf=%f,a= %dn ,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);*

56、B 根据定义和数据的输入方式,输入语句的正确形式为: 已有定义: float fl,f2;数据的输入方式:4.52 3.5 A)scanf(“%f,%f”,&f1,&f2);B)scanf(“%f%f”,&f1,&f2);C)scanf(“%3.2f%2.1f”,&f1,&f);D)scanf(“%3.2f%2.1f”,&f1,&f2);*

57、D 阅读以下程序,当输入数据的形式为25,13,10正确的输出结果为: main(){int x,y,z scanf(“%d%d%d”,&x,&y,&z);printf(“x+y+z=%dn ,x+y+z)。} A)x +y+z=48 B)x +y+z=35 C)x +z=35 D)不确定值 *

58、B 阅读 下程序,若运行结果为如下形式 ,输入输出语句的正确内容是: main(){int x;float y;printf(”enter x,y :“)输入语句 输出语句 } 输入形式 enter x,y: 2 3.4 输出形式 x+y=5.40 A)scanf(”%d,%f“,&x,&y);printf(”nx+y= %4.2f“,x+y);B)scanf(”%d%f“,&x,&y);printf(”nx+y=%4.2f“,x+y);C)scanf(”%d%f“,&x,&y);printf(”nx+y=%6.lf“,x+y);D)scanf(”%d%3.1f“,&x,&y);printf(”nx十y=%4.2f“,x+y);*

59、D 以下说法正确的是: A)输入项可以为一实型常量,如scanf(”%f“,3.5);B)只有格式控制,没有输入项,也能进行正确输入,如scanf(”a=%d,b=%d“);C)当输入一个实型数据时,格式控制部分应规定小数点后的位数, 如scanf(”%4.2f“,&f);D)当输入数据时,必须指明变量的地址,如scanf(”%f“,&f);*60、A 根据下面的程序及数据的输入方式和输出形式,程序中输入语句的正确形式应该为: main(){char ch1 ,ch2 ,ch3;输入语句

printf(”%c%c%c“,ch1,ch2,ch3);} 输入形式: A B C 输出形式: A B A)scanf(”%c%c%c“,&ch1,&ch2,&ch3);B)scanf(”%c,%c,%c“, &ch1,&ch2, &ch3);C)scanf(”%c %c %c“,&ch1,&ch2,&ch3);D)scanf(”%c%c“,&ch1,&ch2,&ch3);*61、D 有输入语句: scanf(”a= %d,b= %d,c=%d“,&a,&b,&c);为使变量a的值为1,b为3,c为2,从键盘输入数据的正确形式应当是 A)132(回车)B)1,3,2(回车)C)a=1b=3c=2(回车)D)a=1,b =3,c =2(回车)*62、A 以下能正确地定义整型变量a,b和c 并为其赋初值5的语句是 A)int a=b= c= 5;B)int a,b, c= 5;C)a= 5,b=5,c=5;D)a= b= c=5;*63、A 已知ch是字符型变量,下面不正确的赋值语句是

A)ch='a+b';B)ch='';C)ch='7'+'9';D)ch=5+9;*64、B 已知ch是字符型变量,下面正确的赋值语句是

A)ch= '123';B)ch= 'xff';C)ch= '8';D)ch=”“;*65、B 若有以下定义,则正确的赋值语句是: int a,b;float x;A)a=1,b=2, B)b++;C)a= b= 5 D)b= int(x);*66、B 设x、y均为f1oat型变量,则以下不合法的赋值语句是 A)++x;B)y=(x%2)/10;C)x*=y+8;D)x=y=0;*67、A x,y,z均为int型变量,则执行语句x=(y=(z=10)+5)一5;后,x、y 和之的值是: A)x=10 B)x=10 C)x=10 D)x=10 y=15 y=10 y=10 y=5 z=10 z=10 z=15 z=10 *68、D 逻辑运算符两侧运算对象的数据类型一一一。A)只能是0或1 B)只能是0或非0正数 C)只能是整型或字符型数据 D)可以是任何类型的数据 *69、C 下关于运算符优先顺序的描述中正确的是一一一。

A)关系运算符< 算术运算符< 赋值运算符< 逻辑与运算符 B)逻辑 运算符< 关系运算符< 算术运算符< 赋值运算符 C)赋值运算符< 逻辑与运算符< 关系运算符< 算术运算符 D)算术运算符< 关系运算符< 赋值运算符< 逻辑与运算符 *70、B 下列运算符中优先级最高的是一一一。A)< B)十 C)&& D)!= *71、C 能正确表示”当x 的取值在[1,10]和[200,210]范围内为真,否则为假“的表达式是一一一。A)(x>=1)&&(x<=10)&&(x> = 200)&&(x<=210)B)(x>=1)||(x<=10)||(x>=200)||(x<=210)C)(x>=1)&&(x<=10)||(x>= 200)&&(x<=210)D)(x > =1)||(x< =10)&&(x> = 200)||(x<=210)*72、C 表示图中坐标轴上阴影部分的正确表达式是: /////||//////| /////||//////|-----------------------------> 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)*73、C 判断char型变量ch是否为大写字母的正确表达式是一一一。A)' A' <=ch<='z' B)(ch> = 'A')&(ch<=' z')C)(ch>=' A')&&(ch<='z')D)(' A' < = ch)AND('z'> = ch)*74、D 设x,y 和z是int型变量,且x = 3,y= 4,z= 5,则下面表达式中值为0的是 A)'y'&&'y' B)x < =y C)x||y+z&&y-z D)!(x = y && ch<'B'&&!Y)的值是 A)0 B)语法错 C)1 D)”假“ *76、C 若希望当A的值为奇数时,表达式的值为”真“,A的值为偶数 表达式的值 为”假“。则以下不能满足要求的表达式是: A)A%2= =1 B)!(A%2 = =0)C)!(A%2)D)A%2 *77、B 设有 int a = 1,b=2,c =3, d =4, m=2, n=2;执行(m= a>b)&&(n=c>d)后n的值为: A)1 B)2 C)3 D)4 *78、D 判断char型变量c1是否为小写字母 正确表达式为: A)' a' <=cl<=' z' B)(cl> = a)&&(cl<=z)C)(' a' >=cl)||(' z' < = cl)D)(c1>='a')&&(cl<='z')*79、B 以下程序的运行结果是: #i nclude ”stdio.h“ main(), {int a,b,d= 241;a=d/100 % 9 b=(一1)&&(一1);printf(”%d,%d“,a ,b);} A)6,1 B)2,1 C)6,0 D)2,0 *80、C 执行以下语句后a的值为: int a,b,c;a= b= c= 1;++a||++b&&++c A)错误 B)0 C)2 D)1 *81、A 执行以下语句后b 的值为: int a=5,b=6,w=1,x=2,y=3,z=4;(a=w>x)&&(b=y>z);A)6 B)0 C)1 D)4 *82、C 以下不正确的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(X0)printf(”%f“,x)else printf(”%f“,--x);B)if(x>0){x=x+y;printf(”%f“,x);} else printf(”f“,-x);C)if(x>0){x=x+y;prinrf(”%f“,x);};else printf(”%f“,-x);D)if(x > 0){ x = x +y;printf(”%f“,x)} else printf(”%f“,-x);*85、D 请阅读以下程序: main(){int a=5,b=0,c=0;if(a=b+c)printf(”***n “);e1se printf(”$$$n“);以上程序 : A 有语法错不能通过编译 B可以通过编译但不能通过连接 C 输出*** D 输出$$$ *86、C 以下程序的运行结果是 : main(){int m=5;if(m++> 5)printf(” %dn“,m);e1se printf(”%dn“,m-= 30;if(c>'z' && c<='z'+ 2)【2】;} printf(” %c“,c)} 【2】A)c='B' B)c='A' C)c-=26 D)c=c+26 *108、B 下面程序的功能是在输入的一批正整数中求出最大者,输入0结束循环,请选择填空。

#include main(){int a,max= 0;scanf(”%d“,&a)while(【1】){if(max

#i nclude main(){ int num= 0;while(num<= 2){num++ printf(”%dn“, num);} } A)1 B)1 C)1 D)1 2 2 2 3 3 4 *

110、C 以下程序段 x=-1;do {x=x*x;} while(!x);A)是死循环 B)循环执行二次 C)循环执行一次 D)有语法错误 *111、C 以下描述中正确的是: A)由于do一while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句 B)do一while循环由do开始,用while结束,在while(表达式)后面不能写分号 C)在do一while循环体中,一定要有能使while后表达式值变为零(”假“)的操作 D)do一while循环中,根据情况可以省略while *112、B 若有如下语句 int x=3;do { printf(” %dn“,x-=2);} while(!(--x));则上面程序段

A)输出的是 1 B)输出的是1和-2 C)输出的是3和0 D)是死循环 *113 下面程序的功能是计算正整数2345的各位数字平方和,请选择填空。

#i nclude main(){int n,sum=0;n=2345 do{ sum=sum+(n%10)*n%10};n=【2】;}while(n);printf(”sum=%d“,sum);} 【2】 A)n/1000 B)n/100 C)n/10 D)n%10 *114、B 下面程序是从键盘输入学号,然后输出学号中百位数字是3的学号,输入0时结束循环。请选择填空。# include main(){1ong int num;scanf(”%ld“,&num);do { if(【1】)printf(”%ld“,num);scanf(”%ld“,&num);}while(!num==0);} 【1】 A)num B)num>0==0 C)!num==0 D)!num!= 0 *115、B 下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除。请选择填空。

#i nclude 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);} 【1】A)k/11 B)k%11 C)k/11==0 D)k/11== 0 *116、D 下面程序的运行结果是: #indude main(){int y=10;do{y--;} while(--y);printf(”%dn“,y--);} A)一1 B)1 C)8 D)0 *117、D 若运行以下程序时,从键盘输入ADescriptor(CR)表示回车),则下面程序的运行结果是: #include main(){ char c;int v0=0.v1=0,v2=0;do{ switch(c=getchar()){case 'a':case 'A' : case 'e':case ' E' : case 'i':case 'I' : case 'o':Case 'O' : case 'u':case 'U' :vl+=1;default:v0+=1;v2+=1;};while(c!='n');printf(”v0=%d,v1=%d,v2=%dn“,v0,v1,v2);} A}v0=7,v1=4,v2=7 B)v0=8,v 1=4,v2=8 C)v0= 11,v1=4,v2=11 D)v0=12,vl=4,v2=12 *118、B 下面程序的运行结果是: #i nclude main(){int a==1,b=10;do {b-=a;a++;}while(b--<0);printf(”a=%d,b=%dn“,a,b);} ' A)a=3,b=11 B)a=2,b=8 C)a=1, b=一1 D)a=4,b=9 *119、D 下面有关for循环的正确描述是: A)for循环只能用于循环次数已经确定的情况 B)for循环是先执行循环体语句,后判断表达式 C)在for循环中,不能用break语句跳出循环体

D)for循环的循环体语句中, 可以包含多条语句,但必须用花括号括起来 *120、B 对for(表达式1;;表达式3)可理解为: A)for(表达式1;0;表达式3)B)for(表达式1;1;表达式3)C)for(表达式1;表达式1;表达式3)D)for(表达式1;表达式3;表达式3)*121、B 若i为整型变量,则以下循环执行次数是: for(i=2;i==0;)printf(”%d“,i--);A)无限次 B)0次 C)1 次 D)2次 *122、C 以下for循环的执行次数是: for(x=0,y一0;(y=123)&&(x<4);x++);A)是无限循环 B)循环次数不定 C)执行4次 D)执行3次 *123、A 以下不是无限循环的语句为: A)for(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;*124、C 下面程序段的运行结果是: for(y= 1;y<10;)y=((x=3* y,x+1),x-1);printf(”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 *125、D 下面程序段的运行结果是

for(x=3;x<6;x++)printf((x %2)?(”**%d“):(” ##%dn“),x);A)**3 B)##3 C)##3 D)**3##4 ##4 **4 **4##5 **5 **5 ##5 *126、C 下列程序段不是死循环的是

A)int i=100;C)int k=0;whiLe(1)do{++k;} while(k> =0);{i=i%100+1;if(i>100)break;D} int s=36;} while(s);--s B)for(;;);*127、C 执行语句for(i=1;i++<4;);后变量i的值是 A)3 B)4 C)5 D)不定 *128、D 下面程序的功能是计算:至50中是7的倍数的数值之和,请选择填空。#i nclude · main(){int i,sum= 0;for(i=1;i<=50;i++)if([1])sum+=i;printf(”%d“,sum);} A)(int)(i/7)==i/7 B)(int)i/7==i/7 C)i%7= 0 D)i%7==0 *129、B 下面程序的功能是计算 1至10之间的奇数之和及偶数之和。请选择填空;# include main(){int a,b,c,i;a=c=0;for(i=0;i<=10;i+=2){ a+=i;[1];c+=b;} printf(”偶数之和=%dn“,a);printf(”奇数之和=%dn“,c-11), } [1] A)b=i--B)b=i+1 C)b=i++ D)b=i-1 *130、B 下面程序的运行结果是: #i nclude main(){int i;for(i=1;i<=5;i++)switch(i%5){case 0:printf(”* “);break;case 1 :printf(”#“);break;default :printf(”n“);case 2 :printf(”&“);} A}#&&&* B} #& C} # D}#& & & & & * *131、D 下面程序的运行结果是: #i nclude main(){ int x,i;for(j-1;i<=100;i++){x=i;if(++x%2==0)if(++x%3==0)if(++x%7==0)printf(”%d“,x);} } A)39 81 B)42 84 C)26 68 D)28 70 *132、C 下面程序段的功能是计算1000!的末尾含有多少个零。请选择填空。(提示:只要算出1000!中含有因数5的个数即可 for(k=0,i=5;i<=1000;i+=5)

while(【1】){k++;m=m/5;} 【1】A)m%5==0 B)m=m%5==0 C)m%5==0 D)m%5!=0 *133、D 下面程序的运行结果是: #i nclude main(){int i,b,k=0;for(i=1;i< =5;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 *134、B 以下正确的描述是。

A)continue语句的作用是结束整个循环的执行

B)只能在循环体内和switch语句体内使用break语句 C)在循环体内使用break语句或continue语句的作用相同 D)从多层循环嵌套中退出时, 只能使用goto语句

*135、D 下面程序段: for(t=1;t<=100;t++){scanf(”%d“,&x);if(x<0)continue;printf(”%3d“,t);} A)当x<0时整个循环结束 B)x>=0时什么也不输出

C)printf函数永远也不执行 D)最多允许输出100个非负整数 *136、C 下面程序段: x=3;do {y=x--;if(!y){ printf(”x“);continue;} printf(”#“);} while(1<=x<=2);A)将输出## B)将输出##* C)是死循环 D)含有不合法的控制表达式 *137、C 以下描述正确的是

A)goto语句只能用于退出多层循环 B)switch语句中不能出现continue语句 C)只能用continue语句来终止本次循环 D)在循环中break语句不能独立出现 *138、C 与下面程序段等价的是: 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;} *139、B 下面程序的运行结果是: #i nclude { 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;breab;default:k=k/3;} k++;} while(c<'G')printf(”k=%d“,k);} A)k=3 B)k=4 C)k=2 D)k=0 *140、B 若运行以下程序时,从键盘输入3.6,2.4,(表示回车),则下面程序的运行结果是: #indude # include main(){float x,y,z;scanf(”%f%f“,&x,&y);z=x/y;while(1){if(fabs(z)>1.0){x=y;y=z;z=x/y;} else break;} printf(”%f“,y);} A)1.5 B)1.6 C)2.0 D)2.4 *141、B 下面程序的运行结果是: #i nclude ”stdio.h“ main(){int a,b;for(a=1,b=1;a<=100;a++){if(b>=20)break;if(b%3==1){b+=3;continue;} b-=5;} printf(”%dn“,a);} A)7 B)8 C)9 D)10 *142、B 下面程序的运行结果是: #i nclude ”stdio.h“ main(){int i;for(i=1;i<=5;i++){if(i%2)printf(”*“);else continue;printf(”#“);} printf(”#“);} A)*#*#$ B)#*#*#*$ C)*#*#$ D)#*#*$ *143、A 下面程序的运行结果是: main(){int i,j,a=0;for(i=0;i<2;i++){ for(j=0;j<=4;j++){if(j%2)break;a++;} a++;} printf(”%dn“,a);} A)4 B)5 C)6 D)7 *144、C 在c语言中,引用数组元素时,其数组下标的数据类型允许是__.A)整型常量 B)整型表达式

C)整型常量或整型表达式 D)任何类型的表达式 *145、D 以下对一维整型数组a的正确说明是__。

A)int a(10);B)int n= 10,a[n];c)int n;D)#define SIZE 10;scanf(”%“,&J1);int a[SIZE];int a[n];*146、D 若有说明:int a[10];则对a数组元素的正确引用是__。

A)a[10] B)a[3.5] C)a[5] D)a[10-10] *147、A 在C语言中,一维数组的定义方式为:,类型说说明符 数组名__。A)[常量表达式] B)[整形表达式] c)[ 整型常量]或[整型表达式] D)[整型常量] *148、C 以下能对一维数组a进行正确初始化的语句是__。A)int a[10]=(0,0,0,0,0)B)int a[10]={} C)int a[]={0};D)int a[10]={10*1};*149、C 以下对二维数组a的正确说明是__。

A)int a[3][];B)floatf a(3,4);C)double a[1][4];D)float a(3)(4);*150、C 若有说明:int a[3][4];则对a数组元素的正确引用是__。

A)a[2][4] B)a[1,3] C)a[1+1][0] D)a(2)(1);*151、D 若有说明:int a[3][4];则对a数组元素的非法引用是__。

A)a[0][2*1] B)a[1][3] C)a[4-2][0] D)a[0][4] *152、B 以下能对二维数组a进行正确初始化的语句是__。A)int a[2][]={{1,0,1},{5,2,3}};B)int a[][3]={{1,2,3},{4,5,6}};C] int a [2][4]={{1,2,3},{4,5},{6}};D] int a[][3={{1,0,1},{},{1,1}};*153、C 以下不能对二维数组a进行正确初始化的语句是__。A)int a[2][3]={0};B)int a[][3]={{1,2,3},{4,5,6}};C] int a[2][4]={{1,2,3},{4,5}{6}};D] int a[][3]={{1,0,1},{},{1,1}};*154、D 若有说明: int a[3]「4」={0};则下面正确的叙述是 A」只有元素a[0][0]可得到初值0 B」此说明语句不正确:。

C」数组a中各元素都可得到初值,但其值不一定为0。D」数组a中每个元素均可得到初值0 *155、D 若有说明:int a[]「4」={0,0};则下面不正确的叙述是__。A)数组a的每个元素都可得到初值0 B)二维数组a的第一维大小为1 C)因为二维数组0中第二维大小的值除以初值个数的商为1,故数组a行

数为1 D)只有元素a[0]「0」和a[0]「1」可得初值0,其余元素均得不到初值0 *156、B 若有说明:int a[3]「4」;则数组a各元素 A」可在程序的运行阶段得到初值0 B」可在程序的编译阶段得到初值0 C」不能得到确定的初值

D」可在程序的编译或运行阶段得初值0 *157、C 以下各组选项中,均能正确定义二维实型数组a的选项是

A)float a[3][4];B)float a(3,4);float a[][4];float a[3][4];float a[3][]={{1},{0}};float a[][]={{0},{0}};C)float a[3][4];D)float a[3][4];static float a[][4]={{0},{0}};float a[3][];auto float a[][4]={{0},{0},{0}};float a[][4] *158、A 下面程序(每行程序前面的数字表示行号)1 main()2 { 3 int a[3]={3*0};4 int i;5 for(i=0;i<3;i++)scanf(”%d“,&a[i]);6 for(i=1;i++)a[0]=a[0]+a[i] 7 printf(”%dn“,a[0]);A}没有错误 B)第3行有错误

C)第5行有错误 D)第7行没有错误 *159、C 下面程序一一一(每行程序前面的数字表示行号)。1 main()2 { 3 float a[10]={0.0};4 int i 5 for(i=0;i<3;i++)scanf(”%d“,&a[1]);6 for(i=0;i<10;i++)a[0]=a[0]+a[i];7 printf(”%dn“,a[0]);8 } A)没有错误 B)第3行有错误 C)第5行有错误 D)第7行有错误 *160、D 下面程序有错的行是 1 main()2 { 3 int a[3]={1};4 int i;5 scanf(”%d“,&a);6 for(i=1;i<3;i++)a[0]=a[0]+a[i];7 printf(”a[0]=%dn“,a[0]);8 } A)3 B)6 C)7 D)5 *161、D 下面程序(每行程序前面的数字表示行号)1 main()2 { 3 int a[3]={0};4 int i;5 for(i=0;i<3;i++)scanf(”%d",&a[i]);

下载C语言-基本选择题及答案 (自动保存的)(含五篇)word格式文档
下载C语言-基本选择题及答案 (自动保存的)(含五篇).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    C语言选择题

    ### ~~~1 下列叙述中正确的是( )。 程序设计就是编制程序 程序的测试必须由程序员自己去完成程序经调试改错后还应进行再测试程序经调试改错后不必进行再测试~C ~~~1 以下......

    C语言选择题

    ## ~~~1 下列叙述中正确的是( )。 程序设计就是编制程序 程序的测试必须由程序员自己去完成 程序经调试改错后还应进行再测试 程序经调试改错后不必进行再测试 ~C ~~~1 以下......

    C语言选择题[精选合集]

    1.结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto语句. 2.对象有如下一些基本特点:标识唯一性、分类性、多态性、封装性、模块独立性好. ⒊数据库管理系......

    选择题-答案

    第一章 客户关系管理导论 一、单选题 1、属于快速反映供应链阶段的特点是(D) A 向客户推销 B 低经济批量C 缩短工序D 客户定制生产 2、客户关系管理的目的是(B) A 企业利润最......

    大自然的语言选择题[范文模版]

    一、(1-3段) 6.第二段中“大自然语言”指什么? A.劳动人民心中理解的话。B.布谷鸟唱歌。 C.古代流传下来的许多农谚。 D.花香鸟语,草长莺飞等自然现象。 7.对第③段文字运用的说......

    C语言文件选择题[精选合集]

    C语言文件选择题(答案在最后) 1、标准库函数fgets(s,n,f)的功能是 A) 从文件f中读取长度为n的字符串存入指针s所指的内存 B) 从文件f中读取长度不超过n-1的字符串存入指针s所......

    大学语文选择题答案

    一、单项选择题 1.《战国策》的编定者是( B.刘向)2.冯谖这一人物的形象特征是C.深谋远虑 3.“孟尝君顾谓冯谖:‘先生所为文市义者,乃今日见之’”中,“顾”字的意思是A.回头4.成语......

    公务员法选择题及答案

    公务员法相关选择题 一、单项选择 1公务员的任用,坚持 的原则. A.勤能并重 B 管理与监督并重 C.为才是用 D 任人唯贤,德才兼备 答D 2根据公务员法的规定, 是作为评价公务员......