一本通编程启蒙例13及练习题解

例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;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值