您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
015第四章 分支结构程序06
发布时间:2021-04-11 19:16:39编辑:雪饮阅读()
其实个人觉得吧还是if比switch好用,我是能用if不用switch,感觉switch占体积(代码量大),虽然大多数人都认定官方推荐的switch。
判断一个年份是否是闰年
关于公历闰年是这样规定的:地球绕太阳公转一周叫做一回归年,一回归年长365日5时48分46秒。因此,公历规定有平年和闰年,平年一年有365日,比回归年短0.2422日,四年共短0.9688日,故每四年增加一日,这一年有366日,就是闰年。但四年增加一日比四个回归年又多0.0312日,400年后将多3.12日,故在400年中少设3个闰年,也就是在400年中只设97个闰年,这样公历年的平均长度与回归年就相近似了。由此规定:年份是整百数的必须是400的倍数才是闰年,例如1900年、2100年就不是闰年。
所以总结规律:
非整百每4年一闰:该年份能被4 整除同时不能被 100 整除;
整百每400年1闰:该年份能被400整除。(少设3个不就是只设1个)
那么其之实现:
#include <stdio.h>
void main(){
int y;
int r;
printf("input year: \n");
scanf("%d",&y);
//年份是整百数的必须是400的倍数才是闰年,并且年份没有0年
if(y%400==0){
r=1;
}
else{
//就算不是400的倍数,但也有可能有整百的,整百的与400的整除为余数0判断,所以这里要撇开非整百的
if(y%100!=0){
//那么非整百的情况就是按前面的逻辑每4年一闰
if(y%4==0){
r=1;
}
}
}
if(r==1){
printf("%d is Leap Year\n");
}
else{
printf("%d not Leap Year\n");
}
}
D:\>gcc hello.c -o h5
D:\>h5.exe
input year:
2012
20 is Leap Year
D:\>h5.exe
input year:
1
0 not Leap Year
D:\>h5.exe
input year:
2021
20 not Leap Year
运输公司对用户计算运费
路程(s)越远,每公里运费越低。标准如下:
s<250km 没有折扣
250≤s<500 2%折扣
500≤s<1000 5%折扣
1000≤s<2000 8%折扣
2000≤s<3000 10%折扣
3000≤s 15%折扣
设每公里每吨货物的基本运费为p,货物重为w,距离为s,
折扣为d,则总运费f的计算公式为:
f=p*w*s*(1-d)
那么这个实现逻辑时候其实只需要注意下浮点类型,一般的float类型容易丢精度,保险起见还是推荐double类型,其它的也就没有什么注意的了,都是业务逻辑了。
那么具体实现如:
#include <stdio.h>
void main(){
//路程
double s;
//总运费
double f;
//基本运费
double p;
//物重
double w;
//折扣(默认折扣让其为1,即不打折)
double d=1;
printf("input s=>distance(km),p=>Basic Freight,w=>Material weight \n");
scanf("%lf,%lf,%lf",&s,&p,&w);
if(s<250){
d=0;
}
if(250<=s && s<500){
d=0.02;
}
if(500<=s && s<1000){
d=0.05;
}
if(1000<=s && s<2000){
d=0.08;
}
if(2000<=s && s<3000){
d=0.1;
}
if(3000<=s){
d=0.15;
}
f=p*w*s*(1-d);
printf("freight: %lf\n",f);
}
关键字词:c,分支结构,if