前言

  • 在前面的内容中,我们一同学习了 C++ 的十道基础题型,这些题型为大家筑牢了 C++ 编程的根基,让我们对 C++ 的基本语法和简单逻辑运用有了初步的认识
  • 接下来我们开始讲解C++输入输出题型

我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的C++算法竞赛篇文章专栏
欢迎来阅读指出不足
https://blog.csdn.net/2402_83322742/category_13001405.html?spm=1001.2014.3001.5482


C++输入输出题型

第一题 浮点除法

题目链接https://ac.nowcoder.com/acm/problem/21992

在这里插入图片描述

  • 关键问题:整数除法会自动舍弃小数部分(如5/2=2),需先将整数转为浮点数再计算。
  • 解决方法:通过a*1.0(或(double)a)将整数转为浮点数,再除以b,得到带小数的商。
  • 输出格式:要求保留 3 位小数,用printf(“%.3f”, 结果)格式化输出(%.3f表示保留 3 位小数的浮点数)
#include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char** argv) {
	int a,b ;
	cin >> a >> b;
	float c= a*1.0/b;
	printf ("%.3f",c);
	return 0;
}

在这里插入图片描述

第二题 B2012 甲流疫情死亡率

题目链接https://www.luogu.com.cn/problem/B2012

在这里插入图片描述

题目核心:输入确诊数和死亡数,计算死亡率(死亡数/确诊数×100%,保留3位小数,带百分号)。
做题思路

  1. 输入处理:用cin读取确诊数a和死亡数b
  2. 死亡率计算:公式为(b * 100.0) / a(乘以100转为百分比,100.0确保浮点数计算)。
  3. 输出格式
    • 需保留3位小数:用%.3f控制。
    • 需带百分号%printf%是特殊字符,用%%表示输出一个%,因此格式为"%.3f%%"
#include <iostream>
using namespace std;

int main() {
	
	int a, b;
	cin >> a >> b;
	printf("%.3f%%\n", b * 100.0 / a);
}

在这里插入图片描述

第三题 B2013 温度表达转化

题目链接 https://www.luogu.com.cn/problem/B2013

在这里插入图片描述
题目核心:输入华氏温度f,转换为摄氏温度c(公式:c=5*(f-32)/9,保留5位小数)。
做题思路

  1. 输入处理:华氏温度可能为小数,用double类型存储f,通过cin读取。
  2. 公式应用:严格按照c=5*(f-32)/9计算,注意运算顺序(先算括号内的f-32)。
  3. 输出格式:要求保留5位小数,用printf("%.5f", c)输出(%.5f表示保留5位小数)。
#include <iostream>
using namespace std;

int main() {

	double f;
	cin >> f;
	double c = 5 * (f - 32) / 9;
	printf("%.5f\n", c);

}

在这里插入图片描述

第四题 B2014 与圆相关的计算

在这里插入图片描述

题目链接https://www.luogu.com.cn/problem/B2014

题目核心:输入半径r,计算直径、周长、面积(均保留4位小数)。
做题思路

  1. 输入处理:半径可能为小数,用double类型存储r
  2. 公式推导
    • 直径 = 2*r(圆的直径是半径的2倍)。
    • 周长 = 2*π*r(圆周率π取3.14159,题目隐含要求)。
    • 面积 = π*r*r(圆面积公式)。
  3. 输出格式:三个结果需依次输出,每个保留4位小数,用printf("%.4f %.4f %.4f", 直径, 周长, 面积)(多个%.4f依次对应三个结果)。
#include <iostream>
using namespace std;
#define p 3.14159

int main() {

	double r;
	cin >> r;
	double l = r * 2;
	printf("%.4f ",l);
	double ll = 2 * p * r;
	printf("%.4f ", ll);
	double c = p * r * r;
	printf("%.4f", c);
}

在这里插入图片描述

第五题 B2004 对齐输出

题目链接https://www.luogu.com.cn/problem/B2004

在这里插入图片描述

