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;
} 展开
如下,这是我写的,但是有时候对有时候不对,求大神找错
以下是代码 供大神放进软件改动
#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;
} 展开
展开全部
我给你写了一个
#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天。
不知道你为什么要把数组a定义为一个二维数组。
不管考虑不考虑闰年,二月都没有30天。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询