C的高手们快进来帮我看看下简单的程序

来源:百度知道 编辑:UC知道 时间:2024/09/24 02:35:02
#include<stdio.h>
void main()
{void day();
int a[2][13]={{0,31,29,31,30,31,30,31,31,30,31,30,31},{0,31,28,31,30,30,30,31,31,30,31,30,31}},c,s;
int days,*month=&c,*d=&s,year;
year=2003;
days=100;
day(*d,*month,days,a,year);
printf("%d,%d",c,s);
}
void day(int *d,int *month,int days,int a[2][13],int year)
{int i,leap,b;
leap=(year%4==0&&year%100!=0||year%400==0);
for(i=1;days>(b=*(*(a+leap)+i));i++)
days-=b;
*month=i;
*d=days; 这里我把值直接利用指针传回来
}
为什么我运行的时候应用程序错误什么指令引用的什么内存 该内存不能该为“written"哪里错了啊拜托了谢谢

/*呵呵,哪有这么简单!
语法错大家都看到了,关键是逻辑错啊!啊啊啊啊!

本程序是想实现的功能是:输入年份很当年的第几天,算出这天是当年的几月份第几天是吗!?就是几月几号!?

*/
#include<stdio.h>
void main()
{
void day(int *d,int *month,int days,int year);

int c, s, days, year;
int *month=&c, *d=&s;
/*printf("Please input year and days!\n year= ");
scanf("%d", &year);
printf(" days= ");
scanf("%d", &days);*/
year=2003;
days=100;
day(d, month, days, year);
printf("%d, %d", c, s);
}

void day(int *d,int *month, int days, int year)
{

int a[2][12]={{31,29,31,30,31,30,31,31,30,31,30,31},
{31,28,31,30,30,30,31,31,30,31,30,31}};
int i, leap;
//leap=(year%4==0&&year%100!=0||year%400==0);
if(year%4==0)//不用管书上说的,这个简单
leap=0;//如果是闰年
else
leap=1;//如果不是闰年
/*for(i=1;days>(b=*(*(a+leap)+i));i++)
days-=b; */
for(i=0;