题目核心:输入三个整数,每个数占8个字符宽度,右对齐输出。
做题思路

  1. 输入处理:用cin读取三个整数abc
  2. 对齐要求%8d是C语言格式化输出的关键——%d表示输出整数,8表示占8个字符宽度,默认右对齐(若数字长度不足8位,左侧补空格)。
  3. 输出格式:直接用printf("%8d %8d %8d", a, b, c),三个数之间用空格分隔,每个占8位。
#include <iostream>
using namespace std;
int main() {

	int a, b, c;
	cin >> a >> b >> c;
	printf("%8d %8d %8d ", a, b, c);
}

在这里插入图片描述

第六题 糖果游戏

题目链接https://ybt.ssoier.cn/problem_show.php?pid=2069

在这里插入图片描述

做题思路

  1. 规则理解:每个小朋友依次将自己的糖果平分为5份,自己留1份,其余4份分给另外4人(如第一个小朋友分完后,自己保留a/5,另外4人各加a/5)。
  2. 步骤分解
    • 按顺序处理5个小朋友:先处理第1个,再第2个,直到第5个。
    • 每次处理时,先计算当前小朋友要分的数量(当前糖果数 / 5,整数除法,舍弃余数),再更新自己和其他4人的糖果数。
  3. 输出格式:每个结果占5位,用printf("%5d%5d%5d%5d%5d", a,b,c,d,e)%5d表示占5位,右对齐)。
#include <iostream>
using namespace std;
int main() {

	int a, b, c,d,e;
	cin >> a >> b >> c >> d >> e;
	a = a / 3, b = b + a, e = e + a;
	b = b / 3, a = a + b, c = c + b;
	c /= 3, b += c, d += c;
	d /= 3, c += d, e += d;
	e /= 3, d += e, a += e;
	printf("%5d%5d%5d%5d%5d", a, b, c, d, e);
}

在这里插入图片描述

第七题 数字反转

题目链接https://www.luogu.com.cn/problem/P5705

在这里插入图片描述

题目核心:输入一个5位整数,输出反转后的数(如输入12345,输出54321)。
做题思路

  1. 输入特性:题目明确是“5位整数”,因此可直接按5个字符处理(无需考虑位数不足的情况)。
  2. 反转逻辑
    • 方法1(字符处理):用cin读取5个字符(如a,b,c,d,e),直接按e,d,c,b,a的顺序输出(最简单直接)。
    • 方法2(数学处理):通过取余(%10)和除法(/10)拆分每一位(如12345拆分为5,4,3,2,1),再组合输出。
  3. 输出:直接反向输出拆分的字符或数字即可。
#include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char** argv) {
	char a,b,c,d,e;
	cin >>a >>b>>c>>d>>e;
	cout <<e<<d<<c<<b<<a; 
	return 0;
}

在这里插入图片描述

第八题 三角形面积

题目链接https://www.luogu.com.cn/problem/P5708

在这里插入图片描述

题目核心:输入三角形三边长,用海伦公式计算面积(保留1位小数)。
做题思路

  1. 输入处理:三边长可能为小数,用double类型存储a,b,c
  2. 海伦公式应用
    • 先算半周长p = (a + b + c) / 2
    • 面积area = sqrt(p*(p-a)*(p-b)*(p-c))sqrt是开平方函数,需包含头文件#include <cmath>)。
  3. 输出格式:要求保留1位小数,用printf("%.1f", area)输出。
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
	double a, b, c;
	cin >> a >> b >> c;
	double p = (a + b + c)  / 2;

	double sum = sqrt(p * (p - a) * (p - b) * (p - c));
	printf("%.1f", sum);
}

在这里插入图片描述


以上就是这篇博客的全部内容,下一篇我们将继续探索C++算法的更多精彩内容。

我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的C++算法竞赛篇文章专栏
欢迎来阅读指出不足
https://blog.csdn.net/2402_83322742/category_13001405.html?spm=1001.2014.3001.5482

非常感谢您的阅读,喜欢的话记得三连哦

在这里插入图片描述

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