C语言
输入年月日
输出是这一年的第几天一下是我的代码
#include<stdio.h>
int Dayofyear(int year,int month,int day);
int main()
{
int year,month,day,i;
printf("请输入年月日");
scanf("%4d,%2d,%2d",&year,&month,&day);//输入年月日
i=Dayofyear(year,month,day);
printf("%4,%2d,%2d 是这一年的第%5d天",year,month,day,i);
return 0;
}
//计算这是这一年的第几天
int Dayofyear(int year,int month,int day)
{
int m=0;
if((year%4==0)&&(year%100!=0)&&(month>2))
{
m=m+1;
}
if (month==1)
m=day;
else if(month==2)
m=day+31;
else if(month==3)
m=day+31+28;
else if(month==4)
m=day+31+28+31;
else if(month==5)
m=day+31+28+31+30;
else if(month==6)
m=day+31+28+31+30+31;
else if(month==7)
m=day+31+28+31+30+31+30;
else if(month==8)
m=day+31+28+31+30+31+30+31;
else if(month==9)
m=day+31+28+31+30+31+30+31+31;
else if(month==10)
m=day+31+28+31+30+31+30+31+31+30;
else if(month==11)
m=day+31+28+31+30+31+30+31+31+30+31;
else if(month==12)
m=day+31+28+31+30+31+30+31+31+30+31+30;
return m;
}
在线等
到底哪里有问题啊
1、首先打开vc6.0, 新建一个vc项目。
2、添加头文件和main函数。
3、定义day、month、year、sum、leap 五个变量。
4、使用 scanf给定义的变量赋值。
5、使用switch语句,先计算某月以前的月份的总天数。
6、使用sum, 加上某天的天数。
7、判断是不是闰年。
8、如果是闰年且月份大于2, 总天数应该加一天。
9、使用printf打印sum。
10、运行程序。
网友这边有提供答案了
https://zhidao.baidu.com/question/136639146227615485.html追问一会看看
如图,第一个错误在输入年月日时发生
应改为如下
明显计算结果还是错误的。我决定帮你彻底改正此程序。(等会追答)
不好意思搞错,用逗号也可以但要按逗号分割
请追问,我追答给你源码。你的程序在闰月的计算上有错误
源代码在网页端可查看:根据你写的,应该如下修改。
int main()源代码都在网页端发,请用网页端查看(手机也不适合编程)
下面是我的改进法,还包括检验日期有效性的功能,比楼下链接的更强大
如图带日期校验功能的代码如下:(请网页端查看),其实我也可以写成类或结构体,这才是C++的正确应用,但由于时间关系,和这个悬赏的分数不成比例,(请你理解)
由于被“网友采纳”无法发网页版的代码,代码如下。
#include
int DayOfyear(int year,int month,int day);
int main()
{
int year,month,day,i;
while(1){//循环方便不断验证
printf("请输入年月日(以逗号隔开,回车键确认):\n");
scanf("%d,%d,%d",&year,&month,&day);//输入年月日
i=DayOfyear(year,month,day);
if(i>0)
printf("%d,%d,%d 是%d年的第%d天\n",year,month,day,year,i);
else
printf("输入的日期:%d,%d,%d 非法!\n",year,month,day);
}
return 0;
}
//计算这是这一年的第几天(带验证非法日期功能!)
int DayOfyear(int year,int month,int day)
{
if(year12 || day Days[month]){ return -1;} //竟然超过下一月的首日(返回非法!)
Count+=add; //若为闰年要将少算1天要加回去!
return Count;
}
}
你的写法1-12月一个个来if效率很低,那位链接的写法也不高明,也要多次判断。最好解法一定是用数组(在实际汇编代码中,数组初始化不需要专门赋值,而是存在程序代码的数据中,用变址寻址直接取得,时间复杂度O(1),如果你学了《数据结构》就知道了。)
楼主闰年的判定写错了(我照抄也写错了)此行改为如下:
if((year%4==0)&&(year%100!=0 || year%400==0)){ add=1; //是闰年
太谢谢你啦 ⋐(ల◕◡◕ల)⋑
本回答被提问者和网友采纳