黑马程序员技术交流社区
标题: 是不是太乱了 能不能化简 哪写的不好请指教啊 [打印本页]
作者: yll 时间: 2015-11-18 10:12
标题: 是不是太乱了 能不能化简 哪写的不好请指教啊
#include <stdio.h>
//#define GRAND 10.00
#define TIME 40//超过40小时为加班
#define OVERTIME 1.5//加班的时间按1.5倍计算
#define A_TAX 300 //税率 前300美元为15%
#define B_TAX 150 // 下一个150美元为20%
#define A_RATE 0.15 // 余下的为25%
#define B_RATE 0.20 //
#define C_RATE 0.25 //
int get_int(void);
int main(int argc, const char * argv[]) {
float times,basic,salary=0,taxes=0,net_pay=0;
printf("Enter the number corresonding to the desired pay rate or action:\n");
printf("1)$8.75/hr\t\t\t2)$9.33/hr\n");
printf("3)$10.00/hr\t\t\t4)$11.20/hr\n");
printf("5)quit\n");
switch (get_int()) {
case 1:
basic=8.75;
break;
case 2:
basic=9.33;
break;
case 3:
basic=10.00;
break;
case 4:
basic=11.20;
break;
default:
printf("quit\n");
return (0);//退出程序
}
printf("You have select $%.2lf\n",basic);
printf("请输入你一周的工作时间:");
scanf("%f",×);
if (times>=0){
if (times<=TIME) { //没有加班
salary=times*basic;
if (salary<=300)
{
taxes=salary*A_RATE;
net_pay=salary-taxes;
}
if (salary>300)
{
taxes=300*A_RATE+(salary-300)*B_RATE;
net_pay=salary-taxes;
}
}else{ //加班后
salary=(TIME+(times-TIME)*OVERTIME)*basic;
if (salary<=A_TAX+B_TAX)
{
taxes=A_TAX*A_RATE+(salary-A_TAX)*B_RATE;
net_pay=salary-taxes;
}else
{
taxes=A_TAX*A_RATE+B_TAX*B_RATE+(salary-A_TAX-B_TAX)*C_RATE;
net_pay=salary-taxes;
}
}
printf("您的薪资为%.2f,交税%.2f,净工资%.2f.\n",salary,taxes,net_pay);
}else
printf("您的输入有误。。。\n");
return 0;
}
int get_int(void){//得到一个合适的数,滤除非法数
int num;
char str[40];
while (scanf("%d",&num)!=1) {
gets(str);
printf("error!%s is not an number.input again.\n",str);
}
while (getchar()!='\n')
;
return num;
}
作者: yanggangcl 时间: 2015-11-18 12:12
是太乱了
作者: 仰望星空的猪 时间: 2015-11-18 18:53
可以先把问题说出来再把代码贴出来。
作者: yll 时间: 2015-11-20 21:09
#include <stdio.h>
#include <ctype.h> //需要调用tolower()函数 大转小
#define ARTICHOKE 1.25//朝鲜蓟的售价是1.25美元/磅
#define BEET 0.65 //甜菜的售价
#define CARROT 0.89 //胡萝卜的售价
#define DISCONUT_LIMIT 100 //满100美元的订单提供5%的打折优惠
#define DISCOUNT_RATE 0.05
#define FREIGHT_FEE1 3.5
#define FREIGHT_LIMIT1 5
#define FREIGHT_FEE2 10.00
#define FREIGHT_LIMIT2 20
#define FREIGHT_FEE3 8
#define FREIGHT_RATE 0.1
int main(int argc, const char * argv[]) {
char ch;
double artichoke=0,beet=0,carrot=0;//磅数
double sum,discount,freight;
printf("Please select your vegetable:a,b,c,q\n");
printf("a.artichoke price:$%.2f\n",ARTICHOKE);
printf("b.beet price:$%.2f\n",BEET);
printf("c.carrot price:$%.2f\n",CARROT);
printf("q.end\n");
printf("(price as dollars per pound)\n");
while ((ch=tolower(getchar()))!='q') {//tolower大写转小写·
switch (ch) {
case 'a':
printf("How many pounds of artichokes do you want ?");
scanf("%lf",&artichoke);
printf("Please select your vegetable:a,b,c,q\n");
continue;
case 'b':
printf("How many pounds of beets do you want ?");
scanf("%lf",&beet);
printf("Please select your vegetable:a,b,c,q\n");
continue;
case 'c':
printf("How many pounds of carrots do you want ?");
scanf("%lf",&carrot);
printf("Please select your vegetable:a,b,c,q\n");
continue;
default:
break;
}
}
printf("%10s%10s%10s%10s\n"," ","artichoke","beet","carrot");
printf("%10s%10.2lf%10.2lf%10.2lf\n","price",ARTICHOKE,BEET,CARROT);
printf("%10s%10.2lf%10.2lf%10.2lf\n","pound",artichoke,beet,carrot);
printf("%10s%10.2lf%10.2lf%10.2lf\n","charge",ARTICHOKE*artichoke,BEET*beet,CARROT*carrot);
sum=ARTICHOKE*artichoke+BEET*beet+CARROT*carrot;
if (sum>DISCONUT_LIMIT) {
discount=sum*DISCOUNT_RATE;
}else
discount=0;
printf("discount:%.2lf\n",discount);
if (artichoke+beet+carrot<=5) {
freight=3.50;
}else if (artichoke+beet+carrot<20){
freight=10;
}else
freight=8+(artichoke+beet+carrot)*0.1;
printf("freight:%.2f\n",freight);
sum=sum-discount+freight;
printf("sum:%.2f\n",sum);
return 0;
}
作者: yll 时间: 2015-11-22 19:53
#include <stdio.h>
#include <ctype.h>
char get_first(void);
float get_float(void);
int main(int argc, const char * argv[])
{
char ch;
float first_number,second_number;
//提示用户输选择运算符号或停止
while(1)
{
printf("请选择您的选项:\n");
//打印运算符号或停止
printf("a. add s. subtract\n");
printf("m. multiply d. divide\n");
printf("q. quit\n");
ch=get_first();
if (ch!='a'&&ch!='s'&&ch!='m'&&ch!='d')
{
printf("Bye!\n");
break;
}
//接受运算符号或停止
//提示用户输入第一个数 以浮点数形式
printf("Enter first number:");
first_number=get_float();
//如果输入的不是数 要提示输入的不是数 并在次请求输入
//提示用户输入第二个数
printf("Enter second number:");
second_number=get_float();
//如果输入的不是数 要提示输入的不是数 并在次请求输入
//如果第二个数是0 该程序应该提醒用户输入一个新的值
while (ch=='d'&&second_number==0)
{
printf("Enter a number other than 0:");
second_number=get_float();
}
switch (ch)
{
case 'a':
printf("%.2f+%.2f=%.2f\n",first_number,second_number,first_number+second_number);
break;
case 's':
printf("%.2f-%.2f=%.2f\n",first_number,second_number,first_number-second_number);
break;
case 'm':
printf("%.2f*%.2f=%.2f\n",first_number,second_number,first_number*second_number);
break;
case 'd':
printf("%.2f/%.2f=%.2f\n",first_number,second_number,first_number/second_number);
break;
default:
break;
}
}
return 0;
}
float get_float(void){
float num;
char str[40];
while (scanf("%f",&num)!=1) {
gets(str);
printf("%s is not a number,such as 2.5,-1.78E8,or 3:\n",str);
}
while (getchar()!='\n');
return num;
}
char get_first(void){
int ch;
while (isspace(ch=getchar()));
while (getchar()!='\n');
return ch;
}
作者: MillerD 时间: 2015-11-22 20:12
直接不敢看了
作者: yll 时间: 2015-11-23 08:41
.....这么可怕么0.0
作者: 一枚小刁民 时间: 2015-11-23 14:49
注释太简单了
作者: 爱尘iPhone 时间: 2015-11-23 17:43
终于意识到英语的重要性了
听说下雨天,单词和代码最配哦!
作者: 仰望星空的猪 时间: 2015-11-23 19:42
不要全部写在main函数里 可以用函数分功能写 只在主函数里定义一些变量和调用函数方法
作者: jacku 时间: 2015-11-23 19:52
该去记记单词了。
作者: MillerD 时间: 2015-11-23 21:48
不不,是我水平太低,我才学了没多久
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |