《C程序设计教程(第四版)——谭浩强》
题目:
习题3.6 企业发放的奖金根据利润提成。利润I低于或等于100 000元的,奖金可提成10%;
利润高于100 000元,低于200000元(100000<I≤200000)时,低于100000元的部分按10%提成,高于100000元的部分,可提成7.5%;
利润高于200 000元,低于400000元(200000<I≤400000)时,低于200000元的部分仍按上述办法提成(下同),高于200000元的部分,可提成5%;
利润高于400 000元,低于600000元(400000<I≤600000)时,高于400000元的部分,可提成3%;
利润高于600 000元,低于1000000元(600000<I≤1000000)时,高于600000元的部分,可提成1.5%;
利润高于1 000 000元,超过1 000 000元的部分按1%提成。
(1)用if语句编程序;
(2)用switch语句编程序。
代码:
(1)使用if语句
#include <stdio.h>
int main()
{
float fee=0;//奖金
float I=0;//利润
printf("请输入你所为公司创造的利润:\n");
scanf("%f",&I);
if(I<100000)
{
fee=I*0.1;
}
else if(I>100000 &&I<=200000)
{
fee=100000*0.1+((I-100000)*0.075);
}
else if(I>200000 &&I<=400000)
{
fee=100000*0.1+((200000-100000)*0.075)+((I-200000)*0.05);
}
else if(I>400000 &&I<=600000)
{
fee=100000*0.1+((200000-100000)*0.075)+((400000-200000)*0.05)+((I-400000)*0.03);
}
else if(I>600000 &&I<=1000000)
{
fee=100000*0.1+((200000-100000)*0.075)+((400000-200000)*0.05)+((600000-400000)*0.03)+((I-600000)*0.015);
}
else
{
fee=100000*0.1+((200000-100000)*0.075)+((400000-200000)*0.05)+((600000-400000)*0.03)+((1000000-600000)*0.015)+((I-1000000)*0.01);
}
printf("你所应该得到的奖金为%.2f",fee);
return 0;
}
(2)使用switch语句
//(2)用switch语句编程序。
#include <stdio.h>
int main()
{
float fee=0;//奖金
float I=0;//利润
float ticheng=0;//提成
int swit=0;//switch语句的判断条件
printf("请输入你所为公司创造的利润:\n");
scanf("%f",&I);
if(I<100000)
{
swit=1;
}
else if(I>100000 &&I<=200000)
{
swit=2;
}
else if(I>200000 &&I<=400000)
{
swit=3;
}
else if(I>400000 &&I<=600000)
{
swit=4;
}
else if(I>600000 &&I<=1000000)
{
swit=5;
}
else
{
swit=6;
}
switch(swit)
{
case 1:
fee=I*0.1;
break;
case 2:
fee=100000*0.1+((I-100000)*0.075);
break;
case 3:
fee=100000*0.1+((200000-100000)*0.075)+((I-200000)*0.05);
break;
case 4:
fee=100000*0.1+((200000-100000)*0.075)+((400000-200000)*0.05)+((I-400000)*0.03);
break;
case 5:
fee=100000*0.1+((200000-100000)*0.075)+((400000-200000)*0.05)+((600000-400000)*0.03)+((I-600000)*0.015);
break;
case 6:
fee=100000*0.1+((200000-100000)*0.075)+((400000-200000)*0.05)+((600000-400000)*0.03)+((1000000-600000)*0.015)+((I-1000000)*0.01);
break;
default:
printf("!!!您的输入有误!!!");
}
printf("你所应该得到的奖金为%.2f",fee);
return 0;
}
(3)汇总
//《C程序设计教程(第四版)——谭浩强》
//习题3.6 企业发放的奖金根据利润提成。利润I低于或等于100 000元的,奖金可提成10%;
// 利润高于100 000元,低于200000元(100000<I≤200000)时,低于100000元的部分按10%提成,高于100000元的部分,可提成7.5%;
// 利润高于200 000元,低于400000元(200000<I≤400000)时,低于200000元的部分仍按上述办法提成(下同),高于200000元的部分,可提成5%;
// 利润高于400 000元,低于600000元(400000<I≤600000)时,高于400000元的部分,可提成3%;
// 利润高于600 000元,低于1000000元(600000<I≤1000000)时,高于600000元的部分,可提成1.5%;
// 利润高于1 000 000元,超过1 000 000元的部分按1%提成。
//(1)用if语句编程序;
//(2)用switch语句编程序。
//(1)用if语句编程序;
#include <stdio.h>
int main()
{
float fee=0;//奖金
float I=0;//利润
printf("请输入你所为公司创造的利润:\n");
scanf("%f",&I);
if(I<100000)
{
fee=I*0.1;
}
else if(I>100000 &&I<=200000)
{
fee=100000*0.1+((I-100000)*0.075);
}
else if(I>200000 &&I<=400000)
{
fee=100000*0.1+((200000-100000)*0.075)+((I-200000)*0.05);
}
else if(I>400000 &&I<=600000)
{
fee=100000*0.1+((200000-100000)*0.075)+((400000-200000)*0.05)+((I-400000)*0.03);
}
else if(I>600000 &&I<=1000000)
{
fee=100000*0.1+((200000-100000)*0.075)+((400000-200000)*0.05)+((600000-400000)*0.03)+((I-600000)*0.015);
}
else
{
fee=100000*0.1+((200000-100000)*0.075)+((400000-200000)*0.05)+((600000-400000)*0.03)+((1000000-600000)*0.015)+((I-1000000)*0.01);
}
printf("你所应该得到的奖金为%.2f",fee);
return 0;
}
//(2)用switch语句编程序。
//#include <stdio.h>
//int main()
//{
// float fee=0;//奖金
// float I=0;//利润
// float ticheng=0;//提成
// int swit=0;//switch语句的判断条件
//
// printf("请输入你所为公司创造的利润:\n");
// scanf("%f",&I);
//
// if(I<100000)
// {
// swit=1;
// }
// else if(I>100000 &&I<=200000)
// {
// swit=2;
// }
// else if(I>200000 &&I<=400000)
// {
// swit=3;
// }
// else if(I>400000 &&I<=600000)
// {
// swit=4;
// }
// else if(I>600000 &&I<=1000000)
// {
// swit=5;
// }
// else
// {
// swit=6;
// }
//
// switch(swit)
// {
// case 1:
// fee=I*0.10;
// break;
// case 2:
// fee=100000*0.10+((I-100000)*0.075);
// break;
// case 3:
// fee=100000*0.10+((200000-100000)*0.075)+((I-200000)*0.05);
// break;
// case 4:
// fee=100000*0.10+((200000-100000)*0.075)+((400000-200000)*0.05)+((I-400000)*0.03);
// break;
// case 5:
// fee=100000*0.10+((200000-100000)*0.075)+((400000-200000)*0.05)+((600000-400000)*0.03)+((I-600000)*0.015);
// break;
// case 6:
// fee=100000*0.10+((200000-100000)*0.075)+((400000-200000)*0.05)+((600000-400000)*0.03)+((1000000-600000)*0.015)+((I-1000000)*0.01);
// break;
// default:
// printf("!!!您的输入有误!!!");
// }
//
// printf("你所应该得到的奖金为%.2f",fee);
//
// return 0;
//}
运行结果:
(1)编写if语句的方法的运行结果:
(2)编写switch语句的方法的运行结果:
运行结果的验证:(每一中方法只进行一次)
(1)编写if语句的方法的运行结果验证:
(2)编写switch语句的方法的运行结果验证:
代码编写过程中遇到的问题:
(1)奖金的书写
一定要细心,一步一步来,每一个数字都不能放过。
例如:作者就将一步的0少写了一个,导致验证的答案与编译器算出来的答案始终不同。
也不要不会就用chatGDP,因为AI也会犯错,就比如一个简单的计算它都能算错。。。
(2)脑力里要清楚每一步的步骤
(3)如果出现错误要从前到后一步一步来检查代码,这个时候,使用调试或者在代码某些关键部分添加一些代码,会让你更快速的定位到错误(有很多的错误编译器是不会报警告或者错误的)