P1422 小玉家的电费
题目描述:
夏天到了,各家各户的用电量都增加了许多,相应的电费也交的更多了。小玉家今天收到了一份电费通知单。小玉看到上面写:据闽价电[2006]27号规定,月用电量在150千瓦时及以下部分按每千瓦时0.4463元执行,月用电量在151~400千瓦时的部分按每千瓦时0.4663元执行,月用电量在401千瓦时及以上部分按每千瓦时0.5663元执行;小玉想自己验证一下,电费通知单上应交电费的数目到底是否正确呢。请编写一个程序,已知用电总计,根据电价规定,计算出应交的电费应该是多少。
C语言源代码:
#include<stdio.h>
int main(){
const double p1=0.4463,p2=0.4663,p3=0.5663;//分别定义三个时间段对应的每千瓦时花费
double electricity,expense;//定义变量electricity表示千瓦时,expense表示总花费
scanf("%lf",&electricity);
//分段依次计算
if(electricity<=150)
expense=p1*electricity;
else if(electricity<=400)
expense=p1*150+p2*(electricity-150);
else
expense=p1*150+p2*250+p3*(electricity-400);
printf("%.1f\n",expense);
return 0;
}
P1085 不高兴的津津
题目描述:
津津上初中了。妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班。另外每周妈妈还会送她去学习朗诵、舞蹈和钢琴。但是津津如果一天上课超过八个小时就会不高兴,而且上得越久就会越不高兴。假设津津不会因为其它事不高兴,并且她的不高兴不会持续到第二天。请你帮忙检查一下津津下周的日程安排,看看下周她会不会不高兴;如果会的话,哪天最不高兴。
输入格式:
输入包括77行数据,分别表示周一到周日的日程安排。每行包括两个小于10的非负整数,用空格隔开,分别表示津津在学校上课的时间和妈妈安排她上课的时间。
输出格式:
一个数字。如果不会不高兴则输出00,如果会则输出最不高兴的是周几(用1, 2, 3, 4, 5, 6, 7分别表示周一,周二,周三,周四,周五,周六,周日)。如果有两天或两天以上不高兴的程度相当,则输出时间最靠前的一天。
C语言源代码:
#include<stdio.h>
int main(){
int a,b;//学校学习小时,课外学习小时
int max_time=0;//当前最大学习总时间
int answer=0;//放置输出结果
for(int i=0;i<7;i++){//读入7组数据并处理
scanf("%d %d",&a,&b);//读入第i+1天的学校学习小时,课外学习小时
if(a+b>max_time&&a+b>8){//如果总时间大于8并且当前总时间比之前找到的最大总时间大
answer=i+1;//更新答案为星期几
max_time=a+b;//更新最大总时间
}
}
printf("%d",answer);
return 0;
}
P1089津津的储蓄计划
题目描述:
津津的零花钱一直都是自己管理。每个月的月初妈妈给津津300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同。
为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里,到了年末她会加上20%还给津津。因此津津制定了一个储蓄计划:每个月的月初,在得到妈妈给的零花钱后,如果她预计到这个月的月末手中还会有多于100元或恰好100元,她就会把整百的钱存在妈妈那里,剩余的钱留在自己手中。
例如1月初津津手中还有83元,妈妈给了津津300元。津津预计1月的花销是180元,那么她就会在妈妈那里存200元,自己留下183元。到了1月末,津津手中会剩下33元钱。
津津发现这个储蓄计划的主要风险是,存在妈妈那里的钱在年末之前不能取出。有可能在某个月的月初,津津手中的钱加上这个月妈妈给的钱,不够这个月的原定预算。如果出现这种情况,津津将不得不在这个月省吃俭用,压缩预算。
现在请你根据2004年1月到12月每个月津津的预算,判断会不会出现这种情况。如果不会,计算到2004年年末,妈妈将津津平常存的钱加上20%还给津津之后,津津手中会有多少钱。
输入格式:
12行数据,每行包含一个小于350的非负整数,分别表示1月到12月津津的预算。
输出格式:
一个整数。如果储蓄计划实施过程中出现某个月钱不够用的情况,输出-X−X,XX表示出现这种情况的第一个月;否则输出到2004年年末津津手中会有多少钱。
注意,洛谷不需要进行文件输入输出,而是标准输入输出。
C语言源代码:
#include<stdio.h>
int main(){
int i,month,left=0,save=0,sum,plan,flag=0;
for(month=1;month<=12;month++){
left+=300;
scanf("%d",&plan);
left-=plan;
if(left<0){
flag=1;
break;
}
else{
i=left/100;
save+=(100*i);
left-=(100*i);
}
}
if(flag)
printf("-%d",month);
else
{sum=((1.2*save)+left);
printf("%d",sum);
}
return 0;
}
P1909 买铅笔
题目描述:
P老师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物。她发现商店一共有 3种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不同。为了公平起 见,P老师决定只买同一种包装的铅笔。
商店不允许将铅笔的包装拆开,因此P老师可能需要购买超过n支铅笔才够给小朋 友们发礼物。
现在P老师想知道,在商店每种包装的数量都足够的情况下,要买够至少n支铅笔最少需要花费多少钱。
输入格式:
第一行包含一个正整数n,表示需要的铅笔数量。
接下来三行,每行用2个正整数描述一种包装的铅笔:其中第1个整数表示这种 包装内铅笔的数量,第2个整数表示这种包装的价格。
保证所有的7个数都是不超过10000的正整数。
输出格式:
1个整数,表示P老师最少需要花费的钱。
C语言源代码:
#include<stdio.h>
int main(){
int n,a1,a2,b1,b2,c1,c2,a,b,c,z;
scanf("%d",&n);//n是需要铅笔的数量
scanf("%d %d",&a1,&a2);//a1表示包装内铅笔数量,a2表示包装的价格
scanf("%d %d",&b1,&b2);//同上
scanf("%d %d",&c1,&c2);//同上
a=n/a1;a1=n%a1==0?a:a+1;a=a1*a2;//第一、二各表达式用来求至少需要买的铅笔包数,第三个表达式表示总共需要的价格
b=n/b1;b1=n%b1==0?b:b+1;b=b1*b2;//同上
c=n/c1;c1=n%c1==0?c:c+1;c=c1*c2;//同上
//把买铅笔所需最少的钱交给变量z
if(a<b&&a<c)z=a;
if(b<a&&b<c)z=b;
if(c<a&&c<b)z=c;
printf("%d\n",z);//输出
return 0;
}
综述,勤于思考,利用if-else分支结构便可解决