标题:请教问题
只看楼主
xiayuadmin
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2004-11-12
 问题点数:0 回复次数:6 
请教问题

提干:从键盘输入年月日,计算该日是该年的第几天。

程序:

#include "stdio.h" main() { int year,month,days,i,leap,day; static int mtable[][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}}; printf("\nInput year,month,day:"); scanf("%d,%d,%d",&year,&month,&day); leap=0; if(year%4==0&&year%100!=0||year%400==0) leap=1; days=day; for(i=1;i<month;i++) days+=mtable[leap][13]; printf("Days=%d",days); }

怎么运行结果不是很理想呢?请指教那里写错了!

搜索更多相关主题的帖子: year days month 
2004-11-16 10:40
xiayuadmin
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2004-11-12
得分:0 
还有一点问题,

for(i=1;i<month;i++)

其中i<month,这个表达式,是不是有问题?

2004-11-16 10:55
ysfabm
Rank: 1
等 级:新手上路
威 望:1
帖 子:274
专家分:0
注 册:2004-11-9
得分:0 

试试我写的这个

main() { int day,month,year,sum,leap; printf("\nplease input year,month,day\n"); scanf("%d,%d,%d",&year,&month,&day); switch(month)/*先计算某月以前月份的总天数*/ {  case 1:sum=0;break;  case 2:sum=31;break;  case 3:sum=59;break;  case 4:sum=90;break;  case 5:sum=120;break;  case 6:sum=151;break;  case 7:sum=181;break;  case 8:sum=212;break;  case 9:sum=243;break;  case 10:sum=273;break;  case 11:sum=304;break;  case 12:sum=334;break;  default:printf("data error");break; } sum=sum+day;  /*再加上某天的天数*/  if(year%400==0||(year%4==0&&year%100!=0))/*判断是不是闰年*/   leap=1;  else   leap=0; if(leap==1&&month>2)/*如果是闰年且月份大于2,总天数应该加一天*/ sum++; printf("It is the %dth day.",sum);}


精诚所至,
       金石为开!
      PLM技术社区: [url=http://www.]www.[/url] 最专业的PLM技术讨论社区。
2004-11-16 11:58
时空之蕊
Rank: 2
等 级:新手上路
威 望:3
帖 子:691
专家分:0
注 册:2004-10-31
得分:0 

不过这个程序还能改改的!就是你吧那个case语句中的break去掉!然后把12放在前面从12

到1

哈哈,这个好像是经典的揭发!


我渴望掌控时空的核心——用最先进的技术,打造无比美丽的世界!
2004-11-16 22:18
chenjiuzhi
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2004-11-17
得分:0 

时空之蕊说的确实有道理呀!

我顶!

建议楼主看看经典100例呀!

对编程还是很有帮助的

2004-11-17 11:43
nickyutse
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-11-18
得分:0 

試下我寫嘎哩個:

#include <stdio.h>

int main(void)
{
int year,month,day,total=0;
int eachday[13][32];
int i,j;
for(i=1;i<=12;i++)
for(j=1;j<=31;j++)
eachday[i][j]=1;
eachday[2][29]=eachday[2][30]=eachday[2][31]=0;
eachday[4][31]=eachday[6][31]=eachday[9][31]=eachday[11][31]=0;

printf("請輸入年月日,以空格隔開:\n");
loop: scanf("%d%d%d",&year,&month,&day);
if(year%4==0&&year%100!=0||year%400==0) eachday[2][29]=1;
if(eachday[month][day]!=1)
{
printf("歷史上冇哩一日.請重新輸入:\n");
goto loop;
}
for(i=1;i<month;i++)
for(j=1;j<=31;j++)
total+=eachday[i][j];
total+=day;

printf("%d年%d月%d日系%d年的第%d天.\n",year,month,day,year,total);

return 0;
}


2006-11-23 20:38
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
得分:0 
以下是引用xiayuadmin在2004-11-16 10:40:00的发言:

提干:从键盘输入年月日,计算该日是该年的第几天。

程序:

#include "stdio.h"
main()
{
int year,month,days,i,leap,day;
static int mtable[][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};
printf("\nInput year,month,day:");
scanf("%d,%d,%d",&year,&month,&day);
leap=0;
if(year%4==0&&year%100!=0||year%400==0)
leap=1;
days=day;
for(i=1;i<month;i++)
days+=mtable[leap][i];
printf("Days=%d",days);
}

怎么运行结果不是很理想呢?请指教那里写错了!


倚天照海花无数,流水高山心自知。
2006-11-23 21:14



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-7735-1-1.html




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

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