c++程序输入某年求详细天数我写的有什么问题呢?(虽然有点笨比但确实没学太多)

问题:给定一个日期,输出这个日期是该年的第几天。
Input
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
Output
对于每组输入数据,输出一行,表示该日期是该年的第几天。
Sample Input
1985/1/20
2006/3/12
Sample Output
20
71

笨比程序样例:
#include<iostream>
using namespace std;

int main()
{
int year , month , day;
while(cin>>year>>month>>day)
{
if(month==1)
cout<<day<<endl;
else
{
if((year%4==0 && year%100!=0)||year%400==0)
{
if(month==2)
cout<<31+day<<endl;
else if(month==3)
cout<<31+29+day<<endl;
else if(month==4)
cout<<31+29+31+day<<endl;
else if(month==5)
cout<<31+29+31+30+day<<endl;
else if(month==6)
cout<<31+29+31+30+31+day<<endl;
else if(month==7)
cout<<31+29+31+30+31+30+day<<endl;
else if(month==8)
cout<<31+29+31+30+31+30+31+day<<endl;
else if(month==9)
cout<<31+29+31+30+31+30+31+31+day<<endl;
else if(month==10)
cout<<31+29+31+30+31+30+31+31+30+day<<endl;
else if(month==11)
cout<<31+29+31+30+31+30+31+31+30+31+day<<endl;
else if(month==12)
cout<<31+29+31+30+31+30+31+31+30+31+30+day<<endl;
}
else
{
if(month==2)
cout<<31+day<<endl;
else if(month==3)
cout<<31+28+day<<endl;
else if(month==4)
cout<<31+28+31+day<<endl;
else if(month==5)
cout<<31+28+31+30+day<<endl;
else if(month==6)
cout<<31+28+31+30+31+day<<endl;
else if(month==7)
cout<<31+28+31+30+31+30+day<<endl;
else if(month==8)
cout<<31+28+31+30+31+30+31+day<<endl;
else if(month==9)
cout<<31+28+31+30+31+30+31+31+day<<endl;
else if(month==10)
cout<<31+28+31+30+31+30+31+31+30+day<<endl;
else if(month==11)
cout<<31+28+31+30+31+30+31+31+30+31+day<<endl;
else if(month==12)
cout<<31+28+31+30+31+30+31+31+30+31+30+day<<endl;
}
}
}
return 0;

}

第1个回答  2019-09-23
这程序,确实够“壮观”的。
下面已经修改完成:
#include<iostream>
using namespace std;

int main()
{ int year , month , day;
char c; //新加内容
while(cin>>year>>c>>month>>c>>day) //有修改
{ if(month==1)
cout<<day<<endl;
else
{ if((year%4==0 && year%100!=0)||year%400==0)
{ if(month==2)
cout<<31+day<<endl;
else if(month==3)
cout<<31+29+day<<endl;
else if(month==4)
cout<<31+29+31+day<<endl;
else if(month==5)
cout<<31+29+31+30+day<<endl;
else if(month==6)
cout<<31+29+31+30+31+day<<endl;
else if(month==7)
cout<<31+29+31+30+31+30+day<<endl;
else if(month==8)
cout<<31+29+31+30+31+30+31+day<<endl;
else if(month==9)
cout<<31+29+31+30+31+30+31+31+day<<endl;
else if(month==10)
cout<<31+29+31+30+31+30+31+31+30+day<<endl;
else if(month==11)
cout<<31+29+31+30+31+30+31+31+30+31+day<<endl;
else if(month==12)
cout<<31+29+31+30+31+30+31+31+30+31+30+day<<endl;
}
else
{ if(month==2)
cout<<31+day<<endl;
else if(month==3)
cout<<31+28+day<<endl;
else if(month==4)
cout<<31+28+31+day<<endl;
else if(month==5)
cout<<31+28+31+30+day<<endl;
else if(month==6)
cout<<31+28+31+30+31+day<<endl;
else if(month==7)
cout<<31+28+31+30+31+30+day<<endl;
else if(month==8)
cout<<31+28+31+30+31+30+31+day<<endl;
else if(month==9)
cout<<31+28+31+30+31+30+31+31+day<<endl;
else if(month==10)
cout<<31+28+31+30+31+30+31+31+30+day<<endl;
else if(month==11)
cout<<31+28+31+30+31+30+31+31+30+31+day<<endl;
else if(month==12)
cout<<31+28+31+30+31+30+31+31+30+31+30+day<<endl;
}
}
}
return 0;
}追问

输入的时候的那个c有什么用呢

大佬在吗?

追答

这两个%c,用于吸收两个'/'

追问

ok谢谢

已采纳

本回答被提问者和网友采纳