当我运行我的程序时,它要求输入命令,当您输入 a、b 或 c 时,它会提示您根据您选择的值给出字母。列出的任何其他命令都会显示统计信息。我的小问题是,当我输入有效命令时,会弹出“无效命令”警告,即使它有效
#include <stdio.h>
int main(void)
{
double a = 0;
double b = 0;
double c = 0;
double d = 0;
double e = 0;
double f = 0;
double g = 0;
double h = 0;
double i = 0;
char command = '\0';
printf("\n Welcome\n");
printf(" Aquapodz Stress Analysis Program\n");
printf(" ==================================\n");
while (command != 'x');
{
printf("\n\n(a), (b), or (c), enter trial data for vendor.\n(f)ail-rate, (m)ean stress, (s)ummary, e(x)it\n");
printf("Please enter a command");
scanf("%c", &command);
if (command == 'a')
{
printf("Please enter stress values (GPa) for this trial.");
scanf("%lf", &a);
scanf("%lf", &b);
scanf("%lf", &c);
}
else if (command == 'b')
{
printf("Please enter stress values (GPa) for this trial.");
scanf("%lf", &d);
scanf("%lf", &e);
scanf("%lf", &f);
}
else if (command == 'c')
{
printf("Please enter stress values (GPa) for this trial.");
scanf("%lf", &g);
scanf("%lf", &h);
scanf("%lf", &i);
}
else if (command == 'f')
{
printf("Average failure rate:\nAzuview:%f\nBublon:%f \nCryztal:%f\n", a+b+c, d+e+f, g+h+i);
}
else if (command == 'm')
{
printf("Average mean stress:\nAzuview:%f\nBublon:%f\nCryztal:%f\n", a+b+c/3, d+e+f/3, g+h+i/3);
}
else if (command == 's')
{
print("Total (pass / fail) so far:\nAzuview:%f(%f/0)\nBublon:%f(%f/0) \nCryztal:%f(%f/0)\n", a+b+c, a+b+c, d+e+f, d+e+f, g+h+i, g+h+i);
}
else if (command == 'x')
{
}
else
{
printf("Invalid Command! Please Try Again :)");
}
}
printf("Goodbye, Please Come Again!");
return 0;
}
最佳答案
scanf("%c", &command);
是问题所在。您最终会读取上次调用 scanf
时留下的换行符。使用
scanf(" %c", &command);
关于代码运行,但说无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31346415/