CCF入门篇练习(1)

1001. 温度转换

题目:将输入的华氏温度转换为摄氏温度。由华氏温度F与摄氏温度C的转换公式为:F=C×9/5+32。

输入
输入一个实数,表示华氏温度

输出
输出对应的摄氏温度,答案保留4位小数。

样例输入

50

样例输出

10.0000

C语言

#include <stdio.h>
int main()
{
	double F, C;
	scanf("%lf", &F); 
	
	C = (F - 32) * 5 / 9;
	
	printf("%.4lf", C);	  // 保留n位小数 %.nlf
	return 0;	
} 

C++

#include <iostream>
#include <iomanip>  // 保留小数位的头文件
using namespace std;
int main()
{
	double F, C;   // 华氏温度:Fahrenheit   摄氏温度:Celsius  
	cin >> F;
	
	C = (F - 32) * 5 / 9;   // 转换公式
	
	cout << fixed << setprecision(4) << C;  // 保留4位小数
	return 0;
} 

🍅 Try it 🗝 1001. 温度转换 (Standard IO)


1002. 三角形

题目:输入三角形三边长a,b,c(保证能构成三角形),输出三角形面积。

输入
一行三个用一个空格隔开的实数a,b,c,表示三角形的三条边长。

输出
输出三角形的面积,答案保留四位小数。

样例输入

3 4 5

样例输出

6.0000

海伦公式求三角形面积
area = sqrt(p*(p - a)(p - b)(p - c))
半周长:p = (a + b + c) / 2

C语言

#include <stdio.h>
#include <math.h>
int main()
{
	double a, b, c;
	double p, area;
	scanf("%lf %lf %lf", &a, &b, &c);
	
	p = (a + b + c) / 2;
	area = sqrt(p*(p - a)*(p - b)*(p - c));
	
	printf("%.4lf", area);
	return 0;
}

C++

#include <iostream>
#include <iomanip>   // 保留小数点所需头文件
#include <cmath>     // 使用数学函数库所需头文件
using namespace std;
int main()
{
	double a, b, c, p, area;   // p:半周长
	cin >> a >> b >> c;
	
	p = (a + b + c) / 2;   // 求半周长p
	area = sqrt(p*(p - a)*(p - b)*(p - c));   // 海伦公式求三角形面积
	
	cout << fixed << setprecision(4) << area << endl;   // 保留四位小数
	return 0; 
}

🍅 Try it 🗝 1002. 三角形 (Standard IO)


1003. 猜数游戏

题目:有一个“就是它”的猜数游戏,步骤如下:请你对任意输入的一个三位数x,在这三位数后重复一遍,得到一个六位数,467–>467467.把这个数连续除以7、11、13,输出最后的商。

输入
输入一个三位数x。

输出
输出最后的商。

样例输入

100

样例输出

100

C语言

#include <stdio.h>
int main()
{
	int n1, n2, a, b, c;
	scanf("%d", &n1);
	
	a = n1 % 10;
	b = n1 / 10 % 10;
	c = n1 / 100;
	n2 = n1*1000 + (c*100 + b*10 + a);
	
	double result = n2 / 7 / 11 / 13;
	
	printf("%.0lf", result);	// 注意:输出结果斩掉小数位
	return 0;
}

C++

#include <iostream>
using namespace std;
int main()
{
	int n1, n2, a, b, c;
	cin >> n1;
	
	a = n1 % 10;   // 个位
	b = n1 /10 % 10;  // 十位
	c = n1 / 100;  // 百位
	
	n2 = n1 * 1000 + c * 100 + b * 10 + a;  // 得到新的六位数
	
	double result = n2 / 7 / 11 / 13;   // 连续除以7、11、13
	
	cout << result << endl;
	return 0;
}

🍅 Try it 🗝 1003. 猜数游戏 (Standard IO)


1004. 填充矩形

题目:已知矩形的大小为n×m,现用a×a的正方形填充该矩形。输入三个正整数n,m,a(n,m,a≤10^9),计算至多能填入多少正方形?(正方形可以正好碰到矩形边界,但不能超出矩形外)
数据范围限制
1<=n,m,a≤10^9

输入
一行三个用一个空格隔开的正整数n,m,a。

输出
输出能填入正方形的数量。

样例输入

3 4 1

样例输出

12

C语言
本题注意点:根据数据范围限制,选用变量类型 long

