c语言选择题.docx
《c语言选择题.docx》由会员分享,可在线阅读,更多相关《c语言选择题.docx(33页珍藏版)》请在冰豆网上搜索。
c语言选择题
1.以下运算符中优先级最低的是(C)。
A、&&B、|C、||D、&
2.不合法的if语句是:
(D)
A、if(表达式)语句1else语句2B、if(表达式)语句
C、if(表达式1)语句1elseif(表达式2)语句2else语句3。
D、if关系表达式语句1else语句2
3.以下不是无限循环的语句为(D)。
A、while
(1){x++;}B、for(;;x++=i);
C、for(i=10;;i--)sum+=i;D、for(y=0,x=1;x>++y;x=i++)i=x;
4.调用函数时,基本类型变量做函数参数,实参和对应的形参(B).
A、不占用存储单元B、各自占用独立的存储单元
C、同名时才能共用存储单元D、共占用一个存储单元
5.已知有宏定义#defineF(a)a*(a+2),则F(4+3)的值为(D).
A、24B、15C、63D、31
a[10];给数组a的所有元素分别赋值为1、2、3、……的语句是(D)
A、for(i=1;i<11;i++)a[i]=i;B、for(i=1;i<11;i++)a[0]=1;
C、for(i=1;i<11;i++)a[i+1]=i;D、for(i=1;i<11;i++)a[i-1]=i;
7.若有说明:
inta[3][4];则数组a中各元素(A)。
A、不能得到确定的初值B、可在程序的编译阶段得到初值0
C、可在程序的运行阶段得到初值0D、可在程序的编译或运行阶段得到初值0
8.已定义floata;inti;选择正确的输入语句(C).
A、scanf("%6.2f%3d",&a,&i);B、scanf("%f%s",&a,&i);
C、scanf("%6f%3d",&a,&i);D、scanf("%f%d",a,i);
9执行下面程序段后,k的值是:
(B)
intk=2;
switch(k+1)
{case3:
k+=1;
case4:
k--;break;
case5:
k*=3;
case6:
++k;}A、10B、2C、28bD、27
11.以下程序段中,能够正确地执行循环的是(B)。
A、ints=6;m:
if(s<100)exit(0);elses-=2;gotom:
B、ints=6;dos-=2;while(s);
C、for(i=1;i>10;i++)
D、staticinta;while(a)
12.运行结果是"1112"的程序段是:
请在A处填写正确内容(B)。
for(i=1;i<=2;i++)
___A___
A、for(j=1;j<=2;j++)printf("%3d",10*i+j);break;
B、{for(j=1;j<=2;j++)printf("%3d",10*i+j);break;}
C、for(j=1;j<=2;j++)printf("%3d",10*i+j);continue;
D、{for(j=1;j<=2;j++)printf("%3d",10*i+j);continue;}
13.设有以下定义:
inta[10]={1,2,3,4,5,6,7,8,9,10};
int*p=a;
则数值为6的表达式是(D).
A、p+5B、*p+6C、*(p+6)D、*p+=5
14.语句printf("a\bre\'hi\'y\\\bou\n");的输出结果是(B)(说明:
'\b'是退格符)。
A、a\bre\'hi\'y\\\bouB、re'hi'youC、a\bre\'hi\'y\bouD、abre'hi'y\bou
14.执行下面程序段后,i的值是(A).
inti=10;
switch(i)
{case9:
i+=1;
case10:
i--;
case11:
i*=3;
case12:
++i;}A、28B、10C、9D、27
15.从键盘输入的整数中找出最小值min,输入0时结束.请在A处填写正确语句(D)。
#include""
main()
{intmin=0,a;
do
{scanf("%d",&a);
if(min>a)min=a;}
while(___A___);
printf("%d",min);}A、a=0B、a==0C、a>0&&a<0D、a!
=0
16.下面程序的运行结果是:
(B)。
#include""
voidmain()
{intx,i;
for(i=1;i<=100;i++)
{x=i;
If(++x%2==0)
if(++x%3==0)
if(++x%7==0)
printf("%d",x);}}A、4284B、2870C、3981D、2668
17.以下函数的类型是(C)。
fff(floatx)
{return5;}AvoidB、与参数x的类型相同C、int类型D、无法确定
18设有以下宏定义:
#defineM4
#defineT(t)((M+1)*t)则执行语句:
y=2*(M+T(4+1));后,y的值为(B).
A、28B、50C、出错D、58
19.下面判断正确的是(D)。
A、charc[4]="abc",d[4]="abc";等价于charc[4]=d[4]="abc";
B、charstr[10]={"china"};等价于charstr[10];str[]={"china"};
C、char*a="china";等价于char*a;*a="china";
D、char*s="china";等价于char*s;s="china";
20.以下不正确的叙述是(B)。
A、在C程序中所用的变量必须先定义后使用
B、当输入数值数据时,对于整型变量只能输入整型值;对于实型变量只能输入实型值
C、程序中,APH和aph是两个不同的变量
D、若a和b类型相同,在执行了赋值语句a=b;后b中的值将放入a中,b中的值不变
21.设:
longw=65535,t=7654321;
根据下面的输出结果,正确的程序段是(C).
w=65535,t=7654321
end
A、printf("w=%5d,t=%7d\n",w,t);printf("%s","end');
B、printf("w=%5ld,t=%7ld",w,t);printf("%c","end");
C、printf("w=%5ld,t=%7ld\n",w,t);printf("%s","end");
D、printf("w=%5u,t=%7u\n",w,t);printf("end");
23.在C语言中,if语句后的一对圆括号中,用以决定分支的流程的表达式(C)。
A、只能用逻辑表达式或关系表达式B、只能用关系表达式C、可用任意表达式D、只能用逻辑表达
25.以下语句中,循环次数不为10次的语句是(A)。
A、for(i=1;i<10;i++);B、i=1;do{i++;}while(i<=10);
C、i=10;do{i--;}while(i>0);D、i=10;while(i>0){--i;}
26下面程序的运行结果是(A).
#include""
voidmain()
{inta=1,b=10;
Do
{a++;
b-=a;}
while(b-->0);
printf("a=%d,b=%d",a,b);}
A、a=4,b=-2B、a=4,b=-1C、a=2,b=-1D、a=2,b=-2
27.设j和k都是int类型,则下面的for循环语句(D)。
for(j=0,k=0;j<=9&&k!
=876;j++)scanf("%d",&k);
A、最多执行9次B、是无限循环C、循环体一次也不执行D、最多执行10次
28.若有说明:
inta[][4]={0,0};则下面不正确的叙述是(A)。
A、有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0
B、数组a的每个元素都可得到初值0C、二维数组a的第一维大小为1
D、因为二维数组a中第二维大小的值除经初值个数的商为1,故数组a的行数为1
29.以下错误的描述是:
函数调用可以(D)。
A、出现在执行语句B、做为一个函数的实参C、出现在一个表达式中D、做为一个函数的形参
30.下列说法中正确的是(C).
A、函数调用不占运行时间,只占编译时间.B、宏替换不占运行时间,只占编译时间.
C、有参数的宏定义,就是函数.D、在定义宏时,宏名与带参数的括弧之间可以加空格.
31.与实际参数为实型数组名相对应的形式参数不可以定义为(C)。
A、float*a;B、float(*a)[3];C、floata;D、floata[];
32.若变量均已正确定义并赋值,以下合法的C语言赋值语句是(C)。
A、x+n=I;B、x==5;C、x=n/;D、5=x=4+1;
33.用scanf函数输入数据,使得x=,y=选择正确的输入语句(D).
A、scanf("x=%3f",x);scanf("y=%5f",&y);B、scanf("x=%f",&x);scanf("y=%f",y);
C、scanf("x=%3.1f",&x);scanf("y=%f",&y);D、scanf("x=%f",&x);scanf("y=%f",&y);
34.下面叙述中错误的是(B)。
A、在其它函数中定义的变量在主函数中也不能使用B、主函数中定义的变量在整个程序中都是有效的
C、复合语句中定义的变量只在该复合语句中有效D、形式参数也是局部变量
35.设有宏定义#defineMAX(x,y)(x)>(y)(x):
(y),则F=4*MAX(2,3)的值为(B).
A、3B、2C、12D、8
36.设有以下定义:
intw[3][4]={{0,1},{2,4},{5,8}};
int(*p)[4]=w;
则数值为4的表达式是(B).
A、*w[1]+1B、p[1][1]C、p++,*(p+1)D、w[2][2]
37.执行以下程序段后,输出结果和a的值是(B)。
inta=10;printf("%d",a++);
A、11和10B、10和11C、11和11D、10和10
38.以下不正确的if语句形式是(B)。
A、if(x=y)scanf("%d",&x)elsescanf("%d",&y);
C、if(x>y&&x!
=y);D、if(x==y)x+=y;
39.对for(表达式1;;表达式3)可以理解为(C).
A、for(表达式1;表达式3;表达式3)B、for(表达式1;表达式1;表达式3)
C、for(表达式1;1;表达式3)D、for(表达式1;0;表达式3)
40.运行结果是"1112"的程序段是:
请在A处填写正确内容(D)。
for(i=1;i<=2;i++)___A___
A、for(j=1;j<=2;j++)printf("%3d",10*i+j);break;
B、{for(j=1;j<=2;j++)printf("%3d",10*i+j);break;}
C、for(j=1;j<=2;j++)printf("%3d",10*i+j);continue;
D、{for(j=1;j<=2;j++)printf("%3d",10*i+j);continue;}
charstr[10]="China";数组元素个数为(A)。
A、6B、9C、5D、10
42.以下程序的输出结果是:
(C).
fun(intx,inty,intz)
{z=x*x+y*y;}
main()
{inta=31;
fun(5,2,a);
printf("%d",a);}A、无定值B、29C、31D、0
43.文件包含中,被包含文件(B).
A、可以是可执行文件.B、可以嵌套其它文件.C、可以是目标文件或源文件.D、必须用".h"为后缀.
44.下列程序段的输出结果是:
(C).
voidfun(int*x,int*y)
{printf("%d%d",*x,*y);*x=3;*y=4;}
main()
{intx=1,y=2;
fun(&y,&x);
printf("%d%d",x,y);}A、2112B、1234C、2143D、1212
45.若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是(B)。
A、6B、-12C、9D、-3
47.下列程序段的输出结果为(C)。
floatx=;printf("%3d",(int)x);
A、B、213.83C、213D、
b为整型变量,二者均不为0,以下关系表达式中恒成立的是(A)。
A、a/b*b+a%b==aB、a/b*b==aC、a*b/a*b==1D、a/b*b/a==1
!
49C语言的switch语句中case后(C)。
A、可为任何量或表达式B、可为常量或表达式或有确定值的变量及表达式
C、只能为常量或常量表达式D、只能为常量
50.执行语句for(i=1;i++<4;);后变量i的值是(B)。
A、3B、5C、4D、不定
51.以下for循环的执行次数是for(x=0,y=0;(y=123)&&(x<4);x++);(C)。
A、3次B、循环次数不定C、4次D、是无限循环
52.下述对C语言字符数组的描述中,错误的是(C).
A、不可以用关系运算符对字符数组中的字符串进行比较.B、字符数组中的字符串可以整体输入、输出.
C、可以通过赋值运算符"="对字符数组整体赋值.D、字符数组中可以存放字符串.
53以下对C语言函数的描述中,正确的是(B)。
A、C函数既可以嵌套定义又可以递归调用B、C程序必须由一个或一个以上的函数组成
C、函数必须有返回值,否则不能使用函数D、C程序中有调用关系的所有函数必须放在同一个程序文件中
54在TurboC运行环境下,下列说法中正确的是(C).
A、双引号中字符串的字符,如果与宏名相同,就要替换.B、用宏定义不可以得到多个返回值.
C、双引号中字符串的字符,即使与宏名相同,也不替换.D、调用函数可以得到多个返回值.
56.能够完成求出两个正整数a,b最小公倍数max的程序段.请在下划线处填写正确内容(D)。
if(a>=b)t=a;
elset=b;
for(i=t;;i++)
if(i%a==0&&i%b==0)
___________
printf("%d",max);
A、{max=i;continue;}B、max=i;break;C、max=i;continue;D、{max=i;break;}
57.以下能对一维数组a进行正确初始化的语句是(B)。
A、inta[10]={};B、inta[]={0};C、inta[10]={10*1};D、inta[10]=(0,0,0,0,0)
58.以下只有在使用时才为该类型变量分配内存的存储类说明是(D)。
A、auto和staticB、register和staticC、extern和registerD、auto和register
中有命令,#include<>,若中有全局静态变量a,则(B).
A、a在中应用extern说明.B、a在中有效,不必用extern说明.
C、a在中不生效D、a在和中均不生效.
60.在说明语句:
int*f();中,标识符f代表的是(A)。
A、一个返回值为指针型的函数名B、一个用于指向函数的指针变量
C、一个用于指向一维数组的行指针D、一个用于指向整型数据的指针变量
61.设有说明语句:
chara='\72';则变量a(C)
A、说明不合法B、包含3个字符C、包含1个字符D、包含2个字符
62.已知字符'A'的ASCⅡ代码值是65,字符变量c1的值是'A',c2的值是'D'.执行语句printf("%d,%d",c1,c2-2);后,输出结果是(A)。
A、65,66B、65,68C、A,68D、A,B
63.已知键盘输入a=4,b=3,下面程序输出的结果是(C).
main()
{inta,b,s;
scanf("a=%d,b=%d",&a,&b);
s=a;
if(a
s=s*s;
printf("%d\n",s);}A、9B、13C、16D、15
65.以下程序的执行结果是(B)。
main()
{intnum=0;
while(num<=2){num++;printf("%d,",num);}}
A、0,1,2B、1,2,3,C、1,2,3,4,D、1,2,
67.C语言中while和do-while循环的主要区别是(A)。
A、do-while的循环体至少无条件执行一次B、do-while的循环体不能是复合语句
C、do-while允许从外部转到循环体内D、while的循环控制条件比do-while的循环控制条件更严格
68.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是(C)。
A、chart[]="abcdefg",*s=t;B、chars[10]="abcdefg";
C、chars[10];s="abcdefg";D、chars[10];strcpy(s,"abcdefg");
69.在所有函数之前,定义一个外部变量的形式为staticintx;那么错误的叙述是(A).
A、x的值不可以永久保留B、将变量存放在静态存储区
C、使变量x可以由系统自动初始化为0D、使x只能被本文件中的函数引用
程序中的宏展开是在(C)。
A、编辑时进行的B、编译时进行的
C、编译前预处理时进行的D、程序执行时进行的
程序中的宏展开是在(D)。
A、编辑时进行的B、编译时进行的
C、编译前预处理时进行的D、程序执行时进行的
("a\rHappi\by");在屏幕上正确的输出形式是(A).
A、HappyB、HappiC、aHappiD、aHappy
74.执行下面程序段后,s的值是(C)。
ints=5;
switch(++s)
{case6:
case7:
s+=2;
case8:
case9:
s+=2;}A、8B、7C、10D、6
75.假定所有变量均已正确定义,下列程序段运行后x的值是(A)。
k1=1;
k2=2;
k3=3;
x=15;
if(!
k1)x--;
elseif(k2)x=4;
elsex=3;A、4B、15C、3D、14
76.下列程序的输出为(A)。
main()
{inty=10;
while(y--);
printf("y=%d\n",y);}A、y=-1B、y=0C、y=1D、while构成无限循环
77.以下程序段中,能够正确地执行循环的是(B)。
A、ints=6;m:
if(s<100)exit(0);elses-=2;gotom:
B、ints=6;dos-=2;while(s);
C、for(i=1;i>10;i++)D、staticinta;while(a)
78.若有说明:
inta[10];则对a数组元素的正确引用是(A)。
A、a[10-10]B、a[10]C、a(5)D、a[3,5]
79.以下程序的输出结果为(C)。
#include""
voidmain()
{inta=1,b=2,c=3,d=4,e=5;
printf("%d\n",func((a+b,b+c,c+a),(d+e)));}
intfunc(intx,inty)
{return(x+y);}A、9B、15C、13D、函数调用出错
80.以下叙述中不正确的是(A)。
A、C程序在执行过程中对预处理命令行进行处理B、在程序中凡是以#号开始的语句行都是预处理命令行
C、预处理命令行都必须以#号开始D、以下是正确的宏定义#defineIBMPC
81.下列不正确的C语言语句是(B).
A、x++;B、y=int(x);C、x=1,y=2;D、x=y=5;
83.下面程序的功能是计算1~100中所有9的倍数的数值之和,请在A处填写正确语句.(D)。
#include""voidmain(){inti,sum=0;for(i=1;i<=100;i++)
if(i%9!
=0)___A___elsesum=sum+i;printf("sum=%d",sum);}
A、i--;B、break;C、goto;D、continue;
84.列是能够完成求出两个正整数a,b最大公约数max的程序段.请在下划线处填写内容正确内容(B)。
if(a>=b)t=b;elset=a;for(i=1;i<=t;i++)____max=i;printf("%d",max);
A、if(a%i==0||b%i==0)B、if(a%i==0&&b%i==0)C、if(a%i!
=0&&b%i!
=0)D、if(a%i!
=0||b%i!
=0)
85.在C语言中,一维数组的定义方式为:
类型说明符数组名(B)。
A、[整型常量]或[整型表达式]B、[正整型常量表达式]
C、[整型表达式]D、[常量表达式]
86.如果在一个函数中的复合语句中定义了一个变量,以下正确的说法是(C).
A、该变量在本程序范围内均有效B、该变量在主函数中有效
C、该变量只在该复合语句中有效D、该变量在该函数中有效
88.若有inti=3,*p;p=&i;下列语句中输出结果为3的是(A)。
A、printf("%d",*p);B、printf("%d",*i);C、printf("%d",p);D、printf("%d",&p);
!
89.选择正确的输入语句(D)。
:
(其中:
charstring[20];)使得string的内容为"Iamstudent".
A、scanf("%s",string);B、scanf("%c",&string);C、scanf("%s",&string);D、gets(string);
91.根据下面的输出结果,正确的输出语句是:
(D);
x=,y