初学者提问C++问题2

来源:百度知道 编辑:UC知道 时间:2024/06/07 22:44:03
下面是我设计用来计算某日期是该年第几天的C++程序,但是运行起来只有输入月份是1的时候才是正确的,月份如果大于1就会显示为0天,为什么呢?

#include <iostream.h>
int run(int year1);
int days(int a,int b,int c);
void main()
{
int year,month,day;
cout<<"Input year,month,day"<<endl;
cin>>year>>month>>day;
cout<<"这一天属于该年的第"<<days(year,month,day)<<"天"<<endl;
}
int days(int a,int b,int c)
{
int i;
for(i=1;i<b;i++)
c=c+28+run(a)&&(i==2)+((1-run(a))&&(i!=2))*(2+(i==1)||(i==3)||(i==5)||(i==7)||(i==8)||(i==10)||(i==12));
return c;
}
int run(int year1)
{
year1=(year1%400==0)||((year1%4==0)&&(year1%100!=0));
return year1;
}

c=c+28+run(a)&&(i==2)+((1-run(a))&&(i!=2))*(2+(i==1)||(i==3)||(i==5)||(i==7)||(i==8)||(i==10)||(i==12));
改为
c=c+28+(run(a)&&(i==2))+((1-run(a))&&(i!=2))*(2+(i==1)||(i==3)||(i==5)||(i==7)||(i==8)||(i==10)||(i==12));

逻辑运算最低级,要先算,需要加括号。

看看我写的一个程序,非常类似,不知道你能否得到启发:

CopyRight: 本来属于原创,您可以任意修改,传播,以及商业用途,需注明来自本博客,希望对您有用!
from: http://blog.csdn.net/wanfustudio author: wanfustudio

Question: 经常在csdn上看到问这样一类问题:
1.tm_hour如何计算一年中第多少天使星期几
2.指定的某年某月某日是第几天
3.一个日期加上一个偏移是哪一天
4.......
这样的问题还有很多不一一赘述

#include <stdio.h>
#include <string.h>
#include <time.h>

const char *Week[]=
{
"星期天",
"星期一",
"星期二",
"星期三",
"星期四",
"星期五",
"星期六"
};