利用结构体类型描述年、月、日,输入一个日期,统计该日期是本年度第多少天。
void main()
{
struct date
{
int year;
int month;
int day;
}
int i,leap;
int days=0;
printf("请输入年月日:");
scanf("%d %d %d",&date.yeas,&date.month,&date.day);
if(date.year/4==0&&date.year/100!=0||date.year/400==0)
leap=1;
for(i=1;i<date.month;i++)
{
if(i=1||3||5||7||8||10||12)
days+=30;
else if(i=4||6||9||11)
days+=30;
else if(leap==1)
days+=29;
else
days+=28;
}
days+=a.day;
printf("%d\t%d\t%d\t",date.year,date.month,date.day);
}
请高手帮我看看那这个程序哪里有问题,这是明天要交的作业,急求、急求。。 展开
你结构体用错了。
struct date
{
int year;
int month;
int day;
}; //有分号
struct date date1; //定义具体的结构体变量
用的时候是date1.year date1.month ……
具体的建议你再翻下书。
判断闰年的地方不是 除 “/” 而是取余“%”
if(date1.year%4==0&&date1.year%100!=0||date1.year%400==0)
leap=1;
if(i=1||3||5||7||8||10||12)
这样写也是错的,并且你把判断等于的“==”写成了赋值“=”
这里可以用switch
整个代码如下:
#include"stdio.h"
void main()
{
struct date
{
int year;
int month;
int day;
};
struct date date1;
int i,leap;
int days=0;
printf("请输入年月日:");
scanf("%d %d %d",&date1.year,&date1.month,&date1.day);
if(date1.year%4==0&&date1.year%100!=0||date1.year%400==0)
leap=1;
for(i=1;i<date1.month;i++)
{
switch(i)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days+=31;
break;
case 2:
if(leap==1)
days+=29;
else
days+=28;
break;
case 4:
case 6:
case 9:
case 11:
days+=30;
break;
}
}
days+=date1.day;
printf("%d年%d月%d日是该年的第%d天\n",date1.year,date1.month,date1.day,days);
}