一个C语言的问题,小白渴求解答

时间:2014.03.29 发布人:灵Growing

一个C语言的问题,小白渴求解答

已解决问题

谷歌灵Growing用户在2014.03.29提交了关于“三菱一个C语言的问题,小白渴求解答”的提问,欢迎大家涌跃发表自己的观点。目前共有2个回答,最后更新于2025-03-01T08:16:16。

这个程序,我修改了好多遍,语法没有错误,但却还是执行不了!

#include<stdio.h>

intmain(void)

{

intyear=0,leap=0,mouth=0,date=0,d=0,c=9,day=0;

printf("enteryearmouthdate\n");

scanf("%d%d%d",&year,&mouth,&date);

//月份的天数,**判断,检查输入

if(year>=2000)

{

switch(month)//检查日期

{

case1:case3:case5:

case7:case8:case10:

case12:

{

if(date<=31)

{

intsumday(intdate,intyear,intmouth);

c=sumday(date,year,mouth);

printf("%4d\n",c);

}

elseprintf("您输入的月份最多31天!!!\n");

}

bre**;

case4:case6:

case9:case11:

{

if(date<=30)

{

intsumday(intdate,intyear,intmouth);

c=sumday(date,year,mouth);

printf("%4d\n",c);

}

elseprintf("您输入的月份最多30天!!!\n");

}

bre**;

case2:


if((year%4==0&&year%100!=0)||(year%400==0))

{

if(date<=29)

{

intsumday(intdate,intyear,intmouth);

c=sumday(date,year,mouth);

printf("%4d\n",c);

}

elseprintf("您输入的月份最多29天!!!\n");

}

elseif((year%4!=0)||(year%100==0&&year%400!=0))

{

if(date<=28)

{

intsumday(intdate,intyear,intmouth);

c=sumday(date,year,mouth);

printf("%d\n",c);

}

elseprintf("您输入的月份最多28天!!!\n");

}


bre**;

default:printf("您输入的月份错误!!!");

}

}

elseprintf("您输入的年份有误!!!\n");

if(c>=1&&c<=3)//判断在干嘛?

printf("渔民这天在打渔!!!\n");

elseif(c==4||c==0)

printf("渔民这天在晒网!!!\n");

else

printf("您输入的年份有误,或者渔民还没开始打鱼晒网!!\n");

printf("总天数=%d\n",day);

return0;

}

//日期循环累加的函数,然互求余的函数

intsumday(intdate,intyear,intmouth)

{

intday=0,leap=0,c=0;

while(year>=2000)

{

if((year%4==0&&year%100!=0)||(year%400==0))

{leap=1;}

else

{leap=0;}//判断是否是瑞年

if(leap)//然后加不同的二月日期

{

switch(mouth)

{

case12:day=31+29+31+30+31+30+31+31+30+31+30+date;bre**;

case11:day=31+29+31+30+31+30+31+31+30+31+date;bre**;

case10:day=31+29+31+30+31+30+31+31+30+date;bre**;

case9:day=31+29+31+30+31+30+31+31+date;bre**;

case8:day=31+29+31+30+31+30+31+date;bre**;

case7:day=31+29+31+30+31+30+date;bre**;

case6:day=31+29+31+30+31+date;bre**;

case5:day=31+29+31+30+date;bre**;

case4:day=31+29+31+date;bre**;

case3:day=31+29+date;bre**;

case2:day=31+date;bre**;

case1:day=date;bre**;

}

}

else

{

switch(mouth)

{

case12:day=31+28+31+30+31+30+31+31+30+31+30+date;bre**;

case11:day=31+28+31+30+31+30+31+31+30+31+date;bre**;

case10:day=31+28+31+30+31+30+31+31+30+date;bre**;

case9:day=31+28+31+30+31+30+31+31+date;bre**;

case8:day=31+28+31+30+31+30+31+date;bre**;

case7:day=31+28+31+30+31+30+date;bre**;

case6:day=31+28+31+30+31+date;bre**;

case5:day=31+28+31+30+date;bre**;

case4:day=31+28+31+date;bre**;

case3:day=31+28+date;bre**;

case2:day=31+date;bre**;

case1:day=date;bre**;

}//每年的日期累加

year=year-1;//从开始的那年逐减

}

}

c=day%5;//求余运算

return(c);

}


希望大家能够帮助她。

详细问题描述及疑问:

这个程序,我修改了好多遍,语法没有错误,但却还是执行不了!

#include<stdio.h>

intmain(void)

