c语言goto怎么回事

#include<stdio.h>#include<time.h>main(){inti,n[4];srand(time(NULL));n[0]=rand()%10;n[... #include<stdio.h>
#include <time.h>
main()
{
int i,n[4];
srand( time(NULL) );
n[0]=rand()%10;
n[1]=rand()%10;
for( i = 0; i < 20;i++ )
{
n[2]=n[1]+n[0];
loop:
printf("%d+%d=",n[0],n[1]);
scanf("%d",n[3]);

if(n[3]==n[2])
{
printf( "right!" );
}
else
{
printf( " error!\n重新输入" );
goto loop;
}
}
}
展开
 我来答
百度网友6fa3859
推荐于2018-03-04 · TA获得超过3349个赞
知道小有建树答主
回答量:1148
采纳率:85%
帮助的人:426万
展开全部

    goto语句是C语言中的跳转命令。使用方法:

goto label;

    label为本函数中声明的一个标号,执行goto后,跳转到该标号指定行处继续执行。

    一般来说,很多书都不推荐使用goto,不过很多书都给了一些很牵强的理由。在某些情况下需要使用goto,比如跳出多重循环。

    但是goto不能滥用,主要缺点有这几个:①影响程序可读性  ②影响程序执行效率。分支语句会对指令预取造成很大的影响,而且跳转的位置有时分支预测单元可能预测不到。常用的跳转语句如if、for等,对这点影响都很小,但是goto不同,一个较长的跳转可能给指令预取单元带来很大的麻烦。

    所以说,不要滥用goto,除非你确定它不会给你造成麻烦。

cys99437
2013-01-02 · 超过29用户采纳过TA的回答
知道答主
回答量:160
采纳率:0%
帮助的人:102万
展开全部
goto 后面一般有个标记变量 这里是loop当执行到goto loop;时就跳到标记loop:并执行loop:后面的语句
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
飞峰亦耻
2013-01-02 · TA获得超过205个赞
知道小有建树答主
回答量:311
采纳率:0%
帮助的人:121万
展开全部
goto易跳过对变量的初始化,而变量的初始化,只要在它的作用域内,就必须保证对其进行初始化,,,, ,这是在c 的限制,,,,,,c语言木有这样的限制 可以这样使用,对追问的解答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
492924696lin
推荐于2017-11-25 · TA获得超过220个赞
知道小有建树答主
回答量:321
采纳率:0%
帮助的人:182万
展开全部
少了个头文件和取地址符,还有函数初始化位置不对,下面是正确的程序,最后说一句,在c语言中尽量不要使用goto语句,因为这个语句会限制人们的思想的
#include<stdio.h>
#include <stdlib.h>
#include <time.h>
main()
{
int i,n[4];
for( i = 0; i < 20;i++ )
{
srand( time(NULL) );
n[0]=rand()%10;
n[1]=rand()%10;
n[2]=n[1]+n[0];
loop:
printf("%d+%d=",n[0],n[1]);
scanf("%d",&n[3]);
if(n[3]==n[2])
{
printf( "right!\n" );
}
else
{
printf( " error!\n重新输入" );
goto loop;
}
}
}
追问
首先,非常感谢,然后不用goto用什么重复执行呢,goto有什么问题
追答
不用goto的话可以用其他语句代替,比如for,while,具体情况的话看实际是什么,goto的话不是这个语句有问题,而是多用这个语句的话会限制你的思想,越到后面越难写出好程序
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
孤星泪ZZ
2013-01-02 · 超过26用户采纳过TA的回答
知道答主
回答量:70
采纳率:33%
帮助的人:25.1万
展开全部
就是返回到loop下面的内容。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式