}
12.循环
(1)for语句中的条件表达式缺省,则条件为永“真”。
(例子)设e1和e3是表达式,与语句for(e1;;e3)s;等同的语句是_____。
A.for(e1;e1;e3)sB.for(e1;e3;e3)s
C.for(e1;0;e3)sD.for(e1;1;e3)s
(2)while(或for)与do-while的区别,循环体执行的次数
(3)循环的执行次数
(例子)设有循环语句:
for(inti=0,x=0,s=0;i<=9&&x!
=55;i++)
{
scanf(“%d”,&x);
s+=x;
}
在这个循环语句中,循环体最多执行为____次,最少执行_____次。
答案:
101
(例子)执行以下语句时,循环的次数是:
for(intx=0,y=0;!
x&&y<=5;y++);正确的程序是这样
A.无次数B.0C.5D.6
(例子)执行以下语句时,循环的次数是:
for(intx=0,y=0;!
x&&y<=5;y--);
A.无次数B.0C.5D.6
答案:
我们习题汇编中给出的答案是A,
省考试中心给出的标准答案是D(我们题目录入错误)
实际上此题在C语言环境中无正确答案,循环次数应该是32769次。
y实际变化的过程是:
y=0(0000000000000000)
y=-1(1111111111111111)
y=-2(1111111111111110)
…
y=-32768(-215)其内存内容是:
(1000000000000000)
再次减1,发生溢出(即比int型数值的下限还要小),y变为:
(0111111111111111)
值为32767(215-1)即int型数值的上限。
此y<=5不成立,循环结束。
为了验证了上述观点,修改上述程序:
#include
main()
{
intx,y;
longcount=0;//count用于统计循环次数
for(x=0,y=0;!
x&&y<=5;y--)count++;
printf("%ld\n",count);
}
输出:
32769
13.嵌套循环,循环中的break,continue
(例子)有一种只在循环语句或switch语句中使用的流程控制语句,表示该语句的关键字是__________
(例子)//判断一个二维数组是否关于主对角线对称
voidmain(void)
{
inta[4][4]={1,2,3,4,2,2,5,6,3,5,2,7,4,6,7,4};
1234
2256
3527
4674
inti,j,flag=0;
for(j=0;j<4;j++)
for(i=0;i<=j;i++)
{
if(a[j][i]==a[i][j])continue;//流程转到哪里?
Continue跳过下面的语句
flag=1;
}
if(flag)cout<<"No!
"<elsecout<<"AllRight!
"<}
输出:
AllRight!
(例子)程序输出为:
______
#include
voidmain()
{inti,j,sum=0;
for(i=0;i<5;i++)
for(j=0;j<6;j++)
{
sum++;
if(i==3)break;//break跳出哪一个循环?
}
cout<120-1
3-2-30
40-55
-6607
}
输出:
25,5,6
(例子16)
#include
voidmain(void)
{inta[4][4]={{1,2,0,-1},{3,-2,-3,0},{4,0,-5,5},{-6,6,0,7}};
for(inti=0,s=0;i<4;i++)
for(intj=0;j<4;j++)
{
if(a[i][j]<0)continue;
if(a[i][j]==0)break;
s+=a[i][j];
}
cout<
}
程序的输出是______________。
输出:
16
(例子)
voidmain()
{intx=3,y=6,a=0;
while(x++!
=(y-=1))//注意:
比较时,x,y的值
{a+=1;//比较后,x,y的值
if(y}
cout<<"x="<}
A)x=4,y=4,a=1B)x=5,y=5,a=1
C)x=5,y=4,a=3D)x=5,y=4,a=1
(例子)程序读入最多20个数,统计正数个数,并计算正数之和。
要求或者输入0结束,或者若已读入20个数自动结束。
请填空。
#include
voidmain()
{
inti,a[20],sum,count;
sum=count=0;
for(i=0;;i++)
{
if(i>19)____________;//break;
cin>>a[i];
if(a[i]==0)____________;//break;
if(a[i]<0)____________;//continue;
sum+=a[i];
count++;
}
cout<<"sum="<}
14.函数原型说明,函数调用,函数的返回值
(例子)下列关于C++函数的叙述中,正确的是______
A)每个函数至少要具有一个参数
B)每个函数都必须返回一个值
C)函数在被调用之前必须先声明
D)函数不能自己调用自己
(例子)下列叙述中,不正确的是:
A.一个函数中可以有多个return语句
B.函数可通过return语句返回数据
C.必须用一个独立的语句来调用函数
D.函数main也可以带有参数
【解析】函数调用可以作为表达式的一部分,如y=4+f(x);
(例子)在以下的函