{

intyear=0,leap=0,mouth=0,date=0,d=0,c=9,day=0;

printf("enteryearmouthdate\n");

scanf("%d%d%d",&year,&mouth,&date);

//月份的天数,**判断,检查输入

if(year>=2000)

{

switch(month)//检查日期

{

case1:case3:case5:

case7:case8:case10:

case12:

{

if(date<=31)

{

intsumday(intdate,intyear,intmouth);

c=sumday(date,year,mouth);

printf("%4d\n",c);

}

elseprintf("您输入的月份最多31天!!!\n");

}

bre**;

case4:case6:

case9:case11:

{

if(date<=30)

{

intsumday(intdate,intyear,intmouth);

c=sumday(date,year,mouth);

printf("%4d\n",c);

}

elseprintf("您输入的月份最多30天!!!\n");

}

bre**;

case2:


if((year%4==0&&year%100!=0)||(year%400==0))

{

if(date<=29)

{

intsumday(intdate,intyear,intmouth);

c=sumday(date,year,mouth);

printf("%4d\n",c);

}

elseprintf("您输入的月份最多29天!!!\n");

}

elseif((year%4!=0)||(year%100==0&&year%400!=0))

{

if(date<=28)

{

intsumday(intdate,intyear,intmouth);

c=sumday(date,year,mouth);

printf("%d\n",c);

}

elseprintf("您输入的月份最多28天!!!\n");

}


bre**;

default:printf("您输入的月份错误!!!");

}

}

elseprintf("您输入的年份有误!!!\n");

if(c>=1&&c<=3)//判断在干嘛?

printf("渔民这天在打渔!!!\n");

elseif(c==4||c==0)

printf("渔民这天在晒网!!!\n");

else

printf("您输入的年份有误,或者渔民还没开始打鱼晒网!!\n");

printf("总天数=%d\n",day);

return0;

}

//日期循环累加的函数,然互求余的函数

intsumday(intdate,intyear,intmouth)

{

intday=0,leap=0,c=0;

while(year>=2000)

{

if((year%4==0&&year%100!=0)||(year%400==0))

{leap=1;}

else

{leap=0;}//判断是否是瑞年

if(leap)//然后加不同的二月日期

{

switch(mouth)

{

case12:day=31+29+31+30+31+30+31+31+30+31+30+date;bre**;

case11:day=31+29+31+30+31+30+31+31+30+31+date;bre**;

case10:day=31+29+31+30+31+30+31+31+30+date;bre**;

case9:day=31+29+31+30+31+30+31+31+date;bre**;

case8:day=31+29+31+30+31+30+31+date;bre**;

case7:day=31+29+31+30+31+30+date;bre**;

case6:day=31+29+31+30+31+date;bre**;

case5:day=31+29+31+30+date;bre**;

case4:day=31+29+31+date;bre**;

case3:day=31+29+date;bre**;

case2:day=31+date;bre**;

case1:day=date;bre**;

}

}

else

{

switch(mouth)

{

case12:day=31+28+31+30+31+30+31+31+30+31+30+date;bre**;

case11:day=31+28+31+30+31+30+31+31+30+31+date;bre**;

case10:day=31+28+31+30+31+30+31+31+30+date;bre**;

case9:day=31+28+31+30+31+30+31+31+date;bre**;

case8:day=31+28+31+30+31+30+31+date;bre**;

case7:day=31+28+31+30+31+30+date;bre**;

case6:day=31+28+31+30+31+date;bre**;

case5:day=31+28+31+30+date;bre**;

case4:day=31+28+31+date;bre**;

case3:day=31+28+date;bre**;

case2:day=31+date;bre**;

case1:day=date;bre**;

}//每年的日期累加

year=year-1;//从开始的那年逐减

}

}

c=day%5;//求余运算

return(c);

}


期待您的答案,希望你能感受到,我最真诚的谢意 !
希望以下的回答,能够帮助你。

第1个回答

用户名:whoami1978  

首先你的程序有语法错

switch(mouth)//检查日期//这里有错month

另外你的程序在我的编译器上是死循环

再有来自,C本身有一套完整的日期/时间函数,不用写你如此复杂

以下是输入时间和系统时间差的一个程序齐统,供你参考

#include<stdio.h>
#include<stdlib.h>
#include<tim胞e.h>
#include<string.h>

time_tStringToDat问答etime(char*str)
{
s吗曾写附突大岩tructtmtm_;
time_tt_;

intyear,month,day,hour,mi**te,second;
sscanf(str,"%d-%d-%d%d:%d:%d",&year,&month,&day,&hour,&mi**te,&second);
tm_.tm_year=year-190商件离材混普委型0;
tm_.tm_mon=mont春远周阿生今便h-1;
tm_.tm_mday=day;
tm_.tm_hour=h几简实获的速感皇水却our;
tm_.tm_min=mi**te;
tm_.tm_sec=second;
tm_.tm_isdst=0;

t_=mktime(&tm_);//已经减了8个时区
returnt_;//秒时间
}
intmain(void)
{
time_tt,t露跟境显许觉克1;
structtm*ti;
charbuff[30];



printf("请输入时植井鸡各沙间(格式为yyyy-mm-ddhh:ms:ss\n");
gets(buff);
t1=StringToDatetime(buff)燃围;
ti=localtime(&t1);
printf("输入时间为:%s",asctime(ti));

t=time(**LL);
ti=localtime(&t);
printf("当前系构统时间为:%s",asctime(ti)假浓调载村用先坏船);

printf("时间差为%再齐女毛价维ld(秒)%f(天)",营安减音商员曾t-t1,(t-t1)/杆修宽预座推生官86400.0);

r城便举eturn0;
}

第2个回答

用户名:LZM天石  

要bre**啊、