#include <stdio.h>
int main()
{
	long n, m, a, cnt;
	scanf("%ld %ld %ld", &n, &m, &a);	// long类型的输入输出表示 %ld
	
	cnt = (n / a) * (m / a);
	printf("%ld", cnt);
	return 0;
}

C++

#include <iostream>
using namespace std;
int main()
{
	long n, m, a, cnt;   // 注意数据范围 
	cin >> n >> m >> a;
	
	cnt = (n / a) * (m / a);
	
	cout << cnt << endl;
	return 0; 
}

🍅 Try it 🗝 1004. 填充矩形 (Standard IO)


1005. 存款收益

题目:按年利率R%存入本钱X,存入P年后的本利合计为Y=X*((100+R)/100)^P,求Y的值。

输入
输入一行三个空格隔开的实数R,X,P

输出
输出收益Y,答案保留两位小数。

样例输入

1 100 5

样例输出

105.10

C语言

#include <stdio.h>
#include <math.h> 
int main()
{
	double R, X, P, Y;
	scanf("%lf %lf %lf", &R, &X, &P);
	
	Y =  X * pow((100+R)/100, P);
	
	printf("%.2lf", Y);
	return 0;
}

C++

#include <iostream>
#include <iomanip>   // 保留小数位所需头文件
#include <cmath>     // 使用数学函数库所需头文件
using namespace std;
int main()
{
	double R, X, P, Y;
	cin >> R >> X >> P;
	
	Y = X * pow((100 + R) / 100, P);
	
	cout << fixed << setprecision(2) <<  Y << endl;	  // 保留两位小数
	return 0;
} 

🍅 Try it 🗝 1005. 存款收益 (Standard IO)


1007. 计算余数

题目:计算两个双精度浮点数a和b相除的余数,a和b都是正数。这里余数(r)的定义是:a = k * b + r,其中 k是整数, 0 <= r < b。

输入
一行两个空格隔开的数a和b。

输出
输出a除以b的余数(答案保留两位小数)。

样例输入

3 2

样例输出

1.00

C语言

#include <stdio.h>
int main()
{
	double a, b, k, r;
	scanf("%lf %lf", &a, &b);
	
	k = (int)(a / b);	// 强制类型转换
	r = a - k * b;
	
	printf("%.2lf", r);
	return 0;
}

C++

#include <iostream>
#include<iomanip>   // 保留小数位所需头文件
using namespace std;
int main()
{
	double a, b, k, r;
	cin >> a >> b;
	
	// a = k * b + r
	k = (int)(a / b);
	r = a - k * b;
	 
	cout << fixed << setprecision(2) << r << endl;  // 保留两位小数
	return 0;
}

🍅 Try it 🗝 1007. 计算余数 (Standard IO)


1008. 水仙花数

题目:输入一个三位数n,判断是否为水仙花数,如果是则输出“YES”,不是则输出“NO”。水仙花数:是指一个3位数,它的每个位上的数字的3次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)
数据范围限制
100<=n<=999

输入
输入一个三位数n。

输出
按照题目描述输出对应结果。

样例输入

153

样例输出

YES

C语言

#include <stdio.h>
#include <math.h>
int main()
{
	int n1, n2, a, b, c;
	scanf("%d", &n1);
	
	a = n1 % 10;
	b = n1 / 10 % 10;
	c = n1 / 100;
	n2 = pow(a, 3) + pow(b, 3) + pow(c, 3);
	
	if (n1 == n2)
		printf("YES");
	else
		printf("NO"); 
	return 0; 
}

C++

#include <iostream>
#include <cmath>   // 使用数学函数库所需头文件
using namespace std;
int main()
{
	int n1, n2, a, b, c;
	cin >> n1;
	
	a = n1 % 10;   // 个位
	b = n1 / 10 % 10;  // 十位
	c = n1 / 100;  // 百位	
	n2 = pow(a, 3) + pow(b, 3) + pow(c, 3);
	
	if (n1 == n2)
		cout << "YES" << endl;
	else
		cout << "NO" << endl;
	return 0;
} 

🍅 Try it 🗝 1008. 水仙花数 (Standard IO)


1009. 分配任务

题目:在社会实践活动中有三项任务分别是:种树、采茶、送水。依据小组人数及男生、女生人数决定小组的接受任务,人数小于10人的小组负责送水(输出water),人数大于等于10人且男生多于女生的小组负责种树(输出tree),人数大于等于10人且男生不多于女生的小组负责采茶(输出tea)。输入小组男生人数、女生人数,输出小组接受的任务。

