我自己写了个,但不知道为什么结果是垃圾值,求大神解答!
#include <stdio.h>
int main()
{
int year;
int month;
int day,days;
int i;
int date[12][13] = {
{31,28,31,30,31,30,31,31,30,31,30,31},
{31,29,31,30,31,30,31,31,30,31,30,31}};
printf("请输入当天的日期:");
scanf("%d %d %d",&year,&month,&day);
if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
{
for(i=0;i<month;i++)
{
days += date[2][i];
}
}
else
{
for(i=0;i<month;i++)
{
days += date[1][i];
}
}
days += day;
printf("今天是今天的第%d天\n",days);
return 0;
}
帮你修改了下,应该没错了,
#include <stdio.h>为什么i<month - 1?
追答因为数组是从0开始的,而月份是从1开始的,而且假如你的月份是6月,那么你数组只能加到5月份然后加上6月的低多少天,如果再加就多了。
例如:假如你输入的是2000 1 1,那么结果应该是第一天,所以for(i=0;i<month-1;i++)应该执行0次,
假如输入的是2000 2 1,for(i=0;i<month-1;i++)应该执行1次,
从这两点都可以知道i<month-1;
#include <stdio.h>
int main()
{
int year,month,day,days=0;
int i;
int date[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
printf("请输入当天的日期:");
scanf("%d %d %d",&year,&month,&day);
if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
{
for(i=0;i<month-1;i++)
{
days += date[i];
}
if(month>2) days++;
}
else
{
for(i=0;i<month-1;i++)
{
days += date[i];
}
}
days += day;
printf("今天是今天的第%d天\n",days);
return 0;
}
我写这个程序是为了熟悉二维数组,可是你用了一维数组。先表示感谢,但是满意答案不能给你了
加了days = 0,虽然没有出现lj值,但是还是没有到达效果啊 ,我输了2012 2 2日,它显示的是第2天,哪里错了?
这个没关系的,关键不是这个问题
追答#include
void value(int year,int mount,int day){
int mounts[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int i,n,s;
mount--;
for(i=0;i<mount;i++){
n+=mounts[i];
}
s=n+day;
if((year%4==0&&year%100!=0)||year%400==0){
s++;
printf("%d年%d月%d号是今年的第%d天",year,mount+1,day,s);
}
else
{
printf("%d年%d月%d号是今年的第%d天",year,mount+1,day,s);
}
}
main(){
printf("请输入当天的年份月份和几号:");
int y,m,d;
scanf("%d,%d,%d",&y,&m,&d);
value(y,m,d);
}
做一下说明:1,3,5,7,8,10,12月份有31天,4,6,9,11月份有30天 。
而二月份呢就是用来区分是平年还是闰年了,平年的二月有28天,闰年的二月有29天,在这里我先设有28天,之后再来判断到底是平年还是闰年如果是闰年自增1在输出,否则直接输出