我对C ++很陌生,所以我并不确切地知道我做错了什么,我对java的知识有限,但就是这样。
我目前正在制作一个程序,要求用户输入一年(即2007年),程序将获取当年的2个数字(在本例中为20和o7),然后将前1位数加1(所以21)然后再将它们显示为一年,这将比它们输入的那一年提前100年。
我的问题是当我输入2007或1206或任何以0为第3位的数字时,结果为217(对于2007年的情况)。我想知道是否有办法确保输出包括一年中的所有数字。
到目前为止,这是我的计划:
#include <iostream>
#include <cstdlib>
#include <string>
#include <iomanip>
using namespace std;
int main()
{
cout.precision(4);
cout << setfill('0') << setw(2) << x ;
//declaring variables
int year;
int firstDigits;
int secondDigits;
int newFirstDigits;
int newSecondDigits;
int newYear;
//gets the year from the user
cout <<"please enter a year in YYYY format"<<endl;
cin>>year;
//finds the dirst 2 digits
firstDigits=year/100;
//finds the second 2 digits
secondDigits=year%100;
//adds 100 years to the year that was inputted
newFirstDigits=firstDigits+1;
newSecondDigits=year-firstDigits*100;
//outputs to the user what 100 years
//from the year they entered would be
cout<<"the new year is "<<newFirstDigits<< newSecondDigits<<endl;
system ("PAUSE");
}
提前感谢!
答案 0 :(得分:4)
使用<iomanip>
中的std::setw(int width)
。
你一直使用它:
cout << setfill('0') << setw(2) << x ;
但是只会在打印x
时设置它。将来打印到cout
时,IO操作会丢失。你想要做的是:
cout << "the new year is "
<< setfill('0') << setw(2) << newFirstDigits
<< setfill('0') << setw(2) << newSecondDigits << endl;