扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
你的这段代码有问题,for(i=1;im;i++)
专注于为中小企业提供成都网站设计、网站制作服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业山亭免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了数千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
{m=month(m,y);
sum=sum+m;}你这样写,就是将月份重复的加了,如果是三月份,你将会发现你加了好多次,自然就会出现800多天了,下面我将代码改进,答案也是对的。
#include stdio.h
#include math.h
int year(int year);
int month(int month,int year);
void main()
{
int y,m,d,sum,i,n;
printf("请输入年月日\n");
scanf("%d%d%d",y,m,d);
y=year(y);
sum=0;
n=0;//定义一个n,用于每个月份天数相加
for(i=1;im;i++)
{
n=month(m,y);//将你的m替换为n,结果就对了
sum=sum+n;
}
sum=sum+d;
printf("是第%d天",sum);
}
int year(int year)
{
if( (year%4==0 year%100!=0) || (year%400==0) )
return (366);
else return (365);
}
int month(int month,int year)
{
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return (31);
break;
case 2:
{
if (year==366)
return(29);
else return(28);
break;
}
default: return(30);
break;
}
}
如果用 time.h的话,就太简单了,有专门的处理函数:
#include "time.h"
#include "stdio.h"
void puttime()
{
tm *ptr;
time_t lt;
lt=time(NULL);
ptr=localtime(lt);
printf(asctime(ptr));
}
int main()
{
puttime();
return 0;
}
什么时候运行,就显示是什么时间:
我运行时:星期三 1月 15号 时间 年
/*输入时请注意格式和实际月份*/
#include iostream
int day(int year, int month);
int main()
{
int year{};
int month{};
std::cout "请输入年和月(空格隔开):";
std::cin year month;
std::cout "该月天数:" day(year, month) '\n';
return 0;
}
int day(int year, int month)
{
int t{};
if(month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
t = 31;
else if(month == 2)
{
if((year % 4 == 0 year % 100 != 0) || (year % 400 == 0))
t = 29;
else
t = 28;
}
else
t = 30;
return t;
}
#includestructdate//定义结构体类型{inty;intm;intd;};voidmain(){datedt;//定义结构体变量inti,count,mon[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};printf("请输入日期(年月日):");scanf("%d",dt.y);scanf("%d",dt.m);scanf("%d",dt.d);count=dt.d;//把dt.d计入总天数for(i=0;i2(dt.y%4==0dt.y%100!=0||dt.y%400==0))count+=1;//如果是闰年,则要把3月份和3月份以后的总天数加1printf("这一日是这一年的第%d天\n",count);}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流