C语言中switch case语句的问题
答案:6 悬赏:20 手机版
解决时间 2021-11-28 16:36
- 提问者网友:记得曾经
- 2021-11-28 01:17
C语言中switch case语句的问题
最佳答案
- 五星知识达人网友:笑迎怀羞
- 2021-11-28 02:56
# include
void main()
{
int I, k, a, b, c, d, e, f,g;
printf("请输入利润I:\n");
scanf("%d", &I);
a = I * (1.0f/10); //此处强制为浮点类型,不然a一直是0,看你的意思了
b = (I - 100000) * 75/1000;
c = (I - 200000) * 5/100;
d = (I - 400000) * 3/100;
e = (I - 600000) * 15/1000;
f = (I - 1000000) * 1/100;
g = (I - 1) / 100000;
switch(g)
{
case 0:
printf("奖金总数k=%d\n", a);
break;
case 1:
printf("奖金总数k=%d\n", a + b);
break;
case 2:
case 3:
printf("奖金总数k=%d\n", a + b + c);
break;
case 4:
case 5:
printf("奖金总数k=%d\n", a + b + c + d);
break;
case 6:
case 7:
case 8:
case 9:
printf("奖金总数k=%d\n", a + b + c + d + e);
break;
default :
printf("奖金总数k=%d\n", a + b + c + d + e + f);
break;
}
望采纳~追问g = (I - 1) / 100000;
大神,请问这句是什么意思,中间必须要这么多的case么?看上去有些好像是多余的?追答case只能对整型或字符起作用,不能对范围起作用,换句话说,必须是确定的数。按照本题,所列出的范围是10W到100W,除以10W正好能得到这样一个结果:利用10个数达到表示范围的目的。
所以让利润除以10W。但是只是除以10W不能达到目的,举例来说,当利润刚好是10W的时候,本身该是第一档,结果算成了第二档;利用利润I-1刚好达到了区分的目的,希望你能调试一下程序,然后消化一下用意。。
举例说明:
I <= 100000 时,g = (I - 1) / 100000 = 0;
100000 < I && I <= 200000时,g = (I - 1) / 100000 = 1;
200000 < I && I <= 400000时,g = (I - 1) / 100000 = 2或3;
400000 < I && I <= 600000时,g = (I - 1) / 100000 = 4或5;
600000 < I && I <= 1000000时,g = (I - 1) / 100000 = 6或7或8或9;
大于100w属于其他情况 。
void main()
{
int I, k, a, b, c, d, e, f,g;
printf("请输入利润I:\n");
scanf("%d", &I);
a = I * (1.0f/10); //此处强制为浮点类型,不然a一直是0,看你的意思了
b = (I - 100000) * 75/1000;
c = (I - 200000) * 5/100;
d = (I - 400000) * 3/100;
e = (I - 600000) * 15/1000;
f = (I - 1000000) * 1/100;
g = (I - 1) / 100000;
switch(g)
{
case 0:
printf("奖金总数k=%d\n", a);
break;
case 1:
printf("奖金总数k=%d\n", a + b);
break;
case 2:
case 3:
printf("奖金总数k=%d\n", a + b + c);
break;
case 4:
case 5:
printf("奖金总数k=%d\n", a + b + c + d);
break;
case 6:
case 7:
case 8:
case 9:
printf("奖金总数k=%d\n", a + b + c + d + e);
break;
default :
printf("奖金总数k=%d\n", a + b + c + d + e + f);
break;
}
望采纳~追问g = (I - 1) / 100000;
大神,请问这句是什么意思,中间必须要这么多的case么?看上去有些好像是多余的?追答case只能对整型或字符起作用,不能对范围起作用,换句话说,必须是确定的数。按照本题,所列出的范围是10W到100W,除以10W正好能得到这样一个结果:利用10个数达到表示范围的目的。
所以让利润除以10W。但是只是除以10W不能达到目的,举例来说,当利润刚好是10W的时候,本身该是第一档,结果算成了第二档;利用利润I-1刚好达到了区分的目的,希望你能调试一下程序,然后消化一下用意。。
举例说明:
I <= 100000 时,g = (I - 1) / 100000 = 0;
100000 < I && I <= 200000时,g = (I - 1) / 100000 = 1;
200000 < I && I <= 400000时,g = (I - 1) / 100000 = 2或3;
400000 < I && I <= 600000时,g = (I - 1) / 100000 = 4或5;
600000 < I && I <= 1000000时,g = (I - 1) / 100000 = 6或7或8或9;
大于100w属于其他情况 。
全部回答
- 1楼网友:忘川信使
- 2021-11-28 05:44
case后跟定值,不能跟变量
- 2楼网友:妄饮晩冬酒
- 2021-11-28 04:20
case不能出现不等式,只能是等式
- 3楼网友:掌灯师
- 2021-11-28 03:32
switch case()括号里貌似不能这样写吧!
- 4楼网友:想偏头吻你
- 2021-11-28 03:12
switch(int(I/100000))
{
case 0:
printf("奖金总数k=%d ", a);
break;
case 1:
printf("奖金总数k=%d ", a + b);
break;
case 2:
case 3:
printf("奖金总数k=%d ", a + b + c);
break;
case 4:
case 5:
printf("奖金总数k=%d ", a + b + c + d);
break;
case 6:
case 7:
case 8:
case 9:
printf("奖金总数k=%d ", a + b + c + d + e);
break;
default:
printf("奖金总数k=%d ", a + b + c + d + e + f);
break;
}追问switch( int (I / 100000))
大神,请问这句是什么意思,中间必须要这么多的case么?看上去有些好像是多余的?追答整型运算的结果还是整型,也就是没有小数的,
0~~100000的数据除以100000的结果就是0
600000~1000000的数据除以100000的结果就是6,7,8,9
所以中间需要那么多的case追问不好意思,刚开始没看见你的答案,你们解释的都非常好
{
case 0:
printf("奖金总数k=%d ", a);
break;
case 1:
printf("奖金总数k=%d ", a + b);
break;
case 2:
case 3:
printf("奖金总数k=%d ", a + b + c);
break;
case 4:
case 5:
printf("奖金总数k=%d ", a + b + c + d);
break;
case 6:
case 7:
case 8:
case 9:
printf("奖金总数k=%d ", a + b + c + d + e);
break;
default:
printf("奖金总数k=%d ", a + b + c + d + e + f);
break;
}追问switch( int (I / 100000))
大神,请问这句是什么意思,中间必须要这么多的case么?看上去有些好像是多余的?追答整型运算的结果还是整型,也就是没有小数的,
0~~100000的数据除以100000的结果就是0
600000~1000000的数据除以100000的结果就是6,7,8,9
所以中间需要那么多的case追问不好意思,刚开始没看见你的答案,你们解释的都非常好
- 5楼网友:走死在岁月里
- 2021-11-28 03:04
你的逻辑错了。。
而且。。switch case 只能是具体的数字,你可以用if else
int I, k, a, b, c, d, e, f;printf("请输入利润I: ");
scanf("%d", &I);
a = 100000 * (1/10);
b = (200000 - 100000) * 75/1000;
c = (400000 - 200000) * 5/100;
d = (600000 - 400000) * 3/100;
e = (1000000 - 600000) * 15/1000;
if(I <= 100000)
printf("奖金总数k=%d ", I/10);
else if(100000 < I && I <= 200000)
printf("奖金总数k=%d ", a + (I - 100000) * 75/1000);
else if(200000 < I && I <= 400000)
printf("奖金总数k=%d ", a + b + (I- 200000) * 5/100);
else if(400000 < I && I <= 600000)
printf("奖金总数k=%d ", a + b + c + (I- 400000) * 3/100);
else if(600000 < I && I <= 1000000)
printf("奖金总数k=%d ", a + b + c + d + (I- 600000) * 15/1000);
else
printf("奖金总数k=%d ", a + b + c + d + e + (I -1000000) * 1/100);
我随便写的,应该没问题了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