我必须编写一个程序,人们可以选择几何图形并计算它们的体积或面积。
当用户选择不正确的输入时,它会给出错误信息(请再次选择号码)。但是,当用户选择任何字母时,此输入将导致程序永远循环。我怀疑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;
}
答案 0 :(得分: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);
希望它能帮助!!