2069:【例2.12 】糖果游戏
题目描述
解题思路
- 读取输入:获取每个小朋友初始的糖果数。
- 计算分糖果:每个小朋友将糖果均分为三份,多余的糖果吃掉,自己保留一份,其余两份分给两边的小朋友。
- 汇总结果:计算一轮游戏后,每个小朋友手上的糖果总数。
- 输出结果:按要求格式输出每个小朋友的糖果数。
知识点讲解
代码实现
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int buf[5];
for(int i = 0; i < 5; i++)
{
cin >> buf[i];
}
for(int i = 0; i < 5; i++)
{
buf[i] -= buf[i] % 3;//吃掉部分。
buf[i] /= 3;//自己留一份
buf[(i + 4) % 5] += buf[i];//给左边一份
buf[(i + 1) % 5] += buf[i];//给右边一份
}
for(int i = 0; i < 5; i++)
{
cout << setw(5) << buf[i];
}
return 0;
}
代码解析
- 初始糖果数存储在数组
buf
中。 - 吃掉的糖果为
buf[i] % 3
,用于分配的糖果为buf[i] -= buf[i] % 3
。 - 每个小朋友分配后的糖果存储在
buf
数组中。 - 输出时使用
setw(5)
保证输出格式为每个数字占据5位宽度,与题目要求一致。
1024:保留3位小数的浮点数
题目描述
解题思路
- 读取输入:从输入中读取一个浮点数。
- 格式化输出:使用C++标准库的功能保留3位小数后输出该浮点数。
代码实现
#include <iostream>
#include <iomanip> // 包含用于输出格式化的库
using namespace std;
int main() {
float value;
cin >> value; // 从标准输入读取一个单精度浮点数
// 设置输出的浮点数精度为3位小数
cout << fixed << setprecision(3) << value << endl;
return 0;
}
代码解析
- 头文件:包含
<iostream>
用于基本输入输出操作,<iomanip>
用于设置输出格式。 - 输入操作:使用
cin
读取一个单精度浮点数。 - 输出操作:
cout << fixed
:设置cout
以固定点表示法输出浮点数。setprecision(3)
:设置浮点数输出时保留3位小数。- 最终输出的浮点数
value
将保留3位小数。
这个程序能有效地读取一个浮点数并输出它保留3位小数的结果,符合题目要求。
1025:保留12位小数的浮点数
题目描述
解题思路
- 读取输入:从标准输入读取一个双精度浮点数。
- 格式化输出:设置输出浮点数时保留12位小数,并输出。
代码实现
#include <iostream>
#include <iomanip> // 包含用于格式化输出的库
using namespace std;
int main() {
double value;
cin >> value; // 从标准输入读取一个双精度浮点数
// 设置输出的浮点数精度为12位小数
cout << fixed << setprecision(12) << value << endl;
return 0;
}
代码解析
- 头文件说明:
<iostream>
用于标准输入输出操作。<iomanip>
提供了设置输出格式的功能,如setprecision
,用于设置浮点数输出的小数位数。
- 输入处理:通过
cin
读取一个双精度浮点数。 - 输出格式化:
- 使用
cout << fixed
来确保浮点数以固定点方式输出。 setprecision(12)
设置后续浮点数输出保留12位小数。
- 使用
这个程序能够有效地处理和格式化双精度浮点数的输入和输出,确保输出的数值精确到小数点后12位。
1026:空格分隔输出
题目描述
解题思路
- 读取输入:从标准输入依次读取一个字符、一个整数、一个单精度浮点数和一个双精度浮点数。
- 格式化输出:将这些值按顺序输出,每个值之间用一个空格分隔,并确保浮点数输出保留6位小数。
代码实现
#include <iostream>
#include <iomanip> // 包含设置输出格式的库
using namespace std;
int main() {
char ch;
int integer;
float singleFloat;
double doubleFloat;
// 读取输入
cin >> ch >> integer >> singleFloat >> doubleFloat;
// 设置浮点数输出精度为6位小数
cout << fixed << setprecision(6);
// 输出结果,各数据项之间使用空格分隔
cout << ch << " " << integer << " " << singleFloat << " " << doubleFloat << endl;
return 0;
}
代码解析
- 头文件说明:
<iostream>
用于标准输入输出。<iomanip>
提供了格式化输出的功能,例如setprecision
用于设置浮点数输出的小数位数。
- 输入处理:通过
cin
依次读取字符、整数、单精度浮点数和双精度浮点数。 - 输出格式化:
- 使用
cout << fixed
确保浮点数以固定点格式输出。 setprecision(6)
设置浮点数输出时保留6位小数。- 输出时使用空格 (
" "
) 分隔各个数据项,确保格式清晰易读。
- 使用
此程序通过精确控制输出格式,能够满足题目要求,确保数据的准确和美观展示。
1027:输出浮点数
题目描述
解题思路
- 读取输入:从标准输入接收一个双精度浮点数。
- 格式化输出:
- 第一行:使用默认的浮点数格式。
- 第二行:保留5位小数。
- 第三行:使用科学计数法格式。
- 第四行:使用
%g
格式,根据数值自动选择显示方式。
代码实现
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
double number;
cin >> number; // 从标准输入读取一个双精度浮点数
// 第一行:使用默认的浮点数格式(通常是保留6位小数)
cout << fixed << setprecision(6) << number << endl;
// 第二行:保留5位小数的浮点数格式
cout << fixed << setprecision(5) << number << endl;
// 第三行:使用科学计数法格式
cout << scientific << setprecision(6) << number << endl;
// 第四行:使用%g格式输出,自动选择最合适的表示方法
cout.unsetf(ios_base::floatfield); // 清除fixed或scientific状态
cout << setprecision(6) << number << endl;
return 0;
}
代码解析
- 使用
cout << fixed
和setprecision(6)
首次输出浮点数,默认保留六位小数。 - 切换到
fixed << setprecision(5)
保留五位小数输出。 - 使用
cout << scientific
转为科学计数法,仍然保留六位小数。 - 最后,通过
cout.unsetf(ios_base::floatfield);
清除浮点格式设置,并使用setprecision(6)
通过%g
自动选择格式输出。
这段程序能够准确地按照要求格式输出双精度浮点数,保证输出精度与美观。
1028:字符菱形
题目描述
解题思路
要构建一个由输入字符组成的菱形,可以通过输出多行字符串,每行根据所需字符数和位置适当地加入空格来实现。具体到对角线长度为5的菱形,我们可以按照以下模式构建:
- 第一行:2个空格,1个字符
- 第二行:1个空格,3个字符
- 第三行:5个字符
- 第四行:1个空格,3个字符
- 第五行:2个空格,1个字符
代码实现
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
char ch;
cin >> ch; // 从标准输入读取一个字符
// 使用标准输出流cout,输出字符菱形的五行
cout << setw(3) << right << ch << endl; // 第一行:居中,占位3,右侧输出字符
cout << setw(2) << right << ch << ch << ch << endl; // 第二行:占位2,输出3个字符
cout << ch << ch << ch << ch << ch << endl; // 第三行:输出5个字符
cout << setw(2) << right << ch << ch << ch << endl; // 第四行:占位2,输出3个字符
cout << setw(3) << right << ch << endl; // 第五行:居中,占位3,右侧输出字符
return 0;
}
代码解析
- 使用
cin
读取一个字符。 - 使用
setw
和right
控制字符输出的位置,setw(n)
设置下一个输出字段的最小宽度为n。当用于字符输出时,它主要是用来添加前置空格,确保字符在适当的位置输出。 - 输出的每行都通过
cout
控制字符的位置和数量,以形成菱形的上半部和下半部对称性。 - 输出的菱形有5行,每行字符的数量和空格数量经过精确计算,以保持菱形的对称性和整洁。
这段代码能够准确地按照要求输出一个使用指定字符组成的菱形,每行字符的位置和数量都精确控制以形成完美的菱形图案。