为了账号安全,请及时绑定邮箱和手机立即绑定

以下语法中出现的goto是怎么回事?麻烦帮忙解释以下!

以下语法中出现的goto是怎么回事?麻烦帮忙解释以下!

C
慕后森 2021-09-20 14:10:13
#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;}}}
查看完整描述

3 回答

?
红颜莎娜

TA贡献1842条经验 获得超12个赞

少了个头文件和取地址符,还有函数初始化位置不对,下面是正确的程序,最后说一句,在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;
}
}
}



查看完整回答
反对 回复 2021-09-23
?
九州编程

TA贡献1785条经验 获得超4个赞

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

1goto label;

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

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

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

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



查看完整回答
反对 回复 2021-09-23
?
RISEBY

TA贡献1856条经验 获得超5个赞

可以看一下这个:
#include<stdio.h>

#include <stdlib.h>
#include <time.h>
int fun(int a,int b,int c)
{
int d;
printf( " error!\n请重新回答:" );
printf("%d+%d=",a,b);
scanf("%d",&d);
if(d==c)
return 0;
else
return 1;
}
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];
printf("%d+%d=",n[0],n[1]);
scanf("%d",&n[3]);
if(n[3]==n[2])
{
printf( "right!\n" );
}
else
{
while(fun(n[0],n[1],n[2]));
printf( "right!\n" );
}
}
}



查看完整回答
反对 回复 2021-09-23
  • 3 回答
  • 0 关注
  • 238 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信