一、Goto语句的详细讲解
goto语句为无条件转向语句,它的一般形式为: goto 语句标号;
例:用if语句和goto语句构成循环,求1-100的累加和。
main()
{
int i,sum=0;
i=1;
loop:if(i<=100)
{
sum=sum+i;
i++;
goto loop;
}
printf("%d\n",sum);
}
二、Break
break语句除用于退出switch结构外,还可用于由while、 do…while和for构成的循环结构中。当执行循环体遇到break 语句时,break所在循环将立即终,从循环语句后的第一条语 句开始继续往下执行。 break语句的一般形式如下: break ;
看一道例题:
判断任意一个数是否为素数。
算法描述:
(1)接收用户输入的m的值;
(2)循环变量赋初值i ← 2, 循环条件i <= m-1,循环变量i++, 循环执行以下语句: 如果m能被i整除,则结束循环。
(3)循环结束后判断m与i的关系,如果m等于i,则输出m是素数。否则输出m不是素数。
#include <stdio.h>
int main()
{
int m,i;
scanf("%d",&m);
for(i=2; i<=m-1; i++)
{
if(m%i==0)
break;
}
if(i==m)
printf(“%d 是素数\n",m);
else
printf(“%d不是素数\n",m);
}
Continue语句的详细讲解:
continue语句与break语句不同,当在循环体中遇到 continue语句时,程序将不执行continue语句后面尚未执 行的语句,开始下一次循环,即只结束本次循环的执行, 并不终止整个循环的执行。 continue语句的一般形式如下: continue ;
把100~120之间不能被3整除的整数输出。
#include <stdio.h>
int main()
{
int n;
for(n=100; n<=120; n++)
{
if(n%3==0)
continue;
printf("%d ",n);
}
return 0;
}
接下来通过一道综合例题全面理解:
统计选票。现有选票如下:3,1,2,1,1,3,3,2,1, 2,3,3,2,1,1,3,2,0,1,4,-1。-1是结束标志。设1 选李,2选张,3选王,0和4为废票,问谁会当选?
//FileName: chap3_38.c
#include <stdio.h>
int main()
{
int vote,lvote=0, zvote=0,
wvote=0, invalidvote=0;
printf("请输入投票情况:");
scanf("%d",&vote);
while(vote!=-1)
{
switch(vote)
{
case 1: lvote++; break;
case 2: zvote++; break;
case 3: wvote++; break;
case 0:
case 4: invalidvote++;
}
scanf("%d",&vote);
}
printf("Li: %2d, Zhang: %2d, Wang: %2d, Invalid: %2d", lvote, zvote, wvote,invalidvote);
return 0;
}