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

请问我这样用GOTO语句对不对?为什么?

请问我这样用GOTO语句对不对?为什么?

HUWWW 2022-03-24 19:15:00
#include"stdio.h"main(){int a;int b;int c;int d;int e; int f;int g;int h;int i;int j;int k;printf("现在即将开始进行测验!\n退出程序请按1,继续请按任意键\n");scanf("%d",&a);if(a=1) goto end;else printf("现在开始测验啦!!!!!!\n");printf("\n");scanf("%d",&b);if(b=1) goto lp2;else {if(b=2) goto lp3;else goto lp4;}lp2: printf("2.\n");scanf("%d",&c);if(c=1) goto lp4;else goto lp3;lp3: printf("3.\n");scanf("%d",&d);if(d=1) goto lp4 ;else {if(d=2) goto lp5;else goto lp6;}lp4:printf("4.否\n");scanf("%d",&e);if(e=1) goto lp5;else goto lp6;lp5:printf("5.\n");scanf("%d",&f);if(f=1) goto lp6;else {if(f=2) goto lp7;else goto lp8;}lp6:printf("6\n");scanf("%d",&g);if(g=1) goto lp7;else goto lp8;lp7:printf("72否\n");scanf("%d",&h);if(h=1) goto lp9;else goto lp10;lp8:printf("8谓");scanf("%d",&i);if(i=1) goto lp9;else{if(i=2) goto lp10;else goto lp14;}lp9:printf("不是\n");scanf("%d",&j);if(j=1) goto lp12;else goto lp11;lp10: printf("是2否\n");scanf("%d",&k);if(k=1) goto lp12;else goto lp13;lp11:printf("A");lp12:printf("B");lp13:printf("C");lp14:printf("D");}如果不对请专家指正,另外编译时有点问题说error C2094: label 'end' was undefined 请教啊 我是菜鸟请详细回答 谢谢了
查看完整描述

3 回答

?
沧海一幻觉

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

1.这样用goto语句很不好!
2.错误的原因是为设置end标签.
3.程序中有低级错误,比较数据是否相等要用"==","="是用于赋值.
4.采用开关结合循环实现跳转程序如下:
#include"stdio.h"

int main()
{
int a,b,c,d,e,f,g,h,i,j,k;
char ch='0';

printf("现在即将开始进行测验!\n退出程序请输入1\n");
printf("a=");
scanf("%d",&a);
if(a==1) exit(1);/*退出*/

printf("现在开始测验啦!!!!!!\n");
ch='b';
while(ch!='0')
{
switch(ch)
{
case 'b':
{
scanf("%d",&b);
switch(b)
{
case 1: { ch='c'; break; }
case 2: { ch='d'; break; }
default: { ch='e'; break; }
}
}
case 'c':
{
printf("2.\n");
scanf("%d",&c);
switch(c)
{
case 1: { ch='e'; break; }
default: { ch='d'; break; }
}
break;
}
case 'd':
{
printf("3.\n");
scanf("%d",&d);
switch(d)
{
case 1: { ch='e'; break; }
case 2: { ch='f'; break; }
default: { ch='g'; break; }
}
break;
}
case 'e':
{
printf("4.否\n");
scanf("%d",&e);
switch(e)
{
case 1: { ch='f'; break; }
default: { ch='g'; break; }
}
break;
}
case 'f':
{
printf("5.\n");
scanf("%d",&f);
switch(f)
{
case 1: { ch='g'; break; }
case 2: { ch='h'; break; }
default: { ch='i'; break; }
}
break;
}
case 'g':
{
printf("6\n");
scanf("%d",&g);
switch(g)
{
case 1: { ch='h'; break; }
default: { ch='i'; break; }
}
break;
}
case 'h':
{
printf("72否\n");
scanf("%d",&h);
switch(h)
{
case 1: { ch='i'; break; }
default: { ch='j'; break; }
}
break;
}
case 'i':
{
printf("8谓");
scanf("%d",&i);
switch(i)
{
case 1: { ch='j'; break; }
case 2: { ch='k'; break; }
default: { ch='D'; break; }
}
break;
}
case 'j':
{
printf("不是\n");
scanf("%d",&j);
switch(j)
{
case 1: { ch='B'; break; }
default: { ch='A'; break; }
}
break;
}
case 'k':
{
printf("是2否\n");
scanf("%d",&k);
switch(g)
{
case 1: { ch='B'; break; }
default: { ch='C'; break; }
}
break;
}
case 'A': printf("A");
case 'B': printf("B");
case 'C': printf("C");
case 'D': printf("D");
default: { printf("\n测试结束\n"); exit(0); }
}
}
}



