c语言习题讲解.docx
《c语言习题讲解.docx》由会员分享,可在线阅读,更多相关《c语言习题讲解.docx(17页珍藏版)》请在冰豆网上搜索。
![c语言习题讲解.docx](https://file1.bdocx.com/fileroot1/2022-11/25/6eac83f5-37a5-4ff3-b84c-56415479a6dd/6eac83f5-37a5-4ff3-b84c-56415479a6dd1.gif)
c语言习题讲解
1.下列选项中,合法的C语言整型常量是()
A.087B.5LC.(long)123456D.1.23e+2
2.以下不合法的常量是()
A.'\6'B.""C.'\286'D"\286"
3.表达式strlen("\\\"AAA\123\xAA\t")的值为()
A.8B.17C.14D.10
4.已知'a'的ASCII码值为97,以下程序输出的结果是()
#include
main()
{
chara='A';
intb=20;
printf("%d,%o",(a=a+1,a+b,b),a+'a'-'A',b);
}
A.66,141B.20,141C.20,141,20D.66,97
5.
#include
main()
{
intx=34;
floaty=45.98;
printf("%6D,%6.2F",x,y);
}
6.下列程序输出结果是()
main()
{
inta=1,b=2,c=3,k;
k=a+++b+++c++;
printf("\n%d,%d,%d,%d",a,b,c,k);
A.1,2,3,6
B.2,3,4,6
C.1,3,3,7
D.1,3,3,6
7.以下()有语法错误的if语句。
A.if(3.54)
B.if(a!
=b)printf("%d",a)elseprintf("%d",b);
C.if('s'&&s)s++;
D.if(!
a)printf("%d",a);
8.输入数据:
-1(回车),以下程序的输出是()
A.x=0,y=-1;
B.x=-1,y=0;
C.x=0,y=1;
D.x=1,y=0;
9假设inta,b,c,w;且a和b均已被赋值,同时满足条件:
a
Scanf(“%d”,&c);
W=a;
If(w<=b)w=b;
If(w<=c)printf(“%d”,w);
Elsew=c;
A.b>cB.b<=cC.c>a且c答案:
B
3.18运行一下程序时,输入数据:
abcdabc再回车,输出为()
#include“stdio.h”
Main()
{
Inta1=0,a2=0,a3=0;
Charc;
While((c=getchar())!
=’\n’)
Switch(c)
{
Case‘a’:
a1++;
Case‘b’:
a2++;
Default:
a3++;’
}
Printf(“%d,%d,%d”,a1,a2,a3);
}
A.2,4,7B.2,2,1C.2,4,1D.2,2,7
答案:
A
3.19对循环语句:
for(表达式1;表达式2;表达式3)语句,一下叙述正确的是()
A.for语句中的三个表达式一个都不能少
B.for语句中的循环体至少要被执行一次
C.for语句中的循环体可以是一个复合语句
D.for语句只能用于循环次数已经确定的情况
答案:
C
3.20执行完循环语句for(i=1;i++<10);后,变量i的值是多少?
循环体被执行了几次?
A.i的值是8,循环体执行了9次。
B..i的值是9,循环体执行了10次。
C..i的值是10,循环体执行了10次。
D..i的值是11,循环体执行了9次。
答案:
D
3.21一下程序段执行后,叙述正确的是()
IntI;
For(i=1;;i++);
Printf(“%d”,i++);
A.输出1,B.输出2C.输出3D.死循环
答案:
D
3.22一下程序的输出结果是()
main()
{
Inty=9;
For(;y>0;y--)
If(y%3==0)
Printf(“%d”,--y);
}
A.741B.852C.963D.87521
答案:
B
3.23若x,y是int型变量,则执行以下语句后x的值是()
For(y=1,x=1;y<=50;y++)
{
If(x>=10)break;
If(x%2==1)
{
X+=5;continue;
}
x-=3;
}
A.1B.6C.7D.10
答案:
D
3.24对一下程序段,描述正确的是()
Intk=10;
While(k=0)k=k-1;
A.循环体执行了10次
B.循环是无限循环
C.循环体语句一次也不执行
D.循环体语句执行了一次
答案:
C
3.25对以下程序段,描述正确的是()
Intk=10;
While(k>0)
Printf(“%d”,k);
K=k-1;
A.循环体被执行了10次
B.循环是无限循环
C.循环体一次也不执行
D.循环体语句执行了一次
答案:
B
3.26下面程序的运行结果是()
Main()
{
IntI,j,k,x=0;
For(i=0;i<2;i++)
{
X++;
For(j=0;j<3;j++)
{
If(j%2)continue;
X++;
}
X++;
}
K=i+j;
Printf(“k=%d,x=%d\n”,k,x);
}
A.K=8,X=4
B.K=5,X=8
C.K=3,X=6
D.K=8,X=12
答案:
B.
3.27假设chargrade=’A’;则以下程序段的执行结果是()
Switch(grade)
{
Case‘A’;
Case‘B’:
Case‘C’:
printf(“>=60pass!
\n”);
Case‘D’:
printf(“<60\n”);
Default:
printf(“error!
\n”);
}
答案:
>=60pass!
<60
Error!
3.28以下程序段的运行结果是()
Main()
{
Inta=2,b=7,c=5;
Switch(a>0)
{
Case1:
switch(b<0)
{
Case1:
printf(“@”);break;
Case2:
printf(“!
”);break;
}
Case0:
switch(c==5)
{
Case0:
printf(“*”);break;
Case1:
printf(“#”);break;
Default:
printf(“#”);break;
}
Default:
printf(“&”);
}
Printf(“\n”);
}
答案:
#&
3.29以下程序实现:
输入三个整数,按从大到小的顺序输出,请填空。
Main()
{
Intx,y,z,T;
Scanf(“%d%d%d”,&x,&y,&z);
If(x{
T=x;x=y;y=T;
}
If(
)
{
T=x;x=z;z=t;
}
If(y{
}
Printf(“%d,%d,%d”,x,y,z);
}
答案:
xt=y;y=z;z=t;
3.30为了输出如下图形,请在程序处填入合适的内容。
*****
*****
*****
*****
*****
Main()
{
IntI,j;
For(i=1;i<6;i++)
{
For(j=1;j<6;j++)
__
__;
__
__;
}
}
答案:
printf(”*”)
printf(“\n”)
为了输出如下图形,请在程序处填入合适的内容。
*
***
*****
*******
*********
Main()
{
IntI,j;
For(i=1;i<6;i++)
{
For(j=1;j<10-1;j++);
Printf(“”);
For(j=1;j<=___;j++)
Printf(“*”);
Printf(“\n”);
}
}
答案:
2*i-1
3.32若变量a,i已正确定义,且i已正确赋值,下列合法的语句是()
A.a==1B++I;C.a=a++=5;D.a=int(i);
答案:
B
3.36已知:
Intt=0;
While(t=1)
{…….}
则以下叙述正确的是________
A.循环控制表达式的值为0
B.循环控制表达式的值为1
C.循环控制表达式不合法
D.以上说法都不对
答案:
B
3.38下面程序的输出结果是___
Main()
{
Intx=1,a=0,b=0;
Switch(x)
{
Case0:
b++;
Case1:
a++;
Case2:
a++;b++;
}
Printf(“a=%d,b=%d\n”,a,b);
}
A.a=2,b=1B.a=1,b=1C.a=1,b=0Da=2,b=2
答案:
A
3.39下面程序的输出结果是_____
Main()
{
Inti=1,j=1,k=2;
If((j++||k++)&&i++)
Printf(“%d,%d,%d\n”,I,j,k);
}
A.1,1,2B.2,2,1C.2,2,2D.2,2,3
答案C
3.40下面程序的输出结果是:
___
Main()
{
Intn=9;
While(n>6)
{
n--;
printf(“%d”,n);
}
}
A.987B.876C.8765D.9876
答案:
B
3.41在下面选项中,没有构成死循环的是__
A.inti=100;
Whiel
(1)
{
I=i%100+1;
If(i>100)break;
}
B.for(;;);
C.intk=10000
do
{
K++;
}while(k>10000);
D,ints=36;
While(s)
--s;
答案:
D
3.42若运行一下程序,输入ADescriptor在回车,则下面的程序运行结果是______
#include
Main()
{
Charc;
Intv0=1,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’:
v1+=1;
Default:
v0+=1;v2+=1;
}
}
While(c!
=’\n’);
Printf(“v0=%d,v1=%d,v2=%d\n”,v0,v1,v2);
}
A.v0=7,v1=4,v2=7
B.v0=8,v1=4,v2=8
C.v0=11,v1=4,v2=11
D.v0=13v1=4v2=12
答案:
D
3.44以下程序段的描述正确的是___
X=-1;
Do
{
X=x*x;
}
While(!
x)
A.是死循环
B.循环执行两次
C.循环执行一次
D.有语法错误
答案:
c
3.45在下述程序中,判断i>j共执行的次数是____
Main()
{
Inti=0,j=10,k=2,s=0;
For(;;)
{
I+=k;
If(i>j)
{
Prntf(“%d”,s);
Break;
}
S+=I;
}
}
A.4
B.7
C.5
D.6
答案:
D
3.46下面程序的功能是把316表示为两个数的和,是两个加数分别能被13和11整除,请…选择填空
#include
Main()
{
Inti=0,j,k;
Do
{
I++;
K=316-13*I;
}
While(_____);
Printf(“316=13*%d+11*%d”,I,j);
}
A.k/11B.k%11C.k/11==0D.k%11==0
答案:
B
3.47下面程序的运行结果是___
#include
Main()
{
Inta=1,b=10;
Do
{
b-=a;a++;
}
While(b--<0);
Printf(“a=%d,b=%d\n”,a,b);
}
A.a=3,b=11
B.a=2,b=8
C.a=1,b=-1
D.a=4,b=9
答案:
B
3.48下面程序的运行结果是____
Main()
{
Intx=23;
Do
{
Printf(“%d”,x--);
}
While(!
x);
}
A.321
B.23
C.不输出任何内容
D.陷入死循环
答案:
B
3.49下面程序的运行结果是____
Main()
{
Inta=2,b=-1,c=2;
If(a
If(b<0)c=0
Elsec++;
Printf(“%d\n”,c);
}
A.0B.1C.2D.3
答案:
C
3.50执行完语句for(i=1;i++,4;);以后,变量i的值是___
A.3B.4C.5D.不定
答案:
c
3.46有一堆零件(100到200之间),如果分成4个零件一组的若干组,则多2个,若分成7个零件一组,则多3个,若分成9个零件一组,则多5个。
填写程序
#include
Main()
{
IntI;
For(i=100;i<200;i++)
If((i-2)%4==0)
If(!
((i-3)%7))
If(_____)
Printf(“%d”,i);
}
A.i%9=5
B.i%9!
=5
C.(i-5)%9!
=0
D.(i-5)%9==0
答案:
D
3.50以下程序的功能是从键盘输入若干学生的成绩,并输出最高成绩和最低成绩,当输入负数时结束,请填空。
Main()
{
Floatx,amax,amin;
Scanf(“%f”,&x);
Amax=x;
Amin=x;
While(__
__)
{
If(x>amax)
Amax=x;
Else
If(__
___)
Amin=x;
Else
Scanf(“%f”,&x);
}
Printf(“\namax=%f\namin=%f\n”,amax,amin);
}
答案:
x>0
x3.56下列程序的功能是输入一个整数,判断是否是素数,若为素数输出1,否则输出0
Main(0
{
IntI,x,y=1;
Scanf(“%d”,&x);
For(i=2;i<=x/2;i++)
If______
{
Y=0;
Break;
}
Printf(“%d\n,”y);
}
答案:
(x%i==0)
3.57下面程序的运行结果是____
Main()
{
Inty=9;
For(;y>0;y--)
If(y%3==0)
{
Printf(“%d”,--y);continue;
}
}
答案:
852