问题描述
请帮助我解决代码附带的错误。例如,如果您输入1650712999999,则应该显示男性65.07.12,开始时显示1代表男性,开始时显示2代表女性,然后出生日期YY.MM.DD和其他数字无关
#include <iostream>
using namespace std;
int main()
{
long long int n;
int s,d,m,y;
cout << "Enter your SSN" << endl;
cin>>n;
s=0;
y=0;
m=0;
d=0;
if((n <= 2991231999999) && (n >= 1000101000000))
{
n=n/1000000 %10;
s=n/1000000 %10;
y=(n/100000 %10 *10)+(n/10000 %10);
m=(n/1000 %10 *10)+ (n/100 %10);
d=(n/10 %10 *10) + (n %10);
if
{
s=1
cout<<"male "<<y<<"."<<m<<"."<<d;
else
cout<<"female "<<y<<"."<<m<<"."<<d;
}
}
else
{
cout << "Invalid SSN" << endl;
}
return 0;
}
解决方法
-
n=n/1000000 %10;
正在删除必需的数据,因此您应该将其删除。 - 内部
if
语句没有条件,因此您必须添加它。 - 应删除流浪
s=1
,因为此后缺少分号将导致编译错误。 - 内部
if
语句周围缺少一些花括号,因此您必须添加它。 - 您应使用
std::setw
和std::setfill
而不是65.07.12
来获取65.7.12
。
%10
中的固定代码:
#include <iostream>
#include <iomanip> // add this to use setw() and setfill()
using namespace std;
int main()
{
long long int n;
int s,d,m,y;
cout << "Enter your SSN" << endl;
cin>>n;
s=0;
y=0;
m=0;
d=0;
if((n <= 2991231999999) && (n >= 1000101000000))
{
n=n/1000000; // remove %10
s=n/1000000 %10;
y=(n/100000 %10 *10)+(n/10000 %10);
m=(n/1000 %10 *10)+ (n/100 %10);
d=(n/10 %10 *10) + (n %10);
cout << setfill('0'); // add this
if (s == 1) // add condition
{
// remove stray s=1
cout<<"male "<<setw(2)<<y<<"."<<setw(2)<<m<<"."<<setw(2)<<d; // add setw()
} // add this
else
{ // add this
cout<<"female "<<setw(2)<<y<<"."<<setw(2)<<m<<"."<<setw(2)<<d; // add setw()
}
}
else
{
cout << "Invalid SSN" << endl;
}
return 0;
}