例13.1
定义了字符变量a,整数变量b,单精度浮点数变量c,双精度浮点数变量d。
使用cin依次读取输入的字符、整数、单精度浮点数和双精度浮点数,存储到对应变量中。
输出时,使用cout将各变量输出,之间用空格分隔。
对于浮点数,使用fixed和setprecision(6)设置输出格式,保留6位小数。
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
char a;
int b;
float c;
double d;
cin >> a; // 输入字符a
cin >> b; // 输入整数b
cin >> c; // 输入单精度浮点数c
cin >> d; // 输入双精度浮点数d
cout << a << " " << b << fixed << setprecision(6) << " " << c << " " << d;
return 0;
}
例13.2
1.输入总秒数
2.计算小时数,通过总秒数除以3600秒(1小时)
3.计算分钟数,用总秒数减去小时转换的秒数后,再除以60秒(1分钟)
4.计算秒数,通过总秒数对60取余
5.使用printf输出格式化的时分秒
#include <iostream>
using namespace std;
int main() {
int time;
cin >> time; // 输入总秒数
int hour = time / 3600; // 计算小时数,通过总秒数除以3600秒
int minute = (time - hour * 3600) / 60; // 计算分钟数,用总秒数减去小时转换的秒数,再除以60秒
int second = time % 60; // 计算秒数,用总秒数对60取余
printf("%02d:%02d:%02d", hour, minute, second); // 输出格式化的时分秒
return 0;
}
例13.3
1.定义变量接收输入的时分秒
2.将时分秒转换为总秒数
3.求两个时间的总秒数之差
#include <iostream>
#include <cstring>
using namespace std;
int main() {
int h1, m1, s1, h2, m2, s2; // 定义时分秒的整数变量
char c; // 定义字符变量,用于接收输入中的冒号
cin >> h1 >> c >> m1 >> c >> s1; // 输入第一个时间
cin >> h2 >> c >> m2 >> c >> s2; // 输入第二个时间
int t1 = h1 * 3600 + m1 * 60 + s1; // 将第一个时间转换为秒
int t2 = h2 * 3600 + m2 * 60 + s2; // 将第二个时间转换为秒
int diff = t2 - t1; // 求两个时间的秒数差值
cout << diff << endl; // 输出结果
return 0;
}
练13.1
直接输出即可
#include <iostream>
using namespace std;
int main() {
cout << " 18\n+ 870\n-----------\n 888";
return 0;
}
练13.2
主要逻辑:
1.输入三个整数
2.设置输出宽度为8字符
3.设置右对齐方式
4.按顺序输出三个整数,之间以空格分隔
需要注意:
1.使用cout.width()设置输出宽度
2.使用right设置右对齐
3.每输出一个整数需要重新设置宽度和对齐方式
#include <iostream>
using namespace std;
int main() {
int a, b, c;
cin >> a >> b >> c; // 输入三个整数
cout.width(8);
cout << right << a << " "; // 输出a,右对齐,宽度为8
cout.width(8);
cout << right << b << " "; // 输出b,右对齐,宽度为8
cout.width(8);
cout << right << c << endl; // 输出c,右对齐,宽度为8
return 0;
}
练13.3
1.定义3个字符变量a,b,c分别存储输入的三位数的个位、十位、百位
2.输入时按顺序输入三个数字字符
3.输出时调换顺序,先输出个位c,然后十位b,最后百位a
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char a, b, c;
cin >> a >> b >> c; // 输入三个字符,表示一个三位数
cout << c << b << a; // 输出顺序变为cba,实现反向输出
return 0;
}
练13.4
1.分析问题:有5个小朋友按编号顺序排列成一个圆圈,进行分糖果的游戏,要求计算每轮分糖果后每个小朋友手上的糖果数。
2.确定解题思路:可以模拟整个分糖过程,从编号为1的小朋友开始,每次进行分糖,并计算分给左右邻居后的糖果数。
3.算法设计: (1) 定义5个变量记录每个小朋友的初始糖果数 (2) 模拟每个小朋友分糖的过程: a. 计算分给左右邻居的糖果数 b. 更新自己和两个邻居的糖果数 (3) 循环进行上述分糖过程,直到最后一个小朋友分完 (4) 输出每个小朋友分糖后手上的糖果数
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int a, b, c, d, e;
cin >> a >> b >> c >> d >> e; // 输入5个小朋友的初始糖果数
a = a / 3; // 小朋友1分给左右邻居各1/3
b = b + a; // 小朋友2获得小朋友1的糖果
e = e + a; // 小朋友5获得小朋友1的糖果
b = b / 3; // 小朋友2分给左右邻居各1/3
c = c + b; // 小朋友3获得小朋友2的糖果
a = a + b; // 小朋友1获得小朋友2的糖果
// 依次进行小朋友3、4、5的分糖果
cout.fill(' '); // 输出时填充空格
cout << setw(5) << a << setw(5) << b << setw(5) << c << setw(5) << d << setw(5) << e;
return 0;
}