C/C++问题 高手帮帮忙

来源:百度知道 编辑:UC知道 时间:2024/05/22 08:52:38
代码如下(能运行):
#include <iostream>
#include <cstdlib>
#include <windows.h>
using namespace std;

int main(void)
{
int i,seconds;
cout<<"Please enter the seconds(请输入设定的时间):";
cin>>seconds;
cout<<"现在开始定时"<<"\n"<<"时间还剩(单位秒): ";
for( i = seconds; i >= 0; --i )
{
if(i >=10)
printf("\b%d\b\b", i );
if(i == 9)
printf("\b%d\b ", i );
else
fprintf( stdout, "%d\b",i );
Sleep(1000);
}
return 0;
}

输入13
仔细观察数字有10变9时出现0(按理应该是9)???怎么回事
然后8 7 6 ...正常显示

还有如果输入103
那么当数字由100变为99时
如何保证99能正常显示(即在原100处显示)
我只知道用printf("\b\b%d\b\b\b", i );可以解决100变为99的问题

请问有没有更好的办法???
如输入1002时 让其由1000变为999时正常显示

我来了,好不容易才找到啊。
#include <iostream>
#include <cstdlib>
#include <windows.h>
using namespace std;

int main()
{
int i,seconds;
cout<<"Please enter the seconds(请输入设定的时间):";
cin>>seconds;
cout<<"现在开始定时"<<"\n"<<"时间还剩(单位秒): ";
for( i = seconds; i >= 0; --i )
{
int temp=i,j=0,n;
while(temp!=0)
{
temp/=10;
++j;
}
n=j;
cout << i << " ";
for(j=0;j<n+1;j++)
cout << "\b";
Sleep(1000);
}
cout << endl;
return 0;
}

printf(\"\\b\\b\\b\\b\\b\\b%6d\",i);
\\b\\b... (n个) <=> %nd
\\b的个数等于%nd中n