御笔剑客 发表于 2017-12-14 20:41:09

这段代码哪里错了

本帖最后由 御笔剑客 于 2017-12-14 20:45 编辑

题目是:从19990年1月1日开始,某人三天打鱼两天晒网,给出一个年份,判断该人是打鱼还是晒网
#include <stdio.h>
int countday(struct Date);
struct Date{
int year;
int month;
int day}date;
int main()
{
    int i,sumday;
    printf("%请输入今天的日期(如1999 1 1):\n");
    scanf("%d%d%d",date.year,date.month,date.day);
    sumday=countday(date);
    if(0<sumday%5||sumday%5<4) printf("此人今天正在晒网\n");
    else printf("此人今天正在打鱼\n");

      return 0;
}

int countday(struct Date date)
{
    int sumday=0,i;
    int month={0,31,28,31,30,31,30,31,31,30,31,30,31};
    for(i=1990;i<=date.year;i++)
    {
    if((i%100!=0&&i%4==0)||i%400==0)
      sumday+=366;
    else sumday+=365;
    }
    if((date.year%100!=0&&date.year%4==0)||date.year%400==0)
      month++;
    for(i=1;i<=date.month;i++)
      sumday+=month;
    sumday+=date.day;
    return sumday;

}

爱晴海 发表于 2017-12-14 20:50:39

#include <stdio.h>

struct Date{
int year;
int month;
int day;
}date;
int main()
{
    int i,sumday;
    printf("%请输入今天的日期(如1999 1 1):\n");
    scanf("%d%d%d",&date.year,&date.month,&date.day);
    sumday=countday(date);
    if(0<sumday%5||sumday%5<4) printf("此人今天正在晒网\n");
    else printf("此人今天正在打鱼\n");

      return 0;
}

int countday(date)
{
    int sumday=0,i;
    int month={0,31,28,31,30,31,30,31,31,30,31,30,31};
    for(i=1990;i<=date.year;i++)
    {
    if((i%100!=0&&i%4==0)||i%400==0)
      sumday+=366;
    else sumday+=365;
    }
    if((date.year%100!=0&&date.year%4==0)||date.year%400==0)
      month++;
    for(i=1;i<=date.month;i++)
      sumday+=month;
    sumday+=date.day;
    return sumday;

}
目前就看出这,我也是新手,sorry

爱晴海 发表于 2017-12-14 21:12:08

你的这个month数组与全局变量 定义重了

BngThea 发表于 2017-12-14 22:09:42

当遇到闰年的时候你将第二月自增1,遇到几个闰年就递增了几次
页: [1]
查看完整版本: 这段代码哪里错了