C语言分支和循环结构1.docx
《C语言分支和循环结构1.docx》由会员分享,可在线阅读,更多相关《C语言分支和循环结构1.docx(13页珍藏版)》请在冰点文库上搜索。
C语言分支和循环结构1
C语言(分支和循环结构)
1.以下程序输出结果是()
main()
{intm=5;
if(m++>5)printf("%d\n",m);
elseprintf("%d\n",m--);
A)7B)6C)5D)4
2以下程序的输出结果为()
#include
main()
{inti=0,j=0,a=6;
if((++i>0)&&(++j>0))a++;
printf("i=%d,j=%d,a=%d\n",i,j,a);}
A)i=0,j=0,a=6B)i=1,j=1,a=7
C)i=1,j=0,a=7D)i=0,j=1,a=7
3有如下程序
main()
{inta=2,b=-1,c=2;
if(a
if(b<0)c=0;
elsec++;
printf("%d\n",c);
}
该程序的输出结果是()
A)0B)1C)2D)3
4若i为int型,且有程序如下,则输出结果是()
i=111;
if(i%3==0)
printf("####");
printf("****");
A)####B)****C)####****D)无输出结果
5若运行时x=12,则运行结果为()
{intx,y;
scanf("%d",&x);
y=x>12?
x+10:
x-12;
printf("%d\n",y);}
A)0B)22C)12D)10
6以下程序的输出结果是()
main()
{inti=0,j=0,k=6;
if((++i>0)||(++j>0))k++;
printf("%d,%d,%d\n",i,j,k);
}
A)0,0,6B)1,0,7C)1,1,7D)0,1,7
7若变量都已正确说明,则以下程序段输出为()
inta=1,b=2,c=3;
if(a>b)
a=b;
b=c;
c=a;
printf("a=%db=%dc=%d\n",a,b,c);
A)a=1b=2c=1B)a=1b=2c=3
C)a=1b=3c=1D)a=2b=3c=2
8当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是()
if(a
if(celse
if(aif(belsex=3;
elsex=6;
elsex=7;
A)1B)2C)3D)6
9以下不正确的语句为()
A)if(x>y);
B)if(x==y)&&(x!
=0)x+=y;
C)if(x!
=y)scanf("%d",&x);elsescanf("%d",&y);
D)if(x10有以下程序:
#include"stdio.h"
main()
{chari;
for(;(i=getchar())!
='\n';)
{switch(i-'a')
{case0:
putchar(i);
case1:
putchar(i+1);break;
case2:
putchar(i+2);
case3:
break;
default:
putchar(i);break;
}
}
printf("\n");
}
输入下列数据后,程序的输出结果是()
abcde
A)abcdeB)abcee
C)abbdeD)abccdd
11若a、b、c1、c2、x、y、均是整型变量,正确的switch语句是()
A)switch(a+b);B)switch(a*a+b*b)
{case1:
y=a+b;break;{case3:
case0:
y=a-b;break;case1:
y=a+b;break;
}case3:
y=b-a,break;
}
C)switchaD)switch(a-b)
{case1:
y=a-b;break{
case2:
x=a*d;breakcasec1:
case4:
x=a+b;break;
default:
x=a+b;casec2:
case11:
y=a-b;break;
}default:
y=a*b;break;
}
12写出下面程序输出结果()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:
a++;
case1:
b++;}
case2:
a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
A)a=2,b=1B)a=1,b=1C)a=1,b=0D)a=2,b=2
13C语言的for语句中的表达式可以部分或全部省略,但两个()不可省略。
但当三个表达式
均省略后,因缺少判断条件,循环会无限制地进行下去,形成死循环。
A)
14下面有关for循环的正确描述是()。
A)for循环只能用于循环次数已经确定的情况
B)for循环是先执行循环体语句,后判定表达式
C)在for循环中,不能用break语句跳出循环体
D)for循环体语句中,可以包含多条语句,但要用花括号括起来
15以下程序段()。
x=-1;
do
{x=x*x;}
while(!
x)
A)是死循环B)循环执行2次C)循环执行一次D)有语法错误
16如下的数组中,数组array占用的内存空间是()个字节。
chararray[]={'c','h','i','n','a'};
A.1B.5C.6D.不确定
17设有程序段
intk=10;
while(k=0)k=k-1;
则下面描述正确的是()。
A)while循环执行10次B)循环是无限循环
C)循环体语句一次也不执行D)循环体语句执行一次
18下列程序段的运行结果是()
intn=0;
while(n++<3);
printf("%d",n)
A.2B.3C.4D.以上都不对
19设有程序段
t=0;
while(printf("*"));
{t++;
if(t<3)break;
}
下面描述正确的是()。
A)其中循环控制表达式与0等价B)其中循环控制表达式与'0'等价
C)其中循环控制表达式是不合法的D)以上说法都不对
20下面程序的运行结果是()。
#include
main()
{inty=10;
do{y--;}while(--y);
printf("%d\n",y--);
}
A)-1B)1C)8D)0
21以下程序段的输出结果是().
main()
{inti=5;
for(;i<=15;)
{i++;
if(i%4==0)printf("%d",i);
elsecontinue;}
}
A.81216B.812C.1216D.8
22以下不是无限循环的语句为()。
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;
23有如下语句
intx=3;
do
{printf("%d\n",x-=2);}while(!
(--x));
则上面程序段()
A.输出的是1B.输出的是1和-2
C.输出的是3和0D.是死循环
24以下不是无限循环的是()
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--)s+=i;
25以下正确的描述是()。
A)continue语句的作用是结束整个循环的执行
B)只能在循环体内和switch语句内使用break语句
C)在循环体内使用break语句或continue语句的作用相同
D)从多层循环嵌套中退出时,只能使用goto语句
26以下程序输出结果为()
#include"stdio.h"
main()
{inti,b,k=0;
for(i=1;i<=5;i++)
{b=i%2;
while(b-->=0)k++;}
printf("%d,%d\n",k,b);
}
A.3,-1B.8,-1C.3,0D.8,-2
27以下程序段中循环体总的执行次数是()
inti,j;
for(i=7;i;i--)
for(j=0;j<6;j++)
{......}
A)42B)21C)13D)36
28以下不正确的描述是()
A.break语句不能用于循环语句和switch语句外的任何其他语句
B.在switch语句中使用break语句或continue语句的作用相同
C.在循环语句中使用continue语句是为了结束本次循环,而不是终止整个循环的执行
D.在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环
1else语句总是和靠它最近的if匹配。
2switch语句中一定有default分支
3case后只能跟常量,不能跟变量
4break语句的作用就是结束本层循环。
5do-while语句构成的循环不能用其它语句构成的循环来代替。
6用do-while语句构成循环时,只要while后的表达式为0时就结束循环。
7for(表达式1;表达式2;表达式3)中,表达式1和表达式3不能同时都是逗号表达式。
8for循环中,如果表达式2为空,则该循环一定是死循环。
9while循环的while()后没有分号,而do-while循环的while()后一定要有一个分号。
10for(i=0,j=10;i<=j;i++,j--)k=i+j;执行完后,k的值为50。
1若a、b均为int型变量,且a=100,则以下的for循环是死循环.
for(b=100;a!
=b;++a,b++)printf("----\n");
执行语句:
for(i=1;i++<4;++i);后;变量i的值是5。
2以下程序的运行结果是【】
main()
{intx,y,z;
x=1;y=2;z=3;
x=y--<=x||x+y!
=z;
printf("%d,%d",x,y);
}
3以下程序的运行结果是【】
main()
{intx,y,z;
x=1;y=1;z=0;
x=x||y&&z;
printf("%d,%d",x,x&&!
y||z);
}
4以下程序的运行结果是【】
main()
{inta,b,c;
ints,w=0,t;
a=-1;b=3;c=3;
if(c>0)s=a+b;
if(a<=0)
{if(b>0)
if(c<=0)w=a-b;
}
elseif(c>0)w=a-b;
elset=c;
printf("%d,%d,%d\n",s,w,t);
}
5阅读下面程序:
main()
{ints,t,a,b;
scanf("%d%d",&a,&b);
s=1;
t=1;
if(a>0)s=s+1;
if(a>b)t=s+t;
elseif(a==b)t=5;
elset=2*s;
printf("s=%d,t=%d",s,t);
}
6为了使输出结果t=4,输入量a和b应满足的条件是【】
7下面程序的功能是在输入的一批整数中求出最大者,输入0结束循环。
#includemain()
{inta,max=0;
scanf("%d",&a)
while(【 】){if(maxscanf("%d",&a);
}
printf("%d",max);
}
8执行下面的程序段后,k值是【 】。
k=1;n=263;
do{k*=n%10;n/=10;}while(n);
9等差数列的第一项a=2,公差d=3,下面程序的功能是在前n项和中,输出能被4整除的所有的和。
请填空。
#include
main()
{inta,d,sum;
a=2;d=3;sum=0;
do
{sum+=a;
a+=d;
if(【 】)printf("%d\n",sum);
}while(sum<200);
}
10鸡兔共有30只,脚共有90个,下面程序段是计算鸡兔各有多少只,请填空。
for(x=1;x<=29;x++)
{y=30-x;
if(【 】)printf("%d,%d\n",x,y);
}
11写出下面程序的运算结果【 】。
#include
main()
{inta=14,b=63;
while(a!
=b)
{while(a>b)a-=b;
while(a
}
printf("%d\n",a);
}
12下列程序的输出为【 】。
#include
main()
{
inti,j,x=0;
for(i=0;i<3;i++)
{if(i%3==2)break;
x++;
for(j=0;j<4;j++)
{if(j%2)break;
x++;
}
x++;
}
printf("x=%d\n",x);
}