如这个代码中的2个while
#include
#include
double twice(double x);
double half(double x);
double thrice(double x);
void showmenu(void);
#define NUM 4
int main(void)
{
double(*pf[NUM])(double) = { twice,half,thrice,sqrt };
double val;
double ans;
int sel;
puts("enter a number (negative to quit):");
while (scanf("%lf", &val) == 1 && val >= 0) //用户输入数值后,缓冲区剩个\n
{ //这中间我并没有加入读掉\n的代码
showmenu();
while (scanf("%d",&sel)&&sel>=0&&sel<=3) //然后用户再次输入,第一个读取的不应该是\n吗?为何程序完美调试?
{
ans = (*pf[sel])(val);
printf("answer=%f\n", ans);
ans = pf[sel](val);
printf("to repeat,answer=%f\n", ans);
showmenu();
}
puts("enter next number (negative to quit)");
}
puts("bye");
getchar();
getchar();
return 0;
}
double twice(double x)
{
return 2.0*x;
}
double half(double x)
{
return x/2.0;
}
double thrice(double x)
{
return 3.0*x;
}
void showmenu(void)
{
puts("enter one pf the following choices:");
puts("0)double the value 1)halve the value");
puts("2)triple the value 3)squareroot the value");
puts("4)next number");
}