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

#include"stdio.h"main(){inta;intb;intc;intd;inte;intf;intg;inth;inti;intj;intk;printf... #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 请教啊 我是菜鸟请详细回答 谢谢了
谢谢了谢谢了谢谢了谢谢了 电脑上显示最多只能给100分,我想多给不知道怎么整啊
展开
 我来答
yhs0104
2008-11-24
知道答主
回答量:13
采纳率:0%
帮助的人:0
展开全部
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); }
}
}
}
a62517741
2008-11-24 · TA获得超过468个赞
知道小有建树答主
回答量:334
采纳率:100%
帮助的人:488万
展开全部
先帮你把程序给改了。首先,你的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 ; //加的
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
高金山
2008-11-24 · TA获得超过1万个赞
知道大有可为答主
回答量:4101
采纳率:0%
帮助的人:1727万
展开全部
专家建议:不要用goto!

error C2094: label 'end' was undefined
标签“end”没有定义。

goto,是跳转的指令,必须指明跳转的位置,也就是标签,比如:

#include <stdio.h>

int main()
{
int sum=0,i=0;

loop:///////////这里就是一个标签
i++;
sum=sum+i;
if(i<100)
goto loop;/////这里是要跳到loop这个标签

printf("sum=%d\n",sum);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
杰的记事本
2008-11-24 · TA获得超过255个赞
知道小有建树答主
回答量:418
采纳率:0%
帮助的人:232万
展开全部
#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语句不建议使用,请用另一种编程方式。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
03013110
2008-11-24 · TA获得超过529个赞
知道小有建树答主
回答量:1216
采纳率:0%
帮助的人:393万
展开全部
end没定义阿,你写哪了?

你这个用法的goto还是不要得好…goto会把堆栈弄乱,如果是return前goto一下也就罢了,你这个来回跳,还不断循环跳…
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式