输入
一行两个空格隔开的数,表示小组中男生和女生的人数。

输出
输出对应的任务。

样例输入

5 3

样例输出

water

C语言

#include <stdio.h>
int main()
{
	int boys, girls, total;
	scanf("%d %d", &boys, &girls);
	
	total = boys + girls;  
	
	if (total >= 10)
	{
		if (boys > girls)
			printf("tree");
		else
			printf("tea");
	}
	else
		printf("water");
		
	return 0;
 } 

C++

#include <iostream>
using namespace std;
int main()
{
	int boys, girls, total;
	cin >> boys >> girls;
	
	total = boys + girls;  // 总人数
	
	if (total >= 10)
	{
		if (boys > girls)
			cout << "tree" << endl;
		else
			cout << "tea" << endl;
	}
	else
		cout << "water" << endl;
	
	return 0;
} 

🍅 Try it 🗝 1009. 分配任务 (Standard IO)


1010. 邮寄包裹

题目:某邮局对邮寄包裹有如下规定:若包裹的重量超过30千克,不予邮寄,对可以邮寄的包裹每件收手续费0.2元,再加上根据下表按重量wei计算的结果:

重量(千克) 收费标准(元/公斤)
wei<=10 0.80
10<wei<=20 0.75
20<wei<=30 0.70
请你编写一个程序,输入包裹重量,输出所需费用或”Fail”表示无法邮寄。

输入
输入一个正整数,表示邮寄包裹的重量。

输出
输出对应的费用(答案保留2位小数)或“Fail”表示无法邮寄。

样例输入

7

样例输出

5.80

C语言

#include <stdio.h>
int main()
{
	int wei;
	scanf("%d", &wei);
	
	double f1, f2, fee;  // 费用
	f1 = 0.8 * 10;
	f2 = f1 + 10 * 0.75;
	
	if (wei <= 30)
	{
		if (wei <= 10)
			fee = wei * 0.8;
		else if (wei <= 20)
			fee = f1 + (wei - 10) * 0.75;
		else
			fee = f2 + (wei - 20) * 0.7;
		fee+=0.2; 
		printf("%.2lf", fee);
	}
	else
		printf("Fail");
	return 0;
}

C++

#include <iostream>
#include <iomanip>   // 保留小数所需头文件
using namespace std;
int main()
{
	int wei;   // 重量
	cin >> wei;
	
	double f1, f2, fee;  // 费用
	f1 = 0.8 * 10;
	f2 = f1 + 10 * 0.75;
	
	if (wei <= 30)
	{
		if (wei <= 10)
			fee = 0.8 * wei;
		else if (wei <= 20)
			fee = f1 + (wei - 10) * 0.75;
		else
			fee = f2 + (wei - 20) * 0.70;
		fee += 0.2;   // 收手续费0.2元
		cout <<	fixed << setprecision(2) << fee << endl;  // 保留2位小数
	}
	else
		cout << "Fail" << endl;   // 超过30千克,无法邮寄
	return 0;
} 

🍅 Try it 🗝 1010. 邮寄包裹 (Standard IO)


1012. 变换密码

题目:一密码变换规则如下:一个正整数对应一个字符;如果该数模123的值在97-122范围,变换为ASCII为该余数对应的小写字符;如果变换不了小写字符,将该数模91,若余数在65-90范围,变换为ASCII为该余数对应的大写字符;如果变换不了大小写字符,变换为“*”。输入一个正整数,输出变换后的字符。

输入
输入一个正整数n(1<=n<=1000)表示原始密码。

输出
输出变换后的密码。

样例输入

42

样例输出

在这里插入图片描述

C语言

#include <stdio.h>
int main()
{
	int n;
	scanf("%d", &n);
	
	char c;
	if (n % 123 >= 97 && n % 123 <= 122)
		c = n % 123;
	else if (n % 91 >= 65 && n % 91 <= 90)
		c = n % 91;
	else
		c = '*';
	printf("%c", c);
	return 0;
}

C++

#include <iostream>
using namespace std;
int main()
{
	int n;
	cin >> n;
	
	char c;
	if (n % 123 >= 97 && n % 123 <= 122)
		c = n % 123;
	else if (n % 91 >= 65 && n % 91 <= 90)
		c = n % 91;
	else
		c = '*';
	cout << c << endl;
	return 0;
} 

🍅 Try it 🗝 1012. 变换密码 (Standard IO)


🍅 🍅 🍅 撸起袖子加油干 🔊

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值