利用结构体类型描述年、月、日,输入一个日期,统计该日期是本年度第多少天。

#include"stdio.h"voidmain(){structdate{intyear;intmonth;intday;}inti,leap;intdays=0;p... #include"stdio.h"
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);
}
请高手帮我看看那这个程序哪里有问题,这是明天要交的作业,急求、急求。。
展开
 我来答
貌似風輕
推荐于2016-07-12 · TA获得超过7280个赞
知道大有可为答主
回答量:1672
采纳率:94%
帮助的人:695万
展开全部

你结构体用错了。

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);

}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式