C练习题.docx
《C练习题.docx》由会员分享,可在线阅读,更多相关《C练习题.docx(36页珍藏版)》请在冰点文库上搜索。
C练习题
一、选择题
1、一个C程序的执行是从。
A、本程序的main函数开始,到main函数结束。
B、本程序的第一个函数开始,到本程序文件的最后一个函数结束。
C、本程序的main函数开始,到本程序文件的最后一个函数结束。
D、本程序的第一个函数开始,到本程序main函数结束。
2、以下叙述正确的是。
A、在C程序中,main函数必须位于程序的最前面。
B、C程序的每行中只能写一条语句。
C、C语言本身没有输入输出语句。
D、在对一个C程序进行编译的过程中,可以发现注释中的拼写错误。
3、C语言规定:
在一个源程序中,main函数的位置。
A、必须在最开始B、必须在系统调用的库函数的后面
C、可以任意D、必须在最后
4、以下叙述不正确的是。
A、一个C源程序可由一个或多个函数组成
B、一个C源程序必须包含一个main函数
C、C程序的基本单位是函数
D、在C程序中,注释说明只能位于一条语句的后面
5、一个C语言程序是由。
A、一个主程序和若干子程序组成B、函数组成
C、若干过程组成D、若干子程序组成
二、填空题
1、在C语言源程序中,一个变量代表。
2、在TurboC环境中用RUN命令运行一个C程序时,所运行程序的后缀是。
3、结构化程序由、、3种基本结构组成。
4、C语言源程序的基本单位是。
5、一个C语言源程序是由若干个函数组成,其中至少应含有一个。
6、在C语言中,输入操作是库函数完成的,输出操作是库函数完成的。
二、
一、选择题
1、设C语言中一个int型数据在内存中占2个字节,则unsignedint型数据的取值范围为。
A、0~255B、0~32767C、0~65535D、0~2147483647
2、下面4个选项中,均是不合法的用户标识符的选项是。
A、AB、floatC、b-aD、_123
P_0la0gototemp
Do_AintINT
3、C语言中的标识符只能由字母、数字和下划线3种字符组成,且第一个字符。
A、必须为字母B、必须为下划线C、必须为字母或下划线D、可以是字母、数字和下划线中任一种字符
4、下面正确的字符常量是。
A、“C”B、“\\”C、`W`D、``
5、在C语言中,int、char和short三种类型数据在内存中所占用的字节数。
A、由用户自己定义B、均为2个字节
C、是任意的D、由所用机器的机器字长决定
6、以下表达式值为3的是。
A、16-13%10B、2+3/2C、14/3-2D、(2+6)/(12-9)
7、设有说明语句:
intk=7,x=12;则以下能使值为3的表达式是。
A、X%=(K%=5)B、X%=(K-K%5)
C、X%=K-K%5D、(X%=K)-K%=5
8、若x、i、j和k都是int型变量,则执行表达式x=(i=4,j=16,k=32)后x的值为。
A、4B、16C、32D、52
9、以下不正确的叙述是。
A、在C程序中,逗号运算符的优先级最低
B、在C程序中,APH和aph是两个不同的变量
C、若a和b类型相同,在执行了赋值表达式a=b后b中的值将放入a中,而b中的值不变
D、当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值
10、已知字母A的ASCII码为十进制数65,且定义c2为字符型变量,则执行语句c2=`A`+`6`-`3`;后,c2中的值为。
A、DB、68C、不确定的值D、C
11、在C语言中,要求运算数必须是整型的运算符是。
A、/B、++C、!
=D、%
12、若有说明语句:
charc=`\72`;则变量c。
A、包含1个字符B、包含2个字符
C、包含3个字符D、说明不合法,c的值不确定
13、若有定义语句:
inta=7;floatx=2.5,y=4.7;x+a%3*(int)(x+y%2/4)的值是。
A、2.500000B、2.750000C、3.500000D、0.000000
14、设以下变量均为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+1,x=y,x+1)
二、填空题
1、在C语言中,用关键字定义单精度实型变量,用关键字定义双精字实型变量,用关键字定义字符型变量。
2、设a、b、c均为int类型变量,请用C语言的表达式描述以下命题。
(1)a或b中有一个大于c
(2)a、b和c中只有2个正数
(3)c是偶数
3、运算符%两侧运算量的数据类型必须都是;运算符++和--的运算量必须是。
4、在C语言的赋值表达式中,赋值号左边必须是。
5、若有定义语句:
ints=6;则表达式s%2+(s+1)%2的值为。
6、若a是int型变量,则表达式(a=4*5,a*2),a+6的值为。
7、若a是int型变量,且a的初值为6,则执行表达式a+=a-=a*a后a的值为。
8、若a是int型变量,则执行表达式a=25/3%3后a的值为。
三、
一、选择题
1、以下程序的运行结果是。
#include
Main()
{intm=5,n=10;
Printf(“%d,%d\n”,m++,--n);}
A、5,9B、6,9C、5,10D、6,10
2、设有以下程序:
#include
Main()
{inta=201,b=012;
Printf(“%2d,%2d\n”,a,b);}
程序执行后的输出结果是。
A、01,12B、201,10C、01,10D、20,01
3、有定义语句inta,b;,若要通过语句scanf(“%d,%d”,&a,&b);使变量a得到数值6,变量b得到数值5,下面输入形式中错误是。
(注:
︺代表空格)
A、6,5<回车>B、6,︺︺5<回车>
C、65<回车>D、6,<回车>
5<回车>
4、以下不符合C语法的赋值语句是。
A、m=(2+1,m=1)B、m=n=0C、m=1,n=2D、n++;
5、以下能正确地定义整型变量a,b和c并为其赋初值5的语句是。
A、inta=b=c=5;B、inta,b,c=5;
C、a=5,b=5,c=5;D、a=b=c=5;
四、
一、选择题
1、逻辑运算符两侧运算对象的数据类型。
A、只能是0或1B、只能是0或非0正数
C、只能是整型或字符型数据D、可以是任何类型的数据
2、下列运算符中优先级最低的是。
A、?
:
B、+=C、>=D、==
3、能正确表示”当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)
4、判断char型变量ch是否为大写字母的正确表达式是。
A、`A`<=ch<=`Z`B、(ch>=`A`)&(ch<=`Z`)
C、(ch>=`A`)&&(ch<=`Z`)D、(`A`<=ch)AND(`Z`>=ch)
5、以下程序的运行结果是。
#include“stdio.h”
Main()
{inta,b,d=241;
a=d/100%9;
b=(-1)&&(-1);
printf(“%d,%d”,a,b);}
A、6,1B、2,1C、6,0D、2,0
6、在C语言中,紧跟在关键字if后一对圆括号里的表达式。
A、只能用逻辑表达式B、只能用关系表达式
C、只能用逻辑表达式或关系表达式D、可以是任意表达式样
7、已知intx=10,y=20,x=30;执行以下语句后x、y、x的值是。
If(x>y)
z=x;x=y;y=z;
A、x=10,y=20,z=30B、x=20,y=30,z=30
C、x=20,y=30,z=10D、x=20,y=30,z=20
8、以下语法正确的if语句是。
A、if(x>0)B、if(x>0)
printf(“%f”,x){x=x+y;printf(“%f”,x);}
elsePrintf(“%f”,-x);elseprintf(“%f”,-x);
C、if(x>0)D、if(x>0)
{x=x+y;printf(“%f”,x);};{x=x+y;printf(“%f”,x)}
elseprintf(“%f”,-x);elseprintf(“%f”,-x);
9、以下程序。
Main()
{inta=b,b=0,c=0;
If(a=b+c)printf(“***\n”);
Elseprintf(“$$$\n”);
}
A、有语法错不能通过编译B、可以通过编译但不能通过连接
C、输出***D、输出$$$
10、为了避免在嵌套的条件语句if-else中产生二义性,C语言规定else子句总是与配对。
A、缩排位置相同的ifB、其之前最近的if
C、其之后最近的ifD、同一行上的if
11、以下程序的运行结果是。
Main()
{intk=4,a=3,b=2,c=1;
printf(“\n%d\n”,kk:
c
c:
a);}
A、4B、3C、2D、1
12、以下程序所表示的分段函数是。
#include“stdio.h”
Main()
{intx,y;
Printf(“Enterx:
”);
Scanf(“%d”,&x);
y=x>=0?
2*x+1:
0;
printf(“x=%d:
f(x)=%d”,x,y);
}
0(x<=0)0(x>=0)
A、f(x)=B.f(x)=
2x+1(x>0)2x+1(x<0)
2x+1(x<0)0(x<0)
C.f(x)=D.f(x)=
0(x>=0)2x+1(x>=0)
13、C语言中的语句形式如下所示,关键字switch后一对圆括号中表达式exp的类型。
Switch(exp)
{case常量表达式1:
语句1;
…
case常量表达式n:
语句n;
default:
语句n+1;
}
A、可以是整型或字符型B、只能是int类型
C、只能是字符型D、只能是整型或实型
二、填空题
1、当a=3,b=2,c=1时;表达式f=a>b>c的值是。
2、在C语言中,表示逻辑“真”值用。
3、C语言提供的3种逻辑运算符是、、。
4、若x、y、z均为int型变量,则描述“x或y中有一个小于z”的表达式是。
5、将以下两条if语句合并成一条if语句为。
语句1:
if(a>b)scanf(“%d”,&a);
Elsescanf(“%d”,&b);
语句2:
if(a<=b)m++;
Elsen++;
6、以下程序a对应的数学表达式是;程序b对应的数学表达式是。
程序a:
程序b:
#include“stdio.h”#include“stdio.h”
Main()Main()
{inaa,b;{inaa,b;
scanf(“%d”,&a);scanf(“%d”,&a);
if(a<0)b=-1;b=0;
elseif(a==0)if(a!
=0)
b=0;if(a>0)b=1;
elseb=1;elseb=-1;
printf(“a=%d,b=%d\n”,a,b);printf(“a=%d,b=%d\n”,a,b);
}}
7、若运行时输入:
16<回车>,则以下程序的运行结果是。
#include“stdio.h”
Main()
{intyear;
Printf(“inputyouyear:
”);
Scanf(“%d”,&year);
If(year>=18)
Printf(“you$4.5yuan/xiaoshi”);
Else
Printf(“your$3.0yuan/xiaoshi”);
}
8、以下程序的功能是:
输入圆的半径r和运算标志m后,按照运算标志进行如下表中指定的计算。
请填空。
运算标志与计算
运算标志m
计算
a
面积
c
周长
b
二者均计算
#definepi3.14159
Main()
{charm;
floatr,c,a;
printf(“inputmarkacorb&&r\n”);
scanf(“%c%f”,&m,&r);
if
{a=pi*r*r;printf(“areais%f”,a);}
if
{c=2*pi*r;printf(“circleis%f”,c);}
if
{a=pi*r*r;c=2*pi*r;printf(“area&&circleare%f%f”,a,c);}
}
9、若运行时输入:
5999<回车>,则以下程序的运行结果(保留小数点后一位)是。
main()
{intx;
floaty;
scanf(“%d”,&x);
if(x>=0&&x<=2999)y=18+0.12*x;
if(x>=3000&&x<=5999)y=36+0.6*x;
if(x>=6000&&x<=10000)y=54+0.3*x;
printf(“%6.1f”,y);
}
10、以下程序的功能是:
输出x.y.z三个数中的最大者。
请填空。
main()
{intx=4,y=6,z=7;
int;
ifu=x;
elseu=y;
ifv=u;
elsev=z;
printf(“v=%d”,v);
}
11、以下程序的功能是:
输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是一个小写字母,则把它变成大写字母;其他字符不变。
请填空。
main()
{charch;
scanf(“%c”,&ch);
ifch=ch+32;
elseif(ch>=`a`&&ch<=`z`)
printf(“%c”,ch);
}
12、若运行以下程序时输入字符为Q,则程序的运行结果是。
main()
{charch;
Scanf(“%c”,&ch);
ch=(ch>=`A`&&ch<=`Z`)?
(ch+32):
ch;
ch=(ch>=`a`&&ch<=`z`)?
(ch-32):
ch;
printf(“%c”,ch);
}
13、以下程序的功能是计算x.y.z三个数中的最小值。
请填空。
main()
{intx=4,y=5,z=8;
intu,v;
u=x;
v=u;
printf(“%d”,v);
}
14、若有以下程序段,且grade的值为C,则输出结果是。
Switch(grade)
{case`A`:
printf(“85~100\n”);
case`B`:
printf(“70~84\n”);
case`C`:
printf(“60~69\n”);
case`D`:
printf(“<60\n”);
default:
printf(“error!
\n”);
}
15、以下程序段的输出结果是。
intx=1,y=0;
switch(x)
{case1:
switch(y)
{case0:
printf(“**1**\n”);break;
case1:
printf(“**2**\n”);break;
}
case2:
printf(“**3**\n”);
}
五、
一、选择题
1、设有程序段:
intk=10;
while(k=0)k=k-1;
则下面描述中正确的是。
A、while循环执行10次B、循环是无限循环
C、循环体语句一次也不执行D、循环体语句执行一次
2、语句while(!
E);中的表达式!
E等价于。
A、E==0B、E!
=1C、E!
=0D、E==1
3、下面程序段的运行结果是。
A=1;b=2;c=2;
While(a
Printf(“%d,%d,%d”,a,b,c);
A、1,2,0B、2,1,0C、1,2,1D、2,1,1
4、下面程序的功能是将从键盘输入的一对数,由小到大排序输出。
当输入一对相等数时结束循环,请选择填空。
#include
Main()
{inta,b,t;
Scanf(“%d%d”,&a,&b);
While()
{if(a>b)
{t=a;a=b;b=t;}
Printf(“%d,%d\n”,a,b);
Scanf(“%d%d”,&a,&b);
}
}
A、!
a=bB、a!
=bC、a==bD、a=b
5、下面程序的功能是从键盘输入的一组字符中统计出大写字母的个数和小写字母的个数,并输出中的较大者,请选择填空。
#include
Main()
{intm=0,n=0;
Charc;
While(
(1)!
=`\n`)
{if(c>=`A`&&C<`Z`)m++;
if(c>=`a`&&C<`z`)n++;
}
Printf(“%d\n”,m2);
}
(1)A、c=getchar()B、getchar()
C、c=getchar()D、scanf(“%c”,c)
(2)A、n:
mB、m:
nC、m:
mD、n:
n
6、下面程序的功能是在输入的一批正整数中求出最大者,输入0结束循环,请选择填空。
#include
main()
{inta,max=0;
scanf(“%d”,&a);
while()
{if(maxscanf(”%d”,&a);
}
printf(“%d”,max);
}
A、a==0B、aC、!
a==1D、!
a
7、下面程序的运行结果是。
#include
Main()
{intnum=0;
while(num<=2)
{num++;
printf(“%d\n”,num);
}
}
A、1B、1C、1D、1
222
33
4
8、若运行以下程序时,从键盘输入2473<回车>,则下面程序的运行结果是。
#include
Main()
{intc;
while((c=getchar())!
=`\n`)
switch(c-`2`)
{case0:
case1:
putchar(c+4);
case2:
putchar(c+4);break;
case3:
putchar(c+4);
default:
putchar(c+2);break;
}
printf(“\n”);
}
A、668977B、668966C、66778777D、6688766
9、以下程序段的功能是计算一个整数的各位数字之和,请选择填空。
Intn,m=1;
Scanf(“%d”,&n);
For(;n!
=0;)
{m;
n/=10;
}
Printf(“%d”,m);
A、+=n%10B、=n%10C、+=nD、=n/10
10、以下能正确计算1
2
3
…
10的程序段是。
A、doB、do
{i=1;s=1;{i=1;s=0;
s=s*i;s=s*i;
i++;i++;
}while(i<=10);}while(i<=10);
C、i=1;s=1;D、i=1;s=0;
dodo
{s=s*i;{s=s*i;
i++;i++;
}while(i<=10);}while(i<=10);
11、以下程序段。
X=-1;
Do
{x=x*x;}while(!
x);
A、是死循环B、循环执行二次
C、循环执行一次D、有语法错误
12、以下描述中正确的是。
A、while、do-while、for循环中的循环体语句都至少被执行一次B、do-while循环中,while(表达式)后面的分号可以省略
C、while循环体中,一定要有能使while后面表达式的值变为“假”的操作
D、do-while循环中,,根据情况可以省略while
13、下面程序的运行结果是。
#include
Main()
{inty=10;
do{y--;}while(--y);
printf(“%d\n”,y--);
}
A、-1B、1C、8D、0
14、下面有关for循环的正确描述是。
A、for循环只能用于循环次数已经确定的情况
B、for循环是先执行循环体语句,后判断表达式
C、在for循环中,不能用break语句跳出循环体
D、for循环的fo循环体语句中,可以包含多条语句,但必须用花括号括起来
15、对for(表达式1;;表达式3)可理解为。
A、for(表达式1;0;表达式3)
B、for(表达式1;1;表达式3)
C、for(表达式1;表达式1;表达式3)
D、for(表达式1;表达式3;表达式3)
16、若为i整型变量,则以下循环执行次数是。
For(i=2;i==0;)printf(“%d”,i--);
A、无限次B、0次C、1次D、2次
17、以下for循环的执行次数是。
For(x=0,y=0;(y=123)&&(x<4);x++);
A、是无限循环B、循环次数不定C、执行4次D、执行3次
18、以下不是无限循环的语句为。
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;
19、下面程序段的运行结果是。
for