2021-2022-2-第3次单元练习后记

一个简单的说明

主要以记录题目,分享源码为主
顺带记录做题心路历程
太久没有做题了,手生了,难免犯一些低级错误
最后,顺便对我的后续练习起到一个规划的作用

7-1 拆数 (10 分)

题面

从键盘输入一个三位的正整数,输出它的各位之和与积。

输入样例:

358

输出样例:

在一行中输出结果,用一个半角空格隔开,行尾无空格。

16 120

C++源码

#include<cstdio>

inline int read(){
	int f=1,s=0;
	char k=getchar();
	while(k>'9'||k<'0'){if(k=='-')f=-1,k=getchar();}
	while(k>='0'&&k<='9'){s=(s<<3)+(s<<1)+k-'0';k=getchar();}
	return f*s;
}

int ins,sum,subs,temp;

int main(){
	sum=0;
	subs=1;
	ins=read();
	while(ins%10!=ins){
		temp=ins%10;
		sum+=temp;
		subs*=temp;
		ins/=10;
	}
	sum+=ins;
	subs*=ins;
	printf("%d %d",sum,subs);
	return 0;
}

7-2 后天 (5 分)

题面

如果今天是星期三,后天就是星期五;如果今天是星期六,后天就是星期一。我们用数字1到7对应星期一到星期日。给定某一天,请你输出那天的“后天”是星期几。

输入格式:

输入第一行给出一个正整数D(1 ≤ D ≤ 7),代表星期里的某一天。

输出格式:

在一行中输出D天的后天是星期几。

输入样例:

3

输出样例:

5

C++源码

#include<cstdio>

inline int read(){
	int f=1,s=0;
	char k=getchar();
	while(k>'9'||k<'0'){if(k=='-')f=-1,k=getchar();}
	while(k>='0'&&k<='9'){s=(s<<3)+(s<<1)+k-'0';k=getchar();}
	return f*s;
}

int ins;

int main(){
	ins=read();
	if((ins+2)%7==0)putchar('7');
	else printf("%d",(ins+2)%7);
	return 0;
}

错处

没有注意求余后0,n-1和1,n的区别,导致第一次结果差1,粗心和过度自信

7-3 分段计算居民水费 (10 分)

题面

为鼓励居民节约用水,自来水公司采取按用水量阶梯式计价的办法,居民应交水费y(元)与月用水量x(吨)相关:当x不超过15吨时,y=4x/3;超过后,y=2.5x−17.5。请编写程序实现水费的计算。

输入格式:

输入在一行中给出非负实数x。

输出格式:

在一行输出应交的水费,精确到小数点后2位。

输入样例1:

12

输出样例1:

16.00

输入样例2:

16

输出样例2:

22.50

C++源码

#include<cstdio>

inline int read(){
	int f=1,s=0;
	char k=getchar();
	while(k>'9'||k<'0'){if(k=='-')f=-1,k=getchar();}
	while(k>='0'&&k<='9'){s=(s<<3)+(s<<1)+k-'0';k=getchar();}
	return f*s;
}

int ins;
double couts;

int main(){
	ins=read();
	if(ins<=15)couts=(4*ins)/3.0;
	else couts=(2.5*ins-17.5);
	printf("%.2lf",couts);
	return 0;
}

7-4 新胖子公式 (10 分)

题面

根据钱江晚报官方微博的报导,最新的肥胖计算方法为:体重(kg) / 身高(m) 的平方。如果超过 25,你就是胖子。于是本题就请你编写程序自动判断一个人到底算不算胖子。

输入格式:

输入在一行中给出两个正数,依次为一个人的体重(以 kg 为单位)和身高(以 m 为单位),其间以空格分隔。其中体重不超过 1000 kg,身高不超过 3.0 m。

输出格式:

首先输出将该人的体重和身高代入肥胖公式的计算结果,保留小数点后 1 位。如果这个数值大于 25,就在第二行输出 PANG,否则输出 Hai Xing。

输入样例 1:

100.1 1.74

输出样例 1:

33.1
PANG

输入样例 2:

65 1.70

输出样例 2:

22.5
Hai Xing

C++源码

#include<cstdio>
#include<cmath> 

double h,m,bmi;
int a;

int main(){
	scanf("%lf%lf",&m,&h);
	bmi=m/(h*h)*1.0;
	a=floor(bmi);
	printf("%.1lf\n",bmi);
	if(a<=25)printf("Hai Xing");
	else printf("PANG");
	return 0;
}

7-5 苹果与虫子 (40 分)

题面

箱子里有n个苹果,还混进了一条虫子(虫子是免费的)。虫子每x小时能吃掉一个苹果,假设虫子在吃完一个苹果之前不会吃另一个(这虫子不错哦),那么经过y小时你还有多少个完整的苹果?

输入格式:

输入仅一行,包括三个整数,n,x和y。

输出格式:

剩余的完整苹果的个数。

输入样例:

在这里给出一组输入。例如:

10 3 10

输出样例:

在这里给出相应的输出。例如:

6

C++源码

#include<cstdio>

inline int read(){
	int f=1,s=0;
	char k=getchar();
	while(k>'9'||k<'0'){if(k=='-')f=-1,k=getchar();}
	while(k>='0'&&k<='9'){s=(s<<3)+(s<<1)+k-'0';k=getchar();}
	return f*s;
}

int n,x,y;
int temp;

int main(){
	n=read(),x=read(),y=read();
	temp=y/x;
	if(y%x!=0)temp++;
	if(n-temp<0)putchar('0');
	else printf("%d",n-temp);
	return 0;
}

本次练习的反思

老生常谈的自信问题和粗心问题,码力有所恢复,但是算法水平仍然堪忧,恐怕比普及组的学生都高不了多少。

关于源码中read()函数的说明

read()函数为自行定义的一个快速读入整数的函数,不熟悉快读的朋友可以自行改为scanf()语句。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值