C语言:请帮我看下这样 一个求一年天数的程序哪里出错了?

[复制链接]
查看11 | 回复4 | 2011-8-24 09:03:11 | 显示全部楼层 |阅读模式
#includestdio.h#includestdlib.hintsum1(int,int,structmonth1*);intsum2(int,int,structmonth2*);#defineLEN12structmonth1{intmonth;intdate;};structmonth2{intmonth;intdate;};structmonth1months1[LEN]={{1,31},{2,28},{3,31},{4,30},{5,31},{6,30},{7,31},{8,31},{9,30},{10,31},{11,30},{12,31}};structmonth2months2[LEN]={{1,31},{2,29},{3,31},{4,30},{5,31},{6,30},{7,31},{8,31},{9,30},{10,31},{11,30},{12,31}};intmain(void){intyear,month,date;puts(\"pleaseinputtheyear\");scanf(\"%d\",year);puts(\"inputthemonth:\");scanf(\"%d\",month);puts(\"inputthedate:\");scanf(\"%d\",date);if(year0==0){if(year@0==0)printf(\"%d\",sum2(month,date,elseprintf(\"%d\",sum1(month,date,}else{if(year%4==0)printf(\"%d\",sum2(month,date,elseprintf(\"%d\",sum1(month,date,}system(\"pause\");}intsum1(intm,intn,structmonth1*ptr){intsum=0,i;for(i=1;im;i){sum=ptr-date;ptr;}sum=n;returnsum;}intsum2(intm,intn,structmonth2*ptr){intsum=0,i;for(i=1;im;i){sum=ptr-date;ptr;}sum=n;returnsum;}错误好像是数据传递不对。。。
回复

使用道具 举报

千问 | 2011-8-24 09:03:11 | 显示全部楼层
#includestdio.h#includestdlib.h#defineLEN12structmonth1{intmonth;intdate;};structmonth2{intmonth;intdate;};structmonth1months1[LEN]={{1,31},{2,28},{3,31},{4,30},{5,31},{6,30},{7,31},{8,31},{9,30},{10,31},{11,30},{12,31}};structmonth2months2[LEN]={{1,31},{2,29},{3,31},{4,30},{5,31},{6,30},{7,31},{8,31},{9,30},{10,31},{11,30},{12,31}};intsum1(intm,intn,structmonth1*ptr){intsum=0,i;for(i=1;im;i){sum=ptr-date;ptr;}sum=n;returnsum;}intsum2(intm,intn,structmonth2*ptr){intsum=0,i;for(i=1;im;i){sum=ptr-date;ptr;}sum=n;returnsum;}intmain(void){intyear,month,date;puts(\"pleaseinputtheyear\");scanf(\"%d\",puts(\"inputthemonth:\");scanf(\"%d\",puts(\"inputthedate:\");scanf(\"%d\",if(year0==0){if(year@0==0)printf(\"%d\",sum2(month,date,months2));elseprintf(\"%d\",sum1(month,date,months1));}else{if(year%4==0)printf(\"%d\",sum2(month,date,months2));elseprintf(\"%d\",sum1(month,date,months1));}system(\"pause\");}以上是修改后的函数:原函数的问题是:四个printf(\"%d\",sum2(month,date,中不需要在取地址操作了,months2和months1就表示的是这个数组的首地址。还有我把函数sum1和函数sum2放在主函数前面,你就可以直接调用不需要在进行说明了。如果你不想把sum1和sum2函数放在main的前面得话,你就必须在mian函数里面进行说明,在mian外面是会出错的。修改方法:把intsum1(int,int,structmonth1*);intsum2(int,int,structmonth2*);放到mian里面就OK了
回复

使用道具 举报

千问 | 2011-8-24 09:03:11 | 显示全部楼层
puts(\"pleaseinputtheyear\");//scanf(\"%d\",year);scanf(\"%d\",puts(\"inputthemonth:\");//scanf(\"%d\",month);scanf(\"%d\",puts(\"inputthedate:\");//scanf(\"%d\",date);scanf(\"%d\",/*scanf语句写错了,你忘了取地址*/
回复

使用道具 举报

千问 | 2011-8-24 09:03:11 | 显示全部楼层
#includestdio.h#includestdlib.hintsum1(int,int,structmonth1*);intsum2(int,int,structmonth2*);#defineLEN12structmonth1{intmonth;intdate;};structmonth2{intmonth;intdate;};structmonth1months1[LEN]={{1,31},{2,28},{3,31},{4,30},{5,31},{6,30},{7,31},{8,31},{9,30},{10,31},{11,30},{12,31}};structmonth2months2[LEN]={{1,31},{2,29},{3,31},{4,30},{5,31},{6,30},{7,31},{8,31},{9,30},{10,31},{11,30},{12,31}};intmain(void){intyear,month,date;puts(\"pleaseinputtheyear\");scanf(\"%d\",//puts(\"inputthemonth:\");//scanf(\"%d\",month);//puts(\"inputthedate:\");//scanf(\"%d\",date);if(year0==0){if(year@0==0)printf(\"%d\",sum2(12,months2-date,elseprintf(\"%d\",sum1(12,months1-date,}else{if(year%4==0)printf(\"%d\",sum2(12,months2-date,elseprintf(\"%d\",sum1(12,months1-date,}system(\"pause\");}intsum1(intm,intn,structmonth1*ptr){intsum=0,i;for(i=0;im-1;i){sum=ptr.date;//ptr;}sum=n;returnsum;}intsum2(intm,intn,structmonth2*ptr){intsum=0,i;for(i=0;im-1;i){sum=ptr.date;//ptr;}sum=n;returnsum;}尽管改的有点乱,传数据有问题
回复

使用道具 举报

千问 | 2011-8-24 09:03:11 | 显示全部楼层
输年份就可以了啊,何必这么麻烦呢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行