C语言的一个问题。求大神解答·

题目要求:先输入你想要知道的所有日期总数n。再输入n个日期,如2013124。设计程序,最后输出这是一年中的的几天。(不考虑闰年)。。。如下,这是我写的,但是有时候对有时... 题目要求:先输入你想要知道的所有日期总数n。再输入n个日期,如 2013 12 4。设计程序,最后输出这是一年中的的几天。(不考虑闰年) 。。。
如下,这是我写的,但是有时候对有时候不对,求大神找错

以下是代码 供大神放进软件改动

#include <stdio.h>
int main()
{
int a[12][1]={{31},{30},{31},{30},{31},{30},{31},{31},{30},{31},{30},{31}};
int b[100];
int c[100];
int d[100];
int x,i,n,y,r,j,amount,z;
printf("输入你要判断的日期总数目");
scanf("%d",&x);
for(j=0;j<x;j++)
scanf("%d%d%d",&b[j],&c[j],&d[j]);
for(j=0;j<x;j++)
printf("%d年%d月%d日\n",b[j],c[j],d[j]);

for(j=0;j<x;j++)
{
amount=0;
for(z=0;z<(c[j]-1);z++)
amount+=a[z][1];
printf("%d\n",amount+d[j]);
}

return 0;
}
展开
 我来答
lyqf365
2013-12-04 · TA获得超过1185个赞
知道小有建树答主
回答量:1291
采纳率:100%
帮助的人:772万
展开全部

我给你写了一个

#include <stdio.h>
#include<stdlib.h>
typedef struct _date
{
    int year;
    int month;
    int day;
}date;
int dayofyear(int year,int month, int day);
int dayofyear_date(date d);
int getdaysofmonth(int year,int month);
int isleapyear(int year);
int main()
{
    int count,index,year,month,day,*result;
    date *pdate;
    
    printf("输入你要判断的日期总数目");
    scanf("%d",&count);
    
    if(count > 0)
    {
    
    result = (int*)malloc(sizeof(int)*count);
    pdate = (date*)malloc(sizeof(date)*count);
    
    for(index = 0; index < count; ++index)
    {
        scanf("%d%d%d",&year,&month,&day);
        *(result + index) = dayofyear(year,month,day);
        (pdate + index)->year = year;
        (pdate + index)->month = month;
        (pdate + index)-> day = day;
    }
    
    for(index = 0; index < count; ++index)
    {
        printf("%d年%d月%d日\n",
        (pdate + index)->year,
        (pdate + index)->month,
        (pdate + index)-> day);
    }
    for(index = 0; index < count; ++index)
    {
        printf("%d\n",*(result + index));
    }
    free(pdate);
    free(result);
    }
    
    return 0;

}

int dayofyear(int year,int month, int day)
{
    int i,days = 0;
    for(i=1;i<month;++i)
    {
        days += getdaysofmonth(year,i);
    }
    days += day;
    return days;
}
int getdaysofmonth(int year,int month)
{
    switch(year)
    {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            return 31;
        case 4:
        case 6:
        case 9:
        case 11:
            return 30;
        case 2:
            if(isleapyear(year))
                return 29;
            return 28;
        default:
            return 0;
    }
}
int isleapyear(int year)
{
    return 0;
}
int dayofyear_date(date d)
{
    return dayofyear(d.year,d.month,d.day);
}
追问
显示的不是那个月的第几天,而是一年的第几天
追答
//是这个函数写错了
int getdaysofmonth(int year,int month)
{
    switch(month)
    {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            return 31;
        case 4:
        case 6:
        case 9:
        case 11:
            return 30;
        case 2:
            if(isleapyear(year))
                return 29;
            return 28;
        default:
            return 0;
    }
}
匿名用户
2013-12-04
展开全部
没看出有什么问题。
不知道你为什么要把数组a定义为一个二维数组。
不管考虑不考虑闰年,二月都没有30天。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式