| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 651 人关注过本帖
标题:谁能检查一下下面程序的错误在哪里啊
只看楼主 加入收藏
泪为谁而流
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-10-3
结帖率:0
收藏
已结贴  问题点数:20 回复次数:7 
谁能检查一下下面程序的错误在哪里啊

这是代码
#include <stdio.h>

int leap(int year )
{
 return ((year %4 == 0) && (year % 100 != 0)
  || (year % 400 == 0));
}

void show(int year,int month)
{
 const char month_str[][4]={ "Jan","Feb","Mar","Apl",
  "May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
 const int month_day[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
 int i;
 int j;
 int wdays;
 int mdays;
 int days;
 int m;

 while(i<year)
 { i=1;
 days=0;
  if(leap(i))
  {
   days += 366;
  }
  else
  {
   days += 365;
  }
  i++;
 }
 while (i<month)
 {i=1;
  if(i==2 && leap(year))
  {
   days+=29;
  }
  else
  {
   days+=month_day[i];
  }
 i++;
 }

 printf(" %s (%d)\n",month_str[month-1],year);
 printf(" Mon Tue Wed Thu Fri Sat Sun\n");
 m=days/7-(int)days/7;
 wdays=7*m ;
 while(j<wdays)
 { j=0;
  printf("%4c",' ');
j++;
 }
 if(month == 2 && leap(year))
 {
  mdays=29;
 }
 else
 {
  mdays= month_day[month];
 }
while(i<=mdays)
 { i=1;
  if( i > 1 && days % 7 == 0  )
  {
   printf("\n");
  }
  printf("%4d",i);
  i++;
  days=days+1;
 }
 printf("\n---------------------------\n");
}
 main()
{
int year,month;

printf("输入年和月份:");
scanf("%d%d",&year,&month);
show(year,month);
 }

main()
{
int year;
int month;
printf("输入年和月份:");
scanf("%d%d",&year,&month);
show(year,month);
}
搜索更多相关主题的帖子: 检查 include return while 
2011-10-03 22:40
mengcan555
Rank: 4
等 级:业余侠客
帖 子:104
专家分:253
注 册:2011-9-17
收藏
得分:10 
while(i<year)
 你的i 根本没有初始化,比较有意义吗
2011-10-03 22:59
泪为谁而流
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-10-3
收藏
得分:0 
那i初始化等于1应该放在什么地方呢
2011-10-03 23:04
mengcan555
Rank: 4
等 级:业余侠客
帖 子:104
专家分:253
注 册:2011-9-17
收藏
得分:0 
int i;
 就放到定义出啊,
int i=1;
2011-10-03 23:09
mengcan555
Rank: 4
等 级:业余侠客
帖 子:104
专家分:253
注 册:2011-9-17
收藏
得分:0 
还有下次写程序把注释加上,不然我们改错会很困难
2011-10-03 23:09
泪为谁而流
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-10-3
收藏
得分:0 
给各位添麻烦了。i和j都改了,运行还是不对,要求是输出万年历,结果没有出现下面的数字
2011-10-03 23:21
larryliu
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:58
专家分:128
注 册:2011-9-30
收藏
得分:10 
我在你的基础上改了一下,没全改完,不好意思,偶先睡觉去了~~
对啦,记得要写注释,不然我们帮忙找问题会很辛苦的~~
#include <stdio.h>

int leap(int year )
{
return ((year %4 == 0) && (year % 100 != 0) || (year % 400 == 0));
}

void show(int year,int month)
{
const char month_str[][4]={ "Jan","Feb","Mar","Apl",
  "May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
const int month_day[]={31,28,31,30,31,30,31,31,30,31,30,31}; /*怎么前面有个0?*/
int i;
int j;
int wdays;
int mdays;
int days;
int m;

i=0;
while(i<year)                         /*i没初始化怎么比较?*/
{ i=1;
days=0;
  if(leap(i))
  {
   days += 366;
  }
  else
  {
   days += 365;
  }
  i++;
}
i=0;
while (i<month)                  /*上面用过i了,i应该重新初始化*/
{i=1;
  if(i==2 && leap(year))
  {
   days+=29;
  }
  else
  {
   days+=month_day[i-1];            /*注意数组是以0开始,我知道你前面为什么多个0了,这样才是好的方法*/
  }
i++;
}

printf(" %s (%d)\n",month_str[month-1],year);
printf(" Mon Tue Wed Thu Fri Sat Sun\n");
m=days/7-(int)(days/7);                     /*这里有问题m,days都是整型怎么算m都是0*/
wdays=7*m ;
while(j<wdays)              /*后面这一小节自己研究看看有没问题吧,偶睡觉去咯~~*/
{ j=0;
  printf("%4c",' ');
j++;
}
if(month == 2 && leap(year))
{
  mdays=29;
}
else
{
  mdays= month_day[month];
}
while(i<=mdays)
{ i=1;
  if( i > 1 && days % 7 == 0  )
  {
   printf("\n");
  }
  printf("%4d",i);
  i++;
  days=days+1;
}
printf("\n---------------------------\n");
}
                                      /*多了个main函数*/

main()
{
int year;
int month;
printf("输入年和月份:");
scanf("%d%d",&year,&month);
show(year,month);
return 0;
}
2011-10-04 02:00
泪为谁而流
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-10-3
收藏
得分:0 
麻烦再看看下面有没有错误吧
while(j<wdays)                /*wdays是1年到所在月1号的所有天数和7的余数,让输出的万年历1号之前的天数都变成空格*/
 { j=0;
  printf("%4c",' ');
j++;
 }
 if(month == 2 && leap(year))           /*mdays是所在月的天数*/
 {
  mdays=29;
 }
 else
 {
  mdays= month_day[month];
 }
while(i<=mdays)
 { i=1;
  if( i > 1 && days % 7 == 0  )              /*当1年到所在天总的天数被7整除时万年历换行,好了,就这样了*/

  {
   printf("\n");
  }
  printf("%4d",i);
  i++;
  days=days+1;
 }
 printf("\n---------------------------\n");
}
 main()
{
int year,month;

printf("输入年和月份:");
scanf("%d%d",&year,&month);
show(year,month);
 }

main()
{
int year;
int month;
printf("输入年和月份:");
scanf("%d%d",&year,&month);
show(year,month);
}
2011-10-04 20:41
快速回复:谁能检查一下下面程序的错误在哪里啊
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017173 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved