题目:
进度条打印倒计时时间, 输入分钟和秒钟, 打印倒计时进度条
要求:
进度条字符串长度为40个字符, 打印格式为: [%s][%.2lf] %dmin: %dsec
打印格式的四个数据分别是 进度条字符串 进度条百分比 剩余分钟 剩余秒钟
进度条字符串用'#'字符填充, 末尾是当前倒计时剩余时间
进度条的刷新频率是10帧(即进度条百分比的刷新帧数)
源码:
#include <iostream>
#include <cstdio>
#include <string>
#include <Windows.h>
using namespace std;
int main()
{
int m, s;
cin >> m >> s;
if (m >= 60 || m < 0 || s < 0)
{
cout << "输入不合法" << endl;
return 1;
}
while (s >= 60)
{
s -= 60;
++m;
}
string bar;
bar.reserve(40); // 进度条字符串长度为40个字符
// 10帧:每秒钟刷新10次,
int sec = m * 60 + s;
float bit = 10.0 / sec;
float per = 0.0;
float s_per = 0.0;
int cnt = 0;
while (sec)
{
per += bit;
s_per += bit;
if (s_per > 2.5)
{
bar += "#";
s_per -= 2.5;
}
++cnt;
if (cnt % 10 == 0)
{
--sec;
}
cout << "bar: [" << bar << "] ";
printf("[%.2f%] %2dmin:%02dsec\r", per, sec / 60, sec % 60); //用回车符结尾
fflush(stdout);
Sleep(100);
}
return 0;
}