Loops 修复无限循环的困难
我必须写一个程序,人们可以选择几何图形并计算它们的体积或面积 当用户选择不正确的输入时,它会给他们一条错误消息(请再次选择数字)。但是,当用户选择任何字母时,此输入将导致程序永远循环。我怀疑Loops 修复无限循环的困难,loops,forever,Loops,Forever,我必须写一个程序,人们可以选择几何图形并计算它们的体积或面积 当用户选择不正确的输入时,它会给他们一条错误消息(请再次选择数字)。但是,当用户选择任何字母时,此输入将导致程序永远循环。我怀疑goto语句是问题的一部分,我不知道没有它怎么写这个程序。有人能帮我吗 #include <stdio.h> #include<stdlib.h> int main(void) { int a,i; float r,h,s,ya,kk,uk; float pi=22/7.0; g:pr
goto
语句是问题的一部分,我不知道没有它怎么写这个程序。有人能帮我吗
#include <stdio.h>
#include<stdlib.h>
int main(void)
{
int a,i;
float r,h,s,ya,kk,uk;
float pi=22/7.0;
g:printf("number pls\n");
printf("cylinder:1\sphere:2\ncube:3\nrectangle:4\npyramid:5\n");
scanf("%d",&a);
switch(a)
{
case 1: i=1;
e:printf("%d.h pls ",i);
scanf("%f",&h);
printf("%d.r pls ",i);
scanf("%f",&r);
ya=pi*r*r;
s=ya*h;
printf("%d.: %.2f'\n\n\n",i,s);
i=i+1;
goto e;
break;
case 2: i=1;
d:printf("%d.r\n",i);
scanf("%f",&r);
s=(4/3.0)*pi*r*r*r;
printf("%d.: %.2f \n\n",i,s);
i=i+1;
goto d;
break;
case 3: i=1;
c:printf("%d.kk pls\n",i);
scanf("%f",&kk);
s=kk*kk*kk;
printf("%d.: %.2f dir\n\n\n",i,s);
i=i+1;
goto c;
break;
case 4: i=1;
b:printf("%d.kk pls ",i);
scanf("%f",&kk);
printf("%d.uk pls ",i);
scanf("%f",&uk);
printf("%d.h pls ",i);
scanf("%f",&h);
s=kk*uk*h;
printf("%d. %.2f \n\n",i,s);
i=i+1;
goto b;
break;
case 5:
a: printf("%d.kk pls",i);
scanf("%f",&kk);
printf("%d.uk pls",i);
scanf("%f",&uk);
printf("%d.h pls",i);
scanf("%f",&h);
ya=kk*uk;
s=(1/3.0)*ya*h;
printf("%d.%.2f \n\n\n",i,s);
goto a;
break;
default: printf("ERROR pls choose number again.\n");
goto g;
}
return 0;
}
#包括
#包括
内部主(空)
{
int a,i;
浮动r、h、s、ya、kk、英国;
浮点数pi=22/7.0;
g:printf(“编号请\n”);
printf(“圆柱体:1\sphere:2\ncube:3\nrectangle:4\npyramid:5\n”);
scanf(“%d”和“&a”);
开关(a)
{
案例1:i=1;
e:printf(“%d.h pls”,i);
扫描频率(“%f”、&h);
printf(“%d.r pls”,i);
scanf(“%f”、&r);
ya=pi*r*r;
s=ya*h;
printf(“%d.:%.2f'\n\n\n”,i,s);
i=i+1;
转到e;
打破
案例2:i=1;
d:printf(“%d.r\n”,i);
scanf(“%f”、&r);
s=(4/3.0)*pi*r*r*r;
printf(“%d.:%.2f\n\n”,i,s);
i=i+1;
转到d;
打破
案例3:i=1;
c:printf(“%d.kk pls\n”,i);
scanf(“%f”和&kk);
s=kk*kk*kk;
printf(“%d.:%.2f dir\n\n\n”,i,s);
i=i+1;
后藤c;
打破
案例4:i=1;
b:printf(“%d.kk pls”,i);
scanf(“%f”和&kk);
printf(“%d.uk pls”,i);
scanf(“%f”和英国);
printf(“%d.h pls”,i);
扫描频率(“%f”、&h);
s=kk*uk*h;
printf(“%d.%.2f\n\n”,i,s);
i=i+1;
后藤b;
打破
案例5:
a:printf(“%d.kk pls”,i);
scanf(“%f”和&kk);
printf(“%d.uk pls”,i);
scanf(“%f”和英国);
printf(“%d.h pls”,i);
扫描频率(“%f”、&h);
ya=kk*英国;
s=(1/3.0)*ya*h;
printf(“%d.%.2f\n\n\n”,i,s);
转到a;
打破
默认值:printf(“错误,请再次选择数字。\n”);
后藤g;
}
返回0;
}
printf("cylinder:1\sphere:2\ncube:3\nrectangle:4\npyramid:5\nexit:6\n");
scanf("%d",&a);
do{
switch(a)
{
case 1: //code goes here
break;
case 2: //code goes here
break;
.
.
.
.
case 6: break;
}
}while(a!=6);
希望能有帮助 好吧,由于
goto
,您的所有交换机案例都包含无限循环。作为一个经常使用的提示:不要使用goto
。无需转到即可使一切正常运行。然而,在这种情况下,我甚至不知道使用goto
s会发生什么。你需要一个停止循环的条件,否则你的goto
s就像一样,而(true)
是的,我的所有开关都包含无限循环,但我想要它。我认为用户可以不止一次地计算结果。如果你有空,请写下代码,先输入2或3,然后输入a或任何字母。你会明白我的问题。两者都不同。谢谢你的回复