【发布时间】:2021-08-18 11:52:17
【问题描述】:
我写了以下代码:
int main(void){
double (*func[]) (double) = {func1, func2, func3};
int option = 0;
double sum;
double result;
do{
scanf("%d", &option);
if(option == 3){
break;
}
scanf("%lf", &sum);
printf("%.2lf\n", result = (*func[option])(sum));
} while (option<10);
return 0;
但是当我输入 3 时,它期望另一个值并退出。 输入3后怎么破? 还有一个更好的 do-while-loop 表达式而不是 option
编辑:应该使用 scanf (不是我的选择) 有人问了一个例子(输入,输出):
选择一个选项:3 (什么都没有发生,直到我输入另一个值) 4 (这里退出)
【问题讨论】:
-
请edit 显示输入和预期输出的示例。
-
scanf很难正确,我强烈建议使用fgets将完整的行读取到临时缓冲区,然后从那里解析(例如,使用sscanf、strtol等.). -
只有边界检查
option才有意义。而且由于您出于某种原因正在使用带符号的数字,因此您必须在调用函数指针之前执行if(option >=0 && option <3)。 -
您检查过
option的实际值吗?使用调试器或简单的打印输出。 -
@TedLyngmo 说了什么。在 main 的开头引入一个随机序列的打印输出。如果你没看到,那就是泰德说的。
标签: c if-statement do-while break