c语言如何跳回前面的某一个点重新从那里开始运行?
【A】
for(i=1; i<=n; 【B】 i++)
{
a
.......
b
.......
c
}
当程序运行到b处时,我想跳回至【A】处,而不是【B】处,应该怎么做?
continue是回到【B】处吧?
break貌似跳出后就执行后面的程序了。。。。。 展开
用goto语句。
#include<stdio.h>
void main()
{
int a;
begin: scanf("%d", &a); // goto语句的标号begin
if(a<0 || a>9)
goto begin; // 如果用户输入的数不在0~9之间,则重新输入
eles
printf("%d\n", a); // 如果用户输入的数在0~9之间,则输出该数
}
扩展资料:
goto的基本语法
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i = 1;
while(1)
{
printf("在while(1)里\n");
while(i++)
{
printf("i = %d\n",i);
if(i > 3)
{
goto TiaoChu;
}
}
}
TiaoChu:
printf("程序结束\n");
return 0;
}
运行结果:
标号位置
在while(1)里
2
3
4
程序结束
C语言中goto关键字可以实现跳转执行的功能。
goto语句是一种无条件转移语句,其使用格式如下:
goto 语句标号;
举例说明如下:
#include<stdio.h>
void main()
{
int a;
begin: scanf("%d", &a); // goto语句的标号begin
if(a<0 || a>9)
goto begin; // 如果用户输入的数不在0~9之间,则重新输入
eles
printf("%d\n", a); // 如果用户输入的数在0~9之间,则输出该数
}
推荐于2017-09-11
begin:
【A】
for(i=1; i<=n; 【B】 i++)
{
a
.......
b
goto begin;
.......
c
}
方法2: 借用循环语句。
int b = 0;
do{
【A】
/* if(b == 1) b = 0; */
for(i=1; i<=n; 【B】 i++)
{
a
.......
b
b = 1;
.......
c
}
}while(b!=0);
方法3: 用longjmp远程跳转。方法1和方法2只适用于函数内,方法3支持在不同函数之间跳转,但是代码会看起来更加难以理解,所以强烈不推荐!
#include <setjmp.h>
jmp_buf env;
setjmp(env);
for(i=1; i<=n; 【B】 i++)
{
a
.......
b
longjmp(env, 10);
.......
c
}
b处是在一个for循环内,“continue是回到【B】处吧?”嗯,continue是跳出本次循环,即结束本次循环。
“break貌似跳出后就执行后面的程序了。。。。。”break语句是结束整个循环,当然这里说的是break语句所在的循环体,这里为for循环。
说说:goto 语句是跳出多层循环。。
跳回至【A】处,设置一个标号就行了,用goto语句就可以跳过去,但一般都不使用goto语句的,不利于程序的规程。
【A】处,不知道,你具体想干什么,但是你可以写个函数实现某种功能,在b处调用他就行了嘛!
#include"stdio.h"
int main(void)
{
int n=0;
printf("input a string :\n");
loop: if(getchar()!='\n')
{
n++;
goto loop;
}
printf("%d",n);
}
例如输入:ahifhoaishfoasdfkasg
然后回车Enter
输出:20
大概就是这样 中间的是我在百度上找到的