查看完整回答
反对 回复 2022-03-28
?
弑天下

TA贡献1818条经验 获得超8个赞

先帮你把程序给改了。首先,你的end没有写,我补充了end: return ;
其次,if语句中的判断符号==你写成了=。就这两个错误。其他没什么问题。
然后强烈建议不要使用goto语句,goto语句能实现的功能用其他的语句都能实现的。使用goto语句只会让读程序的人(包括自己)头昏眼花的。
#include"stdio.h"

void main()
{
int a;int b;int c;int d;int e; int f;int g;int h;int i;int j;int k;
printf("现在即将开始进行测验!\n退出程序请按1,继续请按任意键\n");

scanf("%d",&a);
if(a==1) goto end;

else printf("现在开始测验啦!!!!!!\n");

printf("\n");

scanf("%d",&b);

if(b==1) goto lp2;

else {if(b==2) goto lp3;

else goto lp4;}

lp2: printf("2.\n");

scanf("%d",&c);

if(c==1) goto lp4;

else goto lp3;

lp3: printf("3.\n");

scanf("%d",&d);

if(d==1) goto lp4 ;

else {if(d==2) goto lp5;
else goto lp6;}
lp4:printf("4.否\n");
scanf("%d",&e);
if(e==1) goto lp5;
else goto lp6;
lp5:printf("5.\n");
scanf("%d",&f);
if(f==1) goto lp6;
else {if(f==2) goto lp7;
else goto lp8;}
lp6:printf("6\n");
scanf("%d",&g);
if(g==1) goto lp7;
else goto lp8;
lp7:printf("72否\n");
scanf("%d",&h);
if(h==1) goto lp9;
else goto lp10;
lp8:printf("8谓");
scanf("%d",&i);
if(i==1) goto lp9;
else{if(i==2) goto lp10;
else goto lp14;}
lp9:printf("不是\n");
scanf("%d",&j);
if(j==1) goto lp12;
else goto lp11;
lp10: printf("是2否\n");
scanf("%d",&k);
if(k==1) goto lp12;
else goto lp13;
lp11:printf("A");
lp12:printf("B");
lp13:printf("C");
lp14:printf("D");
end: return ; //加的
}



查看完整回答
反对 回复 2022-03-28
?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

#include"stdio.h"

main()
{int a;int b;int c;int d;int e; int f;int g;int h;int i;int j;int k;
printf("现在即将开始进行测验!\n退出程序请按1,继续请按任意键\n");

scanf("%d",&a);
if(a=1) goto end;

else printf("现在开始测验啦!!!!!!\n");

printf("\n");

scanf("%d",&b);

if(b=1) goto lp2;

else {if(b=2) goto lp3;

else goto lp4;}

lp2: printf("2.\n");

scanf("%d",&c);

if(c=1) goto lp4;

else goto lp3;

lp3: printf("3.\n");

scanf("%d",&d);

if(d=1) goto lp4 ;

else {if(d=2) goto lp5;
else goto lp6;}
lp4:printf("4.否\n");
scanf("%d",&e);
if(e=1) goto lp5;
else goto lp6;
lp5:printf("5.\n");
scanf("%d",&f);
if(f=1) goto lp6;
else {if(f=2) goto lp7;
else goto lp8;}
lp6:printf("6\n");
scanf("%d",&g);
if(g=1) goto lp7;
else goto lp8;
lp7:printf("72否\n");
scanf("%d",&h);
if(h=1) goto lp9;
else goto lp10;
lp8:printf("8谓");
scanf("%d",&i);
if(i=1) goto lp9;
else{if(i=2) goto lp10;
else goto lp14;}
lp9:printf("不是\n");
scanf("%d",&j);
if(j=1) goto lp12;
else goto lp11;
lp10: printf("是2否\n");
scanf("%d",&k);
if(k=1) goto lp12;
else goto lp13;
lp11:printf("A");
lp12:printf("B");
lp13:printf("C");
lp14:printf("D");
end:
}
end没定义。在末尾加一个end标签,的确goto语句不建议使用,请用另一种编程方式。



查看完整回答
反对 回复 2022-03-28
  • 3 回答
  • 0 关注
  • 179 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号