一、单项选择题(25道小题,共50分)
1、以下说法中正确的是(C)(2分)
A、C语言程序总是从第一个的函数开始执行
B、在C语言程序中,要调用的函数必须在main()函数中定义
C、C语言程序总是从main()函数开始执行
D、C语言程序中的main()函数必须放在程序的开始部分
2、一个算法应该具有“确定性”等五个特性,下面对另外4个特性的描述中错误的是(B)(2分)
A、有零个或多个输入
B、有零个或多个输出
C、有穷性
D、可行性
3、以下选项中,不合法常量的是(B)(2分)
A、1.234e04
B、1.234e0.4
C、1.234e+4
D、1.234e0
4、C语言中最简单的数据类型包括(B)(2分)
A、整型、实型、逻辑型
B、整型、实型、字符型
C、整型、字符型、逻辑型
D、整型、实型、逻辑型、字符型
5、能正确表示逻辑关系:“10≥=a≥=0”的C语言表达式是(D)(2分)
A、10>=a>=0
B、a>=0and a<=10
C、a>=0||a<=10
D、a>=0&&a<=10
6、设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是(D)(2分)
A、6.500000
B、6
C、5.500000
D、6.000000
7、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是(B)(2分)
A、INPUT x、y、z;
B、scanf("%d%d%d",&x,&y,&z);
C、scanf("%d%d%d",x,y,z);
D、read("%d%d%d",&x,&y,&z);
8、设x和y均为int型变量,则以下语句:x+=y;y=x-y;x-=y;的功能是(D)(2分)
A、把x和y按从大到小排列
B、把x和y按从小到大排列
C、无确定结果
D、交换x和y中的值
9、若有以下程序段:int c1=1,c2=2,c3;c3=1.0/c2*c1;则执行后,c3中的值是(A)(2分)
A、0B、0.5
C、1
D、2
10、设char ch='A';则ch=(ch>='A'&&ch<='Z')?(ch+32):ch的值是(B)。(2分)
A、A
B、a
C、Z
D、z
11、执行程序段int a=-1,b=4,k;k=(++a<0)&&!(b--<=0);printf(“%d%d%d\n”,k,a,b);后的输出结果是(D)。
(2分)
A、104
B、103
C、003
D、004
12、设int x=1,y=1;表达式(!x||y--)的值是(B)。(2分)
A、0B、1C、2D、-1
13、程序段int x=3;do{printf(“%d”,x-=2);}while(!(--x));的输出结果是
(C)。(2分)
A、1
B、30
C、1-2
D、死循环
14、程序段for(i=2;i==0;)printf(“%d”,i--);的循环次数是(B)。(2分)
A、无限次
B、0次
C、1次
D、2次
15、语句int k=1;while(k++<10);执行后,变量k的值是(B)。(2分)
A、10
B、11
C、9
D、无限循环,值不定
16、程序int i,sum;for(i=1;i<=3;sum++)sum+=i;printf(“%d\n”,sum);的执行结果是
(C)。(2分)
A、6
B、3
C、不确定
D、0
17、以下对二维整形数组a的正确说明是(C)。(2分)
A、int a[3][];
B、float a(3,4);
C、double a[1][4];
D、float a(3)(4)
18、若已定义char s[10];在下面表达式中不能表示s[1]的地址的是(B)。(2分)
A、s+1
B、s++
C、&s[0]+1
D、&s[1]
19、对两个字符数组a和b进行初始化char a[]="ABCDEF";char b[]={'A','B','C','D','E','F'};则以下叙述正确的是(D)
。(2分)
A、a与b数组完全相同
B、a与b长度相同
C、a和b中都存放字符串
D、a数组比b数组长度长
20、有说明:char*language[]={"FORTRAN","BASIC","PASCAL","JAV A","C"};则表达式*language[1]>*language[2]比较的是(A)
A、字符B和字符P
B、字符串FORTRAN和字符串BASIC
C、字符F和字符B
D、字符串BASIC和字符串PASCAL
21、C语言程序由函数组成,它的(B)。(2分)
A、主函数必须在其它函数之前,函数内可以嵌套定义函数
B、主函数可以在其它函数之后,函数内不可以嵌套定义函数
C、主函数必须在其它函数之前,函数内不可以嵌套定义函数
D、主函数必须在其它函数之后,函数内可以嵌套定义函数
22、在C语言中,若需一变量只在本文件中所有函数使用,则该变量的存储类别是(D)。(2分)
A、extern
B、register
C、auto
D、static
23、已知:int a[]={1,2,3,4,5,6},*p=a;则值为3的表达式是(A)。.(2分)
A、p+=2,*(p++)
B、p+=2,*++p
C、p+=3,*p++
D、p+=2,++*p
24、设有说明语句“struct stu{int a;float b;}stutype;”,则叙述不正确的是(D)(2分)
A、struct是结构体类型的关键字。
B、struct stu是用户定义的结构体类型。
C、stutype是用户定义的结构体变量名。
D、a和b都是结构体变量。
25、下列关于文件指针的描述中,错误的是(D)(2分)
A、文件指针是由文件类型FILE定义的。
B、文件指针是指向内存某个单元的地址值。
C、文件指针是用来对文件操作的标识。
D、文件指针在一个程序中只能有一个。
26、以下叙述中正确的是(B)(2分)
A、C语言的源程序不必通过编译就可以直接运行
B、C语言中的每条可执行语句最终都将被转换成二进制的机器指令
C、C源程序经编译形成的二进制代码可以直接运行
D、C语言中的函数不可以单独进行编译
27、以下叙述中正确的是(C)(2分)
A、用C语言实现的算法必须要有输入和输出操作
B、用C语言实现的算法可以没有输出但必须要有输入
C、用C程序实现的算法可以没有输入但必须要有输出
D、用C程序实现的算法可以既没有输入也没有输出
28、C语言中,下列字符常量合法的是(A)(2分)
A、'\t'
B、"A"
C、65
D、A
29、下列关于赋值运算符的表述中,错误的是(B)(2分)
A、赋值运算符优先级高于逗号运算符
B、赋值运算符的结合性是从左至右
C、赋值运算符是双目运算符
D、赋值运算符可在表达式中连用
30、设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是(D)(2分)
A、6.500000
B、6
C、5.500000
D、6.000000
31、以下不是关键字的是(C)(2分)
A、continue
B、char
C、If
D、default
32、设x,y为浮点型变量,合法赋值语句是(A)(2分)
A、x=8+y;
B、(float)3;
C、y=(x%2)/10;
D、*x=10;
33、已定义ch为字符型变量,以下赋值语句中错误的是(B)(2分)
A、ch='\';
B、ch=62+3;
C、ch='';
D、ch='\xaa';
34、已知i、j、k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为1、j的值为
2、k的值为3,以下选项中正确的输入语句是(C)(2分)
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);
35、为了避免在嵌套的条件语句if――else中产生二义性,c语言规定:else子句总是与
(B)配对。(2分)
A、缩排位置相同的if
B、其之前最近的if
C、其之后最近的if
D、同一行上的if
36、能正确表示“当x的取值在[1,100]和[200,300]范围内为真,否则为假”的表达式是(C)。(2分)
A、(x>=1)&&(x<=100)&&(x>=200)&&(x<=300)
B、(x>=1)||(x<=100)||(x>=200)||(x<=300)
C、(x>=1)&&(x<=100)||(x>=200)&&(x<=300)
D、(x>=1)||(x<=100)&&(x>=200)||(x<=300)
37、若w,x,y,z,m均为int型变量,则执行语句w=1;x=2;y=3;z=4; m=(w A、1 B、2 C、3 D、4 38、c语言中(D)。(2分) A、不能使用do-while语句构成的循环 B、do-while语句构成的循环必须用break语句才能退出 C、do—whiLe语句构成的循环,当while语句中的表达式值为非零时结束循环 D、do—while语句构成的循环,当while语句中的表达式值为零时结束循环 39、设j为int型变量,则for(j=10;j>3;j--){if(j%3)j--;--j;--j;printf(“%d”,j);}的执行结果是(A)。(2分 A、74 B、47 C、56 D、13 40、以下描述正确的是(C)。(2分) A、由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。 B、do-while循环由do开始,用while结束,在while(表达式)后面不能写分号。 C、在do-while循环体中,一定要有能使while后面表达式的值变成零(“假”)的操作。 D、do-while循环中,根据情况可以省略while 41、以下正确的定义语句是(D)。(2分) A、int a[1][4]={1,2,3,4,5}; B、float x[3][]={{1},{2},{3}}; C、long b[2][3]={{1},{1,2},{1,2,3}}; D、double y[][3]={0}; 42、下面描述正确的是(D)。(2分) A、字符串所包含的字符个数相同时,才能比较字符串 B、字符个数多的字符串比字符个数少的字符串大 C、字符串"stop"与"stop"相等 D、字符串“That”小于字符串"The" 43、在C语言中,引用数组元素时,其数组下标的数据类型允许是(C)。(2分) A、整型常量 B、整型表达式 C、整型常量或整型表达式 D、任何类型的表达式 44、若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是(B)。(2分) A、2 B、3 C、4 D、无确定值 45、已知int f(int);和int g(int);是函数f和g的原形。下列语句中,将函数f作为函数参数的有(A)。(2分) A、f(3); B、p=f(3); C、g(f(3)); D、f(g(3)); 46、函数调用结束后,形式参数(C)。(2分) A、继续占用相同大小的内存 B、占用的内存减小 C、释放内存 D、不确定 47、已知:int a,*p=&a;则下列函数调用中错误的是(D)。(2分) Ascanf("%d",&a B、scanf("%d",p);C、printf("%d",a);D、printf("%d",p); 48、枚举类型首元素默认值和两个相邻元素之间默认的差值分别是(C)(2分) A、1,0 B、1,1 C、0,1 D、0,0 49、语句“fseek(fp,100L,2);”的功能是(B)(2分) A、将fp所指向文件的位置指针移至距文件首100个字节。 B、将fp所指向文件的位置指针移至距文件尾100个字节。 C、将fp所指向文件的位置指针移至距当前位置指针的文件首方向100个字节。 D、将fp所指向文件的位置指针移至距当前位置 指针的文件尾方向100个字节。 50、以下叙述错误的是(D)(2分) A、一个C程序总是从main函数开始执行的; B、C程序书写格式自由,一行内可以写几个语句,一个语句可以分写在多行上; C、每个语句和数据定义的最后必须有一个分号; D、C语言本身有输入输出语句。 51、若有以下类型说明语句:char w;int x;float y;double z;则表达式w*x+z-y的结果类型是(D)(2分) A、float B、char C、int D、double 52、下面不正确的字符串常量是(A)(2分) A、'abc' B、"12'12" C、"0" D、"" 53、已知各变量的类型说明如下:int k,a,b=1;unsigned long w=5;则以下不符合C语言语法的表达式是(A)(2分) A、k=b+2=w B、w+=-2 C、k=(a=2,b=3,a+b) D、a+=a-=(b=4)*(a=3) 54、执行下列语句int x=10,y=3;printf("%d\n",y=x/y);后的输出是(C)(2分) A、0B、1C、3D、不确定的值 55、若执行以下程序段:int a=0,b=0,c=0;c=(a-=a-5),(a=b,b+3);printf(“%d,%d,%d\n”,a,b, c);其输出结果是(B)(2分) A、0,0,-10 B、0,0,5 C、-10,3,-10 D、3,3,-10 56、已知i、j、k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为1、j的值为 2、k的值为3,以下选项中正确的输入语句是(C)(2分) 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); 57、以下错误的if语句是(C)。(2分) A、if(x>y)z=x; B、if(x==y)z=0; C、if(x!=y)printf("%d",x)else printf("%d",y); D、if(x 58、条件运算符的结合方向是(A)。(2分) A、自右至左; B、自左至右; C、任意; D、前后顺序; 59、对于程序段int x=-1;do{x=x*x;}while(!x);说法正确的是(C)。(2分) A、是死循环 B、循环执行两次 C、循环执行一次 D、有语法错误 60、t为int类型,进人下面的循环之前,t的值为0,则对于while(t=l){……}叙述中正确的是(B)。(2分) A、循环控制表达式的值为0 B、循环控制表达式的值为1 C、循环控制表达式不合法 D、以上说法都不对 61、执行语句x=y=0;while(x<15)y++,x+=++y;printf(“%d,%d”,y,x);的结果是(D)。(2分) A、20,7 B、6,12 C、20,8 D、8,20 62、以下对一维整形数组a进行正确初始化的语句是(C)。(2分) A、int a[10]=(0,0,0,0,0); B、int a[10]={}; C、int a[]={0}; D、int a[10]={10*1}; 63、若有说明:int a[3][4];则对a数组元素的非法引用是(D)。(2分) A、a[0][2*1] B、a[1][3] C、a[4-2][0] D、a[0][4] 64、以下能对二维整形数组a进行正确初始化的语句是(D)。(2分) A、int a[2][3]={0}; B、int a[][3]={{1,2},{0}}; C、int a[2][3]={{1,2},{3,4},{5,6}}; D、int a[][3]={1,2,3,4,5,6}; 65、程序char c[5]={‘a’,’b’,’\0’,’c’c,’\0’};printf(“%s”,c);}的运行结果是(D)。(2分) A、'a''b' B、ab C、ab c D、ab 66、一个C程序的执行是从(A)。(2分) A、本程序的main函数开始,到main函数结束 B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C、本程序的main函数开始,到本程序文件的最后一个函数结束 D、本程序文件的第一个函数开始,到本程序main函数结束 67、在定义语句int*f();中,标识符f代表的是(D)。(2分) A、一个用于指向整型数据的指针变量 B、一个用于指向一维数组的行指针 C、一个用于指向函数的指针变量 D、一个返回值为指针型的函数名 68、设p1和p2是指向同一个字符串的指针变量,e为字符变量,则以下不能正确执行的赋值语句是(B)。(2分) A、c=*p1+*p2; B、p2=c C、p1=p2 D、c=*p1*(*p2); 69、C语言结构体类型变量在程序执行期间(A)(2分) A、所有成员一直驻留在内存中。 B、只有一个成员驻留在内存中。 C、部分成员驻留在内存中。 D、没有成员驻留在内存中。 70、语句“fseek(fp,100L,1);”的功能是(C)(2分) A、将fp所指向文件的位置指针移至距文件首100个字节。 B、将fp所指向文件的位置指针移至距文件尾100个字节。 C、将fp所指向文件的位置指针移至距当前位置指针的文件首方向100个字节。 D、将fp所指向文件的位置指针移至距当前位置 指针的文件尾方向100个字节。 71、以下不是结构化程序设计方法的是(B)(2分) A、循环结构 B、模块结构 C、顺序结构 D、选择结构 72、以下选项中,不合法常量的是(B)(2分) A、1.234e04 B、1.234e0.4 C、1.234e+4 D、1.234e0 73、若变量已正确定义,以下非法的表达式是(B)(2分) A、a/=b+c B、a%(4.0) C、a=1/2*(x=y=20,x*3) D、a=b=c 74、下列语句中符合C语言语法的赋值语句是(D)(2分) 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; 75、若有以下定义和语句:char c1='b',c2='e';printf("%d,%c\n",c2-c1,c2-'a'+"A");则输出结果是(B)(2分) A、2,M B、3,E C、2,E D、输出项与对应的格式控制不一致,输出结果不确定 76、若变量已正确说明,要求用语句:scanf(“%f%c%f%c”,&a,&c1,&b,&c2);给c1赋予字符%、给c2赋予字符#、给a赋予2.0、给b赋予4.0,则正确的输入形式是(B)(2分) A、2.0% 4.0# B、2.0%4.0# C、2%4# D、2%4# 77、下述表达式中,(A)可以正确表示x≤0或x≥1的关系。(2分) A、(x>=1)||(x<=0) B、x>=1|x<=0 C、x>=1&&x<=0 D、(x>=1)&&(x<=0) 78、若a=-14,b=3,则条件表达式a A、-14 B、-13 C、3 D、4 79设:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后n的值为(B)。(2分) A、1 B、2 C、3 D、4 80、对for(表达式1;;表达式3)可以理解为(B)。(2分) A、for(表达式1;0;表达式3) B、for(表达式1;1;表达式3) C、for(表达式1;表达式1;表达式3) D、for(表达式1;表达式3;表达式3) 81、若I为整型变量,则for(I=2;I==1)printf(“%d”,I--);的循环执行次数是(B)。(2分) A、无限次 B、0次 C、1次 D、2次 82、程序int i,sum;for(i=1;i<=3;sum++)sum+=i;printf(“%d\n”,sum);的执行结果是 (C)。(2分) A、6 B、3 C、不确定 D、0 83、若有说明:int a[3][4];则对a数组元素的正确引用是(C)。(2分) A、a[2][4] B、a[1,3] C、a[1+1][0] D、a(2)(1) 84、下面是对数组a的初始化,其中不正确的是(D)。(2分) A、a[5]={"ABCD"} B、a[5]={'A','B','C','D'} C、a[5]="" D、a[5]="ABCDE" 85、判断字符串a是否大于b,应当使用(D)。(2分) A、if(a>b) B、if(strcmp(a,b)) C、if(strcmp(b,a)>0) D、if(strcmp(a,b)>0) 86、若已定义char s[2][40]={"china","English"};则在下面表达式中能表示字符‘E’的地址的是(B)。(2分) A、&s[2][1] B、s[1] C、&s[1] D、&(s[1]+1) 87、关于局部变量,下列说法正确的是(D)。(2分) A、定义该变量的程序文件中的函数都可以访问。 B、定义该变量的函数中的定义处以下的任何语句都可以访问。 C、定义该变量的复合语句的定义处以下的任何语句都可以访问。 D、局部变量可用于函数之间传递数据。 88、程序char a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;printf(“%d”,*--p);的输出结果是 (C)。(2分) A、非法 B、a[4]的地址 C、5 D、3 89、C语言结构体类型变量在程序执行期间(A)(2分) A、所有成员一直驻留在内存中。 B、只有一个成员驻留在内存中。 C、部分成员驻留在内存中。 D、没有成员驻留在内存中。 90、下列正确定义一个文件指针pm的语句是(C)(2分) A、FILE pm; B、file*pm; C、FILE*pm; D、file pm; 91、以下叙述中正确的是(B)(2分) A、C语言的源程序不必通过编译就可以直接运行 B、C语言中的每条可执行语句最终都将被转换成二进制的机器指令 C、C源程序经编译形成的二进制代码可以直接运行 D、C语言中的函数不可以单独进行编译 92、结构化程序由三种基本结构组成,由这三种基本结构组成的算法(A)(2分) A、可以完成任何复杂的任务 B、只能完成部分复杂的任务 C、只能完成符合结构化的任务 D、只能完成一些简单的任务 93、以下正确的叙述是(D)(2分) A、在C程序中,每行中只能写一条语句 B、若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数 C、在C程序中,无论是整数还是实数,都能被准确无误地表示 D、在C程序中,%是只能用于整数运算的运算符 94、以下叙述中正确的是(C)(2分) A、在C程序中,无论是整数还是实数,只要在允许的范围内都能准确无误的表示。 B、C程序由主函数组成 C、C程序由函数组成 D、C程序由函数和过程组成 95、设x、y、z和k都是int型变量,则执行表达式x=(y=4,z=16,k=32)后,x的值为(C)(2分) A、4 B、16 C、32 D、52 96、能正确表示逻辑关系:“10≥=a≥=0”的C语言表达式是(D)(2分) A、10>=a>=0 B、a>=0and a<=10 C、a>=0||a<=10 D、a>=0&&a<=10 97、执行以下程序段:int x=496;printf(“*%-6d*\n”,x);的输出是(A)(2分) A、*496* B、*496* C、*000496* D、输出格式不合法 98、执行下列语句int a;printf("%d\n",(a=3*5,a*4,a+5));后,a的值是(B)(2分) A、65 B、20 C、15 D、10 99、若有以下定义和语句:int u=010,v=0x10,w=10;printf("%d,%d,%d\n,u,v,w);则输出结果是(A)(2分) A、8,16,10 B、10,10,10 C、8,8,10 D、8,10,10 100、以下关于运算符优先顺序的描述中正确的是(C)。(2分) A、关系运算符<算术运算符<赋值运算符<逻辑与运算符 B、逻辑与运算符<关系运算符<算术运算符<赋值运算符 C、赋值运算符<逻辑与运算符<关系运算符<算术运算符 D、算术运算符<关系运算符<赋值运算符<逻辑与运算符 101、设x、y、t均为int型变量,则执行语句:x=y=3;t=++x||++y;后,y的值为(C)。(2分) A、不定值 B、4 C、3 D、1 103、程序段int x=3;do{printf(“%d”,x-=2);}while(!(--x));的输出结果是(C)。(2分) A、1 B、30 C、1-2 D、死循环 104、C语言中while和do-while循环的主要区别是(A)。(2分) A、do—while的循环体至少无条件执行一次 B、while的循环控制条件比do—while的循环控制条件严格 C、do—while允许从外部转到循环体内 D、do-while的循环体不能是复合语句 105、对于程序段int k=0;while(k=1)k++;while循环执行的次数是(A)。(2分) A、无限次 B、有语法错,不能执行 C、一次也不执行 D、执行1次 106、若I为整型变量,则for(I=2;I==1)printf(“%d”,I--);的循环执行次数是(B)。(2分) A、无限次 B、0次 C、1次 D、2次 107、以下正确的定义语句是(D)。(2分) A、int a[1][4]={1,2,3,4,5}; B、float x[3][]={{1},{2},{3}}; C、long b[2][3]={{1},{1,2},{1,2,3}}; D、double y[][3]={0}; 108、若有char a[80],b[80];则正确的是(D)。(2分) A、puts(a,b); B、printf("%s,%s",a[],b[]); C、putchar(a,b); D、puts(a);puts(b); 109、若已定义char s[10];在下面表达式中不能表示s[1]的地址的是(B)。(2分) A、s+1 B、s++ C、&s[0]+1 D、&s[1] 110、若有说明:int a[3][4];则数组a中各元素(C)。(2分) A、可在程序的运行阶段得到初值0 B、可在程序的编译阶段得到初值0 C、不能得到确定的初值 D、可在程序的编译或运行阶段得到初值0 111、函数调用语句fun((exp1,exp2),(exp3,exp4,exp5))中实参的个数是(B)。(2分)A、1B、2C、4D、5 112、有程序char s[]=”ABCD”,*P;for(p=s+1;p A、ABCD BCD CD D B、A B C D C、B C D D、BCD CD D 113、当说明一个共用体变量时系统分配给它的内存是(C)(2分) A、各成员所需内存量的总和。 B、第一个成员所需内存量。 C、成员中占内存量最大者所需的容量。 D、最后一个成员所需内存量。 114、系统的标准输入文件是指是(A)(2分) A、键盘 B、显示器 C、软盘 D、硬盘 115、下列运算符中,结合性为自左向右的是(B)(2分) A、?: B、, C、+= D、++ 116、以下选项中正确的实型常量是(B)(2分) A、0B、3.1415C、0.03x10D、.32 117、若变量c为char类型,能正确判断出c为小写字母的表达式是(D)(2分) A、'a'<=c<='z' B、(c>='a')||(c<='z') C、('a'<=c)and('z'>=c) D、(c>='a')&&(c<='z') 118、若所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是(B)(2分) A、7 B、8 C、6 D、2 119、若执行以下语句:int a;float b,c;scanf(“%2d%3f%4f”,&a,&b,&c); printf(“\na=%d,b=%f,c=%f\n”,a,b,c);在键盘上从第一列开始,输入9876543210 A、a=98,b=765,c=4321 B、a=10,b=432,c=8765 C、a=98,b=765.000000,c=4321.000000 D、a=98,b=765.0,c=4321.0 120、有以下语句int m=0,n=0;char c='a';scanf("%d%c%d",&m,&c,&n); printf("%d,%c,%d\n",m,c,n);若从键盘上输入:10A10<回车>,则输出结果是(A)(2分)A、10,A,10B、10,a,10C、10,a,0D、10,A,0 121、执行下列语句int x=10,y=10;printf("%d%d\n",x--,--y);后的输出是(D)(2分) A、1010 B、99 C、910 D、109 122、下列表达式中,(C)不满足“当x的值为偶数时值为真,为奇数时值为假”的要求。 A、x%2==0 B、!x%2!=0 C、(x/2*2-x)==0 D、!(x%2) 123、已知:int n,i=1,j=2;执行语句n=i 124、执行语句for(I=1;I++<4;);后变量I的值是(C)。(2分) A、3 B、4 C、5 D、不定 125、a和b为int型变量,则执行a=1;b=10;do{b-=a;a++;}while(b--<0);后b的值为(C)。(2分) A、9 B、-2 C、-1 D、8 126、有程序段char a[3],b[]="China";a=b;printf("%s",a);则(C)。(2分) A、运行后将输出China B、运行后将输出Ch C、编译出错 D、运行后将输出Chi 127、不能正确为字符数组输入数据的是(A)。(2分) A、char s[5];scanf("%s",&s); B、char s[5];scanf("%s",s); C、char s[5];scanf("%s",&s[0]); D、char s[5];gets(s); 128、程序段char s[]="\\141\141abc\t";printf("%d\n",strlen(s));的输出结果是(A)。(2分) A、9 B、12 C、13 D、14 129、已知:char s[20]="programming",*ps=s;则不能引用字母o的表达式是(A)。(2分) A、ps+2 B、s[2] C、ps[2] D、ps+=2,*ps 130下列关于文件打开方式“w”和“a”的描述中,错误的是(D)(2分) A、它们都可以向文件写入数据。 B、以“w”方式打开的文件从头写入数据。 C、以“a”方式打开的文件从尾写入数据。 D、它们都不清除原文件内容。 131、C语言程序的注释是(A)(2分) A、由"/*"开头,"*/"结尾 B、由"/*"开头,"/*"结尾 C、由"//"开头 D、由"/*"或"//"开头133、若有以下类型说明语句:char w;int x;float y;double z;则表达式w*x+z-y的结果类型是(D)(2分) A、float B、char C、int D、double 134、以下选项中属于C语言的数据类型是(C)(2分) A、复数型 B、逻辑型 C、双精度型 D、集合型 `135、若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是(c)(2分) A、1 B、2 C、2.0 D、2.5 137、对于程序段int a,b=1,c=2;a=b+c,a+b,c+3;c=(c)?a++:b--;printf("c=%d/n",(a+b,c));正确的说法是(A)。(2分) A、无错误 B、第三句有错误 C、第四句有错误 D、第五句有错误 138、对于条件表达式(k)?(i++):(i--)来说,其中的表达式k等价于(C)。(2分) A、k==0 B、k== C、k!=0 D、k!=1 139、以下描述正确的是(C)。(2分) A、由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。 B、do-while循环由do开始,用while结束,在while(表达式)后面不能写分号。 C、在do-while循环体中,一定要有能使while后面表达式的值变成零(“假”)的操作。 D、do-while循环中,根据情况可以省略while 140、若使用一维数组名作函数实参,则以下正确的说法是(A)。(2分) A、必须在主调函数中说明此数组的大小 B、实参数组类型与形参数组类型可以不匹配 C、在被调函数中,不需要考虑形参数组的大小 D、实参数组名与形参数组名必须一致 141、函数从形式上可分为(B)两类。(2分) A、嵌套函数和被嵌套函数 B、无参函数和有参函数 C、标准函数和自定义函数 D、调用函数和被调用函数 142、已知:char b[5],*p=b;则正确的赋值语句是(D)。(2分) A、b="abcd"; B、*b="abcd"; C、p="abcd"; D、*p="abcd" 143、设有说明语句“struct stu{int a;float b;}stutype;”,则叙述不正确的是(D)(2分) A、stuct是结构体类型的关键字。 B、struct stu是用户定义的结构体类型。 C、stutype是用户定义的结构体类型名。 D、a和b都是结构体成员名。 144、以“w+”方式打开一个文件,下列描述中正确的是(C)(2分) A、文件打开时,原有文件内容不被删除,位置指针移动文件末尾,可进行写和读操作。 B、文件打开时,原有文件内容不被删除,位置指针移动文件开头,可进行重写和读操作。 C、文件打开时,原有文件内容被删除,可进行写和读操作。 D、以上说法都不正确。 145、若变量已正确定义并赋值,下面符合C语言语法的表达式是(B)(2分) A、a:=b+1 B、a=b=c+2 C、int18.5%3 D、a=a+7=c+b 146、为表示“x大于等于y,y大于等于z”,应使用C语言表达式(A)(2分) A、(x>=Y)&&(Y>=z) B、(x>=Y)AND(y>=z) C、(x>=Y>=z) D、(x>=Y)&(Y>=z) 147、若变量已正确定义,要将a和b中的数进行交换,下面不正确的语句是(C)(2分)A、a=a+b,b=a-b,a=a-b;B、t=a;a=b;b=t;C、a=t;t=b;b=a;D、t=b;b=a;a=t; 148以下语句char c='a';if('a' A、LOW B、UP C、LOWUP D、语句错误,编译不能通过 149、程序段int a=1,b=2,c=3,t;while(a A、1,2,0 B、2,1,0 C、1,2,1 D、2,1,1 150若二维数组a有m列,则在a[i][j]前面的元素个数为(不)。(2分) A、j*m+i B、i*m+j C、i*m+j-1 D、i*m+j+1 151、以下不正确的定义语句是(B)。(2分) A、double x[5]={2.0,4.0,6.0,8.0,10.0}; B、int y[5]={0,1,3,5,7,9}; C、char c1[]={‘1’,’2’,’3’,’4’,’5’}; D、char c2[]={‘\x10’,’\xa’,’\x8’}; 152、若有说明:int a[][4]={0,0};则下面正确的叙述是()。(2分) A、数组a中每个元素均可得到初值0 B、二维数组a的第一维大小为1 C、因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的行数为1 D、只有元 素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0 153表示指向结构体变量的指针的运算符是(C)(2分) A、>> B、<< C、-> D、: 155、若执行以下程序段:int a=0,b=0,c=0;c=(a-=a-5),(a=b,b+3);printf(“%d,%d,%d\n”,a,b, c);其输出结果是(B)(2分) A、0,0,-10 B、0,0,5 C、-10,3,-10 D、3,3,-10 156、程序段char a[7]=”abcdef”;char b[4]=”ABC”;strcpy(a,b);printf(“%c”,a[5]);输出结果是(D)。(2分) A、一个空格 B、\0 C、e D、f 157在C语言中,若对函数类型未加明显式说明,则函数的隐含类型是(C)类型。(2分)A、void B、double C、int D、char 158、对于某个函数调用,不用给出被调用函数的原形的情况是(C)。(2分) A、被调用函数是无参函数 B、被调用函数是无返回值的函数 C、函数的定义在调用处之前 D、函获得的定义在别的程序文件中 5、若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是(A)(2分) A、2.500000 B、2.750000 C、3.500000 D、0.000000 160、以下运算符中,运算对象必须是整型的是(B)(2分) A、/ B、%= C、!= D、〈= 7、若变量已正确说明为float类型,要通过语句scanf("%f%f%f",&a,&b,&c);给a赋于10.0,b赋予22.0,c赋予33.0,不正确的输入形式是:(B)(2分) A、10<回车>22<回车>33<回车> B、10.0,22.0,33.0<回车> C、10.0<回车>22.033.0<回车> D、1022<回车>33<回车> 161、若有定义:int a=3,b=2,c=1;并有表达式:①a%b,②a>b>c,③b&&c+1,④c+=1,则表达式值相等的是(C)。(2分) A、①和② B、②和③ C、①和③ D、③和④ 162、在C语言中,一位数组的定义方式为:类型说明符数组名(A)。(2分) A、[常量表达] B、整型表达式 C、[整型常量]或[整型表达式] D、[整型常量] 163、若用数组名作为函数调用的实参,传递给形参的是(A)。(2分) A、数组的首地址 B、数组第一个元素的值 C、数组中全部元素的值 D、数组元素的个数164、能正确进行字符串赋值的是(B)。(2分) A、char s[5]={'a','e','i','o','u'}; B、char s[5];s="good"; C、char s[5]="abcdef"; D、char s[5];s[]="good"; 165、C语言中数组名作为参数传递给函数,作为实在参数的数组名被处理为(D)。(2分)A、该数组的长度B、该数组的元素个数C、该数组中各元素的值D、该数组的首地址166、已知:int a[10],*p=a;则下面说法不正确的是(A)。(2分) A、p指向数组元素a[0] B、数组名a表示数组中第一个元素的地址 C、int a[10],*p=&a[0];与上述语句等价 D、以上均不对 167、下列关于文件指针的描述中,错误的是(D)(2分) A、文件指针是由文件类型FILE定义的。 B、文件指针是指向内存某个单元的地址值。 C、文件指针是用来对文件操作的标识。 D、文件指针在一个程序中只能有一个。 168C语言程序能够在不同的操作系统下运行,这说明C语言具有很好的(B)(2分) A、适应性 B、移植性 C、兼容性 D、操作性 169、以下叙述不正确的是(D)(2分) A、在C程序中,逗号运算符的优先级最低 B、在C程序中,APH和aph是两个不同的变量 C、若a和b类型相同,在执行了赋值表达式a=b后b的值将放入a中,而b的值不变 D、当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型 数值 170、逻辑运算符两侧运算对象的数据类型可以是(D)。(2分) A、只能是0或1 B、只能是0或非0正数 C、只能是整型或字符型数据 D、可以是任何类型的数据 171、设int a=3,b=4,c=5,则下面表达式中,值为0的表达式是(D)。(2分)A、'a'&&'b'B、a<=b C、a||b+c&&b-cD、!((a 172、有int n=0,p;do{scanf(“%d”,&p);n++;}while(p!=12345&&n<3);此处循环的结束条件是(D)。(2分) A、P的值不等于12345并且n的值小于3 B、P的值等于12345并且n的值大于等于3 C、P的值不等于12345或者n的值小于3 D、P的值等于12345或者n的值大于等于3 173、一个完整的C源程序是(B)。(2分) A、要由一个主函数(或)一个以上的非主函数构成 B、由一个且仅由一个主函数和零个以上(含零)的非主函数构成 C、要由一个主函数和一个以上的非主函数构成 D、由一个且只有一个主函数或多个非主函数构成 174、在C语言中,若需一变量只在本文件中所有函数使用,则该变量的存储类别是(D)。(2分) A、extern B、register C、auto D、static 175、已知:char s[10],*p=s;则在下列语句中,错误的语句是(B)。(2分) A、p=s+5; B、s=p+s; C、s[2]=p[4]; D、*p=s[0]; 1`76、以“w+”方式打开一个文件,下列描述中正确的是(B)(2分) A、被打开的文件一定要存在。 B、被打开的文件既可以写又可以读。 C、被打开的文件内容不被删除。 D、被打开的文件可以是文本文件,也可以是二进制文件或其它类型的文件。 177、在C语言中,int型数据在内存中是以(B)形式存储的。(2分) A、原码 B、补码 C、ASCII码 D、反码 179、若要用fopen函数打开一个新的二进制文件,该文件既能读也能写,则文件打开方式为(B)(2分) A、ab+ B、wb+ C、rb+ D、ab 180、若a、b、c、d都是int类型变量且初值为0,以下选项中不正确的赋值语句是(C)(2分)A、a=b=c=100;B、d++;C、c+b;D、d=(c=22)-(b++); 181下列循环语句会进入死循环的是(c)。(2分) A、i=0;do{i++;}while(i==100); B、for(i=0;i<100;i+=3.14); C、for(i=0;;i+=2); D、k=1;do{k--;}while(k); 183、下面的函数是无参函数的是A)。(2分) A、main() B、int max(int x,int y) C、return(z) D、scanf("%d",&a) 184、有函数fun(float x){float y;y=3*x-4;return y;},其函数值的类型是(D)。(2分)A、intB、不确定C、void D、float 185、下述标识符中,(B)是合法的用户标识符。(2分) A、A#C B、getch C、void D、ab* 188、以下运算符中优先级最低的算符为(B)(2分) A、&& B、?: C、!= D、|| 190、执行语句int x=5,a=0,b=0;if(x=a+b)printf("****\n");else printf("####\n");后,结论是(D)。(2分) A、有语法错,不能通过编译 B、能通过编译,但不能连 C、输出**** D、输出#### 191、以下描述正确的是(C)。(2分) A、goto语句只能用于退出多层循环 B、switch语句中不能出现continue语句 C、只能用continue语句来终止本次循环 D、在循环中break语句不能独立出现 192、C语言规定,数组名做实参时,它和对应形参之间的数据传递方式是(D)。(2分)A、用户指定传递方式B、无传递C、单向值传递D、地址传递 193、以下所列的各函数首部中,正确的是(C)。(2分) A、void play(var a: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) 194、已知:char s1[4]="12";char*ptr;则执行ptr=s1;printf("%c\n",*(ptr+1));语句后输出为(A)。(2分) A、字符'2' B、字符'1' C、字符'2'的地址 D、不确定 195、若变量已正确定义,执行以下语句:x=5.16894;printf(“%f\n”, (int)(x*1000+0.5)/(float)1000);的输出结果是(D)(2分) A、输出格式说明与输出项不匹配,输出无定值 B、5.17000 C、5.168000 D、5.169000 196、在C语言中,以下正确的描述是(B)。(2分) A、函数的定义可以嵌套,但函数的调用不可以嵌套 B、函数的定义不可以嵌套,但函数的调用可以嵌套 C、函数的定义和函数的调用均不可以嵌套 D、函数的定义和函数的调用均可以嵌套197、下述对C语言字符数组的描述中错误的是(C)。(2分) A、字符数组可以存放字符; B、字符数组中的字符串可以整体输入、输出; C、可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值; D、不可以用关系运算符对字符数组中的字符串进行比较。 199、C语言程序由函数组成,它的(B)。(2分) A、主函数必须在其它函数之前,函数内可以嵌套定义函数 B、主函数可以在其它函数之后,函数内不可以嵌套定义函数 C、主函数必须在其它函数之前,函数内不可以嵌套定义函数 D、主函数必须在其它函数之后,函数内可以嵌套定义函数 200、在定义函数中指定的形参,在未出现函数调用时(B)。(2分) A、占用固定大小的内存 B、不占用内存 C、不确定 D、占用大小不确定的内存 201、C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符(C)(2分) A、必须为字母 B、必须为下划线 C、必须为字母或下划线 D、可以是字母,数字和下划线中任一字符 202、若从终端输入以下数据,要给变量c赋以283.19,则正确的输入语句是(D)(2分)A、scanf("%f",c)B、scanf("%8.4f",&c);C、scanf("%6.2f",&c);D、scanf("%8f",&c); 203、若有定义:int a[5];则对数组中首元素的地址可以表示为(C)。(2分) A、&a B、a+1 C、a D、&a[1] 204、在C语言中,以下数据类型关键字不合法的是(C)(2分) A、double B、short C、integer D、char 205、设i是int型变量,f是float型变量,用下面的语句给这两个变量输入值:scanf("i=%d,f=%f",&i,&f);为了把100和765.12 分别赋给i和f,则正确的输入为(B)(2分) A、100765.12 B、i=100,f=765.12 C、100765.12 D、x=100y=765.12 206、若已定义char s[2][40]={"china","English"};则在下面表达式中能表示字符‘E’的地址的是(C)。(2分) A、&s[2][1] B、s[1] C、&s[1] D、&(s[1]+1) 207、以下正确的说法是(C)。(2分) A、定义函数时,形参的类型说明可以放在函数体内 B、return后边的值不能为表达式 C、如果函数值的类型与返回值类型不一致,以函数值类型为准 D、如果形参与实参的类型不一致,以实参类型为准 208、已知:int a[]={1,2,3,4},y,*p=&a[0];则执行语句"y=++(*p);"后,下面(A)元素的值发生了变化。 A、a[0] B、a[1] C、a[2] D、都没发生变化 209、已有定义“struct xy{int a;double b;}m;”,变量m的成员a的正确表示是(A)(2分)A、m.a B、m->a C、*m.a D、xy.a 210、下列打开文件的方式中,对二进制文件操作的是(D)(2分) A、r B、a C、w+ D、rb+ 211、以下不是关键字的是(C)(2分) A、continue B、char C、If D、default 212、下面有关for循环的正确描述是(D)。(2分) A、for循环只能用于循环次数已经确定的情况。 B、for循环是先执行循环体语句,后判断表达式。 C、在for循环中,不能用break语句跳出循环体。 D、for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来。 214、已知:char s[100];int i=10;则在下列引用数组元素的语句中,错误的表示是(D)。(2分) A、s[i+10] B、*(s+i) C、*(i+s) D、*((s++)+i 一、单项选择题(25道小题,共50分) 1、C语言规定,在一个源程序中,main函数的位置(C)(2分) A、必须在最开始B必须在系统调用的库函数的后面C、可以任意D、必须在最后 2、以下叙述中正确的是(C)(2分) A、用C语言实现的算法必须要有输入和输出操作 B、用C语言实现的算法可以没有输出但必须要有输入 C、用C程序实现的算法可以没有输入但必须要有输出 D、用C程序实现的算法可以既没有输入也没有输出 3、以下叙述不正确的是(D)(2分) A、在C程序中,逗号运算符的优先级最低 B、在C程序中,APH和aph是两个不同的变量 C、若a和b类型相同,在执行了赋值表达式a=b后b的值将放入a中,而b的值不 D、当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值 4、C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符(C)(2分) A、必须为字母 B、必须为下划线 C、必须为字母或下划线 D、可以是字母,数字和下划线中任一字符 5、在C语言中,int型数据在内存中是以(B)形式存储的。(2分) A、原码 B、补码 C、ASCII码 D、反码 6、已有定义:int x=3,y=4,z=5;则表达式!(x+y)+z-1&&y+z/2的值是(D)(2分) A、6 B、0 C、2 D、1 7、若从终端输入以下数据,要给变量c赋以283.19,则正确的输入语句是(D)(2分) A、scanf("%f",c) B、scanf("%8.4f",&c); C、scanf("%6.2f",&c); D、scanf("%8f",&c); 8、执行下列语句:double d;float f;long L;int i;i=f=L=d=20/3;printf("%d%ld%f%f\n", i,L,f,d);输出结果是(小数点后只写一位)(A)(2分) A、666.06.0 B、666.76.7 C、666.06.7 D、666.76.0 9、若有以下程序段:int c1=1,c2=2,c3;c3=1.0/c2*c1;则执行后,c3中的值是(A)(2分) A、0B、0.5C、1D、2 10、下述表达式中,(A)可以正确表示x≤0或x≥1的关系。(2分) A、(x>=1)||(x<=0) B、x>=1|x<=0 C、x>=1&&x<=0 D、(x>=1)&&(x<=0)