级非计算机专业C语言练习题集1文档格式.docx
《级非计算机专业C语言练习题集1文档格式.docx》由会员分享,可在线阅读,更多相关《级非计算机专业C语言练习题集1文档格式.docx(31页珍藏版)》请在冰豆网上搜索。
A.-20B.-10C.0D.10
13、表达式:
(int)((double)9/2)-(9)%2的值是()。
A.0B.3C.4D.5
14.intx=5,y=14;
则表达式x+7/y+0.6值为()。
A.7.1B.5.6C.6.6D.6.1
15、C语言中运算对象必需是整型的运算符是()。
A./B.%C.*D.+
16、表达式3.6-5/2+1.2+5%2的值是()。
A.4.3B.4.8C.3.3D.3.8
17、C语言中,数字029是一个()。
A.不合法数字B.十进制数C八进制数D十六进制数
18、设有定义:
intk=0;
以下选项的四个表达式中与其他
三个表达式的值不相同的是()。
A.k++B.k+=1C.++kD.k+1
19、下列C语言运算符中优先级最低的是()。
A.++B.=C.-D.&
&
20、若有定义语句:
inta=3,b=2,c=1;
以下选项中错误的赋值
表达式是()
A.a=(b=4)=3;
B.a=b=c+1;
C.a=(b=4)+c;
D.a=1+(b=c=4);
二、填空题:
1、若有定义intm=5,y=2;
,则计算表达式y+=y-=m*=y后的
y值是。
2、若s是int型变量,且s=6,则表达式s%2+(s+1)%2的值
为。
3、若a是int型变量,则表达式a+3.5/3.5-(int)4.8的类型
4、若a是int型变量,则计算表达式a=25/3%3后a的值为。
5、若x和n均是int型变量,且x和n的初值均为5,则计算
表达式x+=n++后x的值为,n的值为。
6、若有定义:
charc=‘\010’;
则变量c中包含的字符个数为。
7、若有定义:
intx=3,y=2;
floata=2.5,b=3.5;
则表达
式(x+y)%2+(int)a/(int)b的值为。
三、程序阅读题:
1、以下程序的输出结果是。
#include<
stdio.h>
main()
{intx=97;
chary=’b’;
printf(“%c,%d”,x,y);
}
2、以下程序的输出结果是。
{intx=6;
x+=x-=x*x;
printf(“x=%d\n”,x);
3、以下程序的输出结果是。
{inti=1,j;
j=-i++;
printf(“%d\n”,j)
;
4、有以下程序,运行后的输出结果是。
main()
{chara='
a'
b;
printf("
%c,"
++a);
%c\n"
b=a++);
}
5、以下程序的输出结果是。
main()
{inti=0,j=0,a=6;
if((++i>
0)||(++j>
0))
a++;
printf("
%d,%d,%d"
i,j,a);
第二单元选择结构练习题
1、若a是数值类型,则逻辑表达式(a==1)||(a!
=1)的值是()。
2、有以下程序运行时,输入的值在哪个围才会有输出结果()。
main(){
scanf("
%d"
&
x);
if(x<
=3);
elseif(x!
=10)
printf("
%d\n"
x);
A.不等于10的整数B.大于3且不等于10的整数
C.大于3或等于10的整数D.小于3的整数
3、在嵌套使用if语句时,C语言规定else总是()。
A.和之前与其具有相同缩进位置的if配对
B和之前与其最近的if配对
C.和之前与其最近的且不带else的if配对
D.和之前的第一个if配对
4、希望当num的值为奇数时,表达式的值为“真”,num的值
为偶数时,表达式的值为“假”,则以下不能满足的表达式是()。
A.num%2==1B.!
(num%2==0)C.!
(num%2)D.num%2
5、若有定义:
并有表达式:
①a%b,②a>
b>
c,
③b&
c+1,④c+=1,则表达式值相等的是()。
A)①和②B)②和③C)①和③D)③和④
6、以下程序片段。
intx=2,y=3;
printf(“%d,%d”,x+2,y);
A)输出为:
2,3B)输出为:
4,3
C)输出为:
23D)输出为:
43
7、能正确表示“当x的取值在[1,10]或[200,210]围为
真,否则为假”的表达式是。
A)(x>
=1)&
(x<
=10)&
(x>
=200)&
=210)
B)(x>
=1)||(x<
=10)||(x>
=200)||(x<
C)(x>
D)(x>
8、若inti=10;
执行下列程序后,变量i的正确结果是。
switch(i){
case9:
i+=1;
case10:
case11:
default:
A)10B)11C)12D)13
9、下面是错误的if语句(设intx,a,b;
)
A)if(a=b)x++;
B)if(a=<
b)x++;
C)if(a-b)x++;
D)if(x)x++;
11.以下程序片段。
main()
{intx=1,y=2;
if(x>
y)printf(“***”);
elseprintf(“###”);
A)有语法错误,不能通过编译B)输出:
***
C)可以编译,但不能通过连接,所以不能运行D)输出:
###
12.对下述程序,是正确的判断。
{intx,y;
scanf(“%d,%d”,&
x,&
y);
y)
x=y;
y=x;
else
x++;
y++;
printf(“%d,%d”,x,y);
A)有语法错误,不能通过编译B)若输入3和4,则输出4和5
C)若输入4和3,则输出3和4D)若输入4和3,则输出4和5
13、有以下程序运行时,输入的值在哪个围才会有输出结果()。
scanf("
=10)printf("
A.不等于10的整数B.大于3且不等于10的整数
14.下述表达式中,()可以正确表示x≤0或x≥1的关系。
=0)B)x>
=1|x<
=0
C)x>
=1&
x<
=0D)(x>
=0)
15.以下程序输出结果是。
{intx=1,y=0,a=0,b=0;
switch(x){
case1:
switch(y){
case0:
a++;
break;
case1:
b++;
case2:
b++;
break;
case3:
printf(“a=%d,b=%d”,a,b);
A)a=1,b=0B)a=2,b=1C)a=1,b=1D)a=2,b=2
16.当a=1,b=3,c=5,d=4时,执行完下面一段代码后x的值是。
if(a<
b)
if(c<
d)x=1;
else
c)if(b<
d)x=2;
elsex=3;
elsex=6;
elsex=7;
A)1B)2C)3D)4
17.在下面的条件语句中(其中S1和S2表示C语言语句),
只有一个在功能上与其他三个语句不等价。
它是()
A)if(a)S1;
elseS2;
B)if(a==0)S2;
elseS1;
C)if(a!
=0)S1;
D)if(a==0)S1;
18.若inti=10;
1.C语言提供6种关系运算符,按优先级高低它们分别是________,________,________,________,________,________等。
2.C语言提供三种逻辑运算符,按优先级高低它们分别
是________,________,________。
3.将条件“y能被4整除但不能被100整除,或y能被400整
除”写成逻辑表达式________
。
4.设x,y,z均为int型变量;
写出描述“x,y和z中有两个为负数”
的C语言表达式:
________
5.已知A=7.5,B=2,C=3.6,表达式A>
B&
C>
A||A<
!
C>
B的值是________。
6.有intx=3,y=-4,z=5;
则表达式(x&
y)==(x||z)的值为________。
7.C语言编译系统在给出逻辑运算结果时,以数值_________代
表“真”,以_________代表“假”;
但在判断一个量是否为“真”时,
以_________代表“假”,以_________代表真。
8.表示“整数x的绝对值大于5”时值为“真”的C语言表达
式是____.
9.若x为int类型,请以最简单的形式写出与!
x等价的C语言
表达式_____.
10.如果不考虑条件表达式语句,很多情况下,多分支选择结构
既可以通过if语句来实现,也可以通过语句来实现。
三、读程题:
1.以下程序的输出结果是。
main()
{inta=1,b=0;
if(!
a)b++;
elseif(a==0)if(a)b+=2;
elseb+=3;
printf(”%d\n”,b);
}
2.写出以下程序的运行结果。
{inta=2,b=7,c=5;
switch(a>
0){
switch(b<
printf(“”);
printf(“!
”);
case0:
switch(c==5){
pritnf(“*”);
printf(“#”);
printf(“&
printf(“\n”);
3.以下程序的输出结果是。
main()
{inta=100;
if(a>
100)printf("
a<
=100);
elseprintf("
4、以下程序的输出结果是。
{inti;
for(i=0;
i<
3;
i++)
{switch(i)
{case1:
i);
case2:
default:
}}}
5、以下程序的输出结果是。
0))a++;
第三单元循环结构练习题
选择题:
1、有以下程序执行后的输出结果是()。
{inti,s=0;
for(i=1;
10;
i+=2)s+=i+1;
s);
}
A.自然数1~9的累加和B.自然数1~10的累加和
C.自然数1~9中的奇数之和D自然数1~10中的偶数之和
2、以下关于for语句的说法不正确的是()。
A.for循环只能用于循环次数已经确定的情况
B.for循环是先判断表达式,后执行循环体语句
C.for循环中,可以用break跳出循环体
D。
for循环体语句中可保含多条语句,但要用花括号括起来
3、若i和k都是int类型变量,有以下for语句
for(i=0,k=-1;
k=1;
k++)printf("
*****\n"
);
下面关于语句执行情况的叙述中正确的是()。
A.循环体执行两次B.循环体执行一次
C.循环体一次也不执行D.构成无限循环
4、设有以下程序段
intx=0,s=0;
while(!
x!
=0)s+=++x;
则
A)运行程序段后输出0B)运行程序段后输出1
C)程序段中的控制表达式是非法的D)程序段执行无限次
5、设i,j,k均为int型变量,则执行完下面的for语句后
k的值为()for(i=0,
j=10;
=j;
i++,
j-
-)
k=i+j;
A.6B.9C.10D.11
6、C语言中,break;
语句可以用于循环语句和()语句中。
A.ifB.switchC.forD.while
7、for(i=0;
i<
=15;
i++)printf("
i);
循环结束后,
i的值为()。
A.14B.15C.16D.17
8、与语句“while(!
x)”等价的语句是()。
A.while(x==0)B.while(x!
=0)C.while(x==1)D.while(x!
=1)
9、以下程序中,while循环的次数是()。
voidmain()
{inti=0;
while(i<
10){if(i<
1)continue;
if(i==5)break;
i++;
}}
A.1B.死循环,不能确定次数C.6D.10
10.下面程序段
intk=2;
while(k=0){printf(“%d”,k);
k--;
则下面描述中正确的是。
A)while循环执行10次B)循环是无限循环
C)循环题语句一次也不执行D)循环体语句执行一次
A)无限次B)0次C)1次D)2次
11.下面程序的功能是在输入的一批正数中求最大者,输
入0结束循环,选择填空。
{inta,max=0;
scanf(“%d”,&
a);
while(){if(max<
a)max=a;
scanf(“%d”,&
printf(“%d”,max);
A)a==0B)aC)!
a==1D)!
a
12.下述程序段的运行结果是inta=1,b=2,c=3,t;
while(a<
b<
c){t=a;
a=b;
b=t;
c--;
}printf(“%d,%d,%d”,a,b,c);
A)1,2,0B)2,1,0C)1,2,1D)2,1,1
13.以下不是死循环的语句是。
A)for(y=9,x=1;
x>
++y;
x=i++)i=x;
B)for(;
;
x++=i);
C)while
(1){x++;
D)for(i=10;
i--)sum+=i;
14.下述语句执行后,变量k的值是。
intk=1;
while(k++<
10);
A)10B)11C)9D)无限循环,值不定
25.以下程序段。
x=-1;
do
{x=x*x;
while(!
A)是死循环B)循环执行2次C)循环执行1次D)有语法错误
1.以下程序的输出结果是。
{inti,a[6]={2,3,4,5,6,7};
6;
i+=2)
%d"
a[i]);
2.写出下面程序运行的结果。
{inti=5;
for(;
5;
)
{i++;
if(i%4==0)
printf(“%-2d”,i);
elsecontinue;
3.写出下面程序运行的结果。
{inta,b;
for(a=1,b=1;
a<
=100;
a++){
if(b>
=20)break;
if(b%3==1){b+=3;
continue;
b-=5;
printf(“%d\n”,a);
4.写出下面程序运行的结果。
{intk=1,n=263;
do{k*=n%10;
n/=10;
}while(n);
printf(“%d\n”,k);
5.若执行以下程序时从键盘上输入3和4,则输出结果是。
{inta,b,s;
%d%d"
a,&
b);
s=a;
if(a<
b)s=b;
s*=s;
6.写出下面程序运行的结果。
main()
{inti;
for(i=1;
{
if(i%3)i++;
++i;
printf(“%d”,i);
四、编程题:
第四部分数组练习题
1、下列选项中,能正确定义数组的语句是()。
A.intnum[0..2008];
B.intnum[];
C.intN=2008;
D.#defineN2008
intnum[N];
intnum[N];
2、以下数组定义中错误的是()。
A.intx[][3]={0};
B.intx[2][3]={{1,2},{3,4},{5,6}};
C.intx[][3]={{1,2,3},{4,5,6}};
D.intx[2][3]={1,2,3,4,5,6};
3、若有说明数组“inta[3][4]”,则以下对数组a的正确引
用是()。
A.a[2][4]B.a[1,3]C.a[1+1][0]D.a
(2)
(1)
4、若有定义语句:
chars[10]="
1234567\0\0"
则strlen(s)的值是()。
A.7B.8C.9D.10
5、以下程序程序的执行后的输出结果是()。
{inti,t[][3]={9,8,7,6,5,4,3,2,1};
for(i=0;
i++)printf(“%d”,t[2-i][i]);
A.753B.357C.369D.751
6、有以下语句:
intb;
charc[10];
,则正确的输入语句是()。
A.scanf("
%d%s"
b,&
c);
B.scanf("
b,c);
C.sscanf("
b,c);
D.scanf("
b,&
7、有以下程序段
charname[20];
intnum;
name=%snum=%d"
name;
num);
当执行上述程序段,并从键盘输入:
name=aaanum=2012<
回车>
后,name的值为_______。
A)aaaB)name=aaaC)aaanum=2012D)name=aaanum=2012
8、有以下程序
{chara[30],b[30];
%s"
a);
gets(b);
prin