学c语言时候有一个switch语句老是报错,怎么办?

来源:百度知道 编辑:UC知道 时间:2024/05/31 20:10:14
在编写一个奖金问题的时候运用了子函数,在子函数里调用了switch语句,可是编译的时候vc始终报错,希望高手能帮帮忙解答一下。
谢谢哦~
题见谭浩强《C语言程序设计》P82-4.7

我的程序如下:(子函数部分)
double caseswitch (double i)
{
double s;
double k;
if (i>1000000)
k=10;
else k=i/100000;

switch (k)
{
case 0: s=0.1*i; break;
case 1: s=0.1*100000+0.75*(i-100000); break;
case 2:
case 3: s=0.1*100000+0.75*100000+0.05*(i-200000); break;
case 4:
case 5: s=0.1*100000+0.75*100000+0.05*200000+0.03*(i-400000); break;
case 6:
case 7:
case 8:
case 9: s=0.1*100000+0.75*100000+0.05*200000+0.03*200000+0.015*(i-600000); break;
case 10: s=0.1*100000+0.75*100000+0.05*200000+0.03*200000+0.015*400000+0.01*(i-1000000); break;
default:printf ("Error.\n");
}

printf ("Use caseswitch.");
return s;
}

报错是在"{"的时候,“error C2050: switch expression not integral”

应该把 double 都换成 int
就可以了

错误信息很明显啊,switch的表达式必须是整型的,你的k是double型,当然不行.

对啊
switch控制式必须是整型或字符型的啊
int 或char

switch expression not integral(switch表达式不是整型)

变量定义错误。