语句标识:语句;
其中,“语句标识”可以是任一个合法的标识符,如 pos_1、pos_2、label_1、label_2 等都是合法的语句标识。注意,语句标识后的冒号不能省略。goto 语句标号;
程序将从对应“语句标号”的代码处开始往下执行。
#include<stdio.h>
int main (void){
int n;
pos_1:
printf("请输入一个正整数:");
scanf("%d",&n);
if(n<0)
{
printf("输入错误!\n");
goto pos_1;
}
printf("成功输入正整数:%d\n",n);
return 0;
}
代码分析:在上述程序代码中,有一个语句标号 pos_1。该程序的执行流程如下:
#include<stdio.h>
int main (void)
{
int n;
printf ("请输入一个正整数:");
scanf("%d",&n);
while(n<0)
{
printf ("输入错误!\n");
printf ("请输入一个正整数:");
scanf("%d",&n);
}
printf ("成功输入正整数:%d\n",n);
return 0;
}
使用 goto 语句可能会造成程序层次不清晰,可读性差,故在实际编程中,应尽量少使用或避免使用 goto 语句。
while (循环判断表达式)
{
...
if(条件表达式)
break;
循环体中break后的语句;
}
循环体后的第 1 条语句;
循环体后的第 2 条语句;
...
for (;循环判断表达式1;)
{
...
for(;循环判断表达式2;)
{
...
if(条件表达式)
break;
内层循环体中break后的语句;
}
内层循环结构后的第1条语句; 内层循环结构后的第2条语句;
...
}
#include<stdio.h>
int main (void)
{
int s=0,i;
for(i=1;i<=10;i++)
{
if (6==i)
break;
s+=i;
}
printf("sum=%d\n", s);
return 0;
}
当 i< 6时,均不执行 break 语句,可以将其忽略。即 i<6 时,等价于如下代码。
for(i=1;i<=10;i++)
{
s+=i;
}
相当于执行了加法运算 s=1+2+3+4+5=15。
for(初始表达式;循环判断表达式;增量表达式)
{
...
if(条件表达式)
continue;
循环体中continue后的所有语句;
}
#include<stdio.h>
int main (void)
{
int s=0,i;
for(i=1;i<=10;i++)
{
if(6==i)
continue;
s+=i;
}
printf("sum=%d\n",s);
return 0;
}
程序分析:
for(i=1;i<=10; i++)
{
s+=i;
}
即:s=1+2+3+4+5
版权说明:Copyright © 广州松河信息科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州松河信息科技有限公司 版权所有