【发布时间】:2021-11-19 19:41:37
【问题描述】:
我正在制作一个简单的 C 程序,它会询问您的年龄和性别。如果您的性别不是 M 或 F,程序将要求输入不同的输入。如果您的年龄小于零,程序将需要另一个输入。这是我的代码:
#include<stdio.h>
int main(){
int a;
char g;
entry:
printf("%s","AGE : ");
scanf("%d", &a);
getchar();
insert:
printf("%s","GENDER :");
scanf("%s", &g);
getchar();
while (a < 0){
goto entry;
}
switch(g){
case 'M':{
printf("I am a %d yr old male", a);break;
}
case 'F':{
printf("I am a %d yr old female", a);break;
}
default:{
goto insert; break;
}
}
return 0;
}
这是一个程序运行的例子
年龄:21
性别:男
我是一个0岁的男性
【问题讨论】:
-
goto在 C 程序中有适当的用途。您对它的使用不是其中之一。使用for、while或do...while来实现循环。 -
更喜欢使用
fgets来读取用户的输入行。然后使用 sscanf 或 strtok 或其他字符串处理技术从行中提取值。这可以防止 scanf 卡住或留下部分行的问题。 -
作为 UI 说明,假设两个最常见的性别适用于每个人将导致一些用户极度沮丧。
标签: c while-loop switch-statement repeat