首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

高手帮忙解决一下,看得小弟头痛啊该如何处理

2012-03-13 
高手帮忙解决一下,看得小弟头痛啊!这段代码能编译,但是第三项再输入日期后程序就会抱错.导致程序会被退出.

高手帮忙解决一下,看得小弟头痛啊!
这段代码能编译,但是第三项再输入日期后程序就会抱错.导致程序会被退出.
#include <stdio.h>  
#include <stdlib.h>  

char*   month_str[]={ "一月 ", "二月 ", "三月 ", "四月 ", "五月 ", "六月 ", "七月 ", "八月 ", "九月 ", "十月 ", "十一月 ", "十二月 "};  
char*   week[]={ "星期日 ", "星期一 ", "星期二 ", "星期三 ", "星期四 ", "星期五 ", "星期六 "};  


int   IsLeapYear(int   year)         /*判断是否是闰年*/  
{  
if((year%4==0&&year%100!=0)||(year%400==0))  
return   1;  
        else    
return   0;  
}  

int   month_day(int   year,int   month)      
{  
int   mon_day[]={31,28,31,30,31,30,31,31,30,31,30,31};  
       
if(IsLeapYear(year)&&month==2)  
return   29;  
        else  
return(mon_day[month-1]);  

}  

int   DaySearch(int   year,int   month,int   day)   /*判断该日期是星期几?*/  
{  
int   c=0;  
        float   s;  
        int   m;  
        for(m=1;m <month;m++)  
c=c+month_day(year,m);  
                c=c+day;  
                s=year-1+(float)(year-1)/4+(float)(year-1)/100+(float)(year-1)/400-40+c;  
                return   ((int)s%7);  
}  

int   PrintMonth(int   year,int   month)/*打印月份*/  
{  
int   temp,i;  
         
printf( "\n\n%s\n ",month_str[month-1]);  
        printf( "0             1             2             3             4             5             6             \n ");  
       
temp=DaySearch(year,month,1);   /*计算该月的第一天是星期几?*/
for(i=1;i <=month_day(year,month)+temp;i++)  
{  
if(i-temp <=0)  
printf( "               ");  
else   if(i-temp <10)  
printf( "%d             ",i-temp);  
else  
printf( "%d           ",i-temp);  
if(i%7==0)  
printf( "\n ");  
}  
 
return   0;  
}  


int   main(void)/*主函数开始*/  
{  
int   option,da;  
        char   ch;  
        int   year,month,day;  
       
printf( "                                                 Summer   的课程设计\n\n ");  
 
while(1)  
{  


printf( "\n                                             1.查询该日期是星期几. ");  
        printf( "\n                                             2.查询是否是闰年. ");  
        printf( "\n                                             3.输入要打印的月份. ");  
        printf( "\n                                             4.退出程序.\n ");  
scanf( "%d ",&option);  
         

switch(option)  
{
case   1:  
while(1)  
{  
printf( "\n请输入年月日(XXXX,XX,XX): ");  
                scanf( "%d,%d,%d ",&year,&month,&day);  
                da=DaySearch(year,month,day);  
                printf( "\n%d-%d-%d是%s,你要继续吗?(Y/N) ",year,month,day,week[da]);  
fflush(stdin);      
                scanf( "%c ",&ch);                                                                  
if(ch== 'N '||ch== 'n ')  
break;  
}  
break;  

case   2:  
while(1)  
{  
printf( "\n请输入要查询的年份?(XXXX) ");  
                scanf( "%d ",&year);  
if(IsLeapYear(year))  
printf( "\n%d是闰年,你要继续吗?(Y/N) ",year);  
else  
printf( "\n%d不是闰年,你要继续吗?(Y/N)? ",year);  
                        fflush(stdin);  
scanf( "%c ",&ch);                                                                  
if(ch== 'N '||ch== 'n ')  
break;  
}  
break;  

case   3:  
while(1)  
{  
printf( "\n请输入要打印的某年的月份(XXXX,XX) ");  
scanf( "%d ", "%d ",&year,&month);  
PrintMonth(year,month);  
printf( "\n你要继续打印吗?(Y/N)? ");  
                fflush(stdin);  
scanf( "%c ",&ch);  
if(ch== 'N '||ch== 'n ')  
break;  
}  
break;  

case   4:  
fflush(stdin);      
printf( "你确定退出吗?(Y/N) ");  
scanf( "%c ",&ch);  
if(ch== 'Y '||ch== 'y ')  
exit(0);  


break;  

default:  
printf( "\n出错了,请输入指定的数字!\n ");  
break;  
}  
}  
return   0;  
}  


[解决办法]
scanf( "%d ", "%d ",&year,&month);这句有问题,改成
scanf( "%d,%d ",&year,&month);就可以了

[解决办法]
我晕,看了老半天,原来是
scanf( "%d ", "%d ",&year,&month);//出错了
改成:
scanf( "%d,%d ",&year,&month);// "参数 "
这个程序作的不错~ 呵呵。
[解决办法]
呃。。。。。。。
确实不错

热点排行