当前位置:首页 » 编程语言 » 高斯日记c语言

高斯日记c语言

发布时间: 2023-01-30 22:30:55

‘壹’ c语言 高斯日记 我的答案是1779-10-14 求大佬看下哪里出错 感谢啊 标准答案1779-7-16

这《高斯日记》的题目为什么不贴出来呢?因为题目本身与程序是否正确是密切相关的啊!

正面就只能靠“猜测”来试了。

#include<stdio.h>
intifleapyear(intyear)
{if(year%4==0&&year%100!=0||year%400==0)return29;
elsereturn28;
}
intmain()
{intyear=1791,month=12,day=15;
intn=8113-5343;
intarray[13]={0,31,0,31,30,31,30,31,31,30,31,30,31};
printf("%d ",n);
while(1)
{day++;
if(day>array[month])
{month++;
day=1;
}
if(month==13)
{year++;
array[2]=ifleapyear(year);
month=1;
}
n--;
if(n==0)break;
}
printf("%d-%d-%d ",year,month,day);
return0;
}//1799-7-16

‘贰’ c语言高斯日记

首先我们需要注意一下,题干中“高斯生日1777年4月30日的5343天后是1791年12月15日”,这里得出一个结论,高斯生日当天为第1天。

求高斯日记所标注的数字的年月日,可以自1777年4月30日起,累加“标注数字-1次”来得出结果。算法的核心即实现日期累加。

#include<stdio.h>

intdpm[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//每个月的天数

structymd{
intyear,month,day;
};

voidgaussBirthday(structymd*gbd){//定义高斯的生日
gbd->year=1777;
gbd->month=4;
gbd->day=30;
}

voidDate(structymd*a,structymd*b){
b->year=a->year;
b->month=a->month;
b->day=a->day;
}

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

intprintDate(structymd*d){//打印日期控制个位数月、日前补0
printf("%d-",d->year);
if(d->month<10)
printf("0%d-",d->month);
else
printf("%d-",d->month);
if(d->day<10)
printf("0%d",d->day);
else
printf("%d",d->day);
printf(" ");
}

voiddate(structymd*gd,intday){//计算距离高斯生日第n天的日期
while(day-1){//自高斯生日起累加至日记标识数字-1
if(gd->month==12&&gd->day==dpm[12]){//年底处理
gd->year++;
gd->month=1;
gd->day=1;
}
elseif(gd->day>=dpm[gd->month]){//月底处理
if(isLeap(gd->year)&&gd->month==2&&gd->day!=29)//闰年2月底处理
gd->day++;
else{
gd->month++;
gd->day=1;
}
}
else
gd->day++;
day--;
}
}

intmain(void){
structymdgbd;//高斯生日
structymdgd;//高斯日记种标识的数字所代表的日期
intday;//高斯日记种标识的数字

gaussBirthday(&gbd);
Date(&gbd,&gd);

printf("请输入高斯日记中标识的数字:");
scanf("%d",&day);
printf("====================================================== ");

date(&gd,day);

printDate(&gd);

return0;
}

执行结果

输入题干已知的“5343”

输出1791-12-15,以验证算法

‘叁’ c语言算法-高斯日记-根据天数计算日期-为什么我总会多算出一天

注意啊 正确答案的算法是 i<8113 实际算的是 1777年 4月30日 和博士学位日期之间隔了8112天 你的算法也不算错 可能和出题人的想法差了一点

热点内容
ftp是什么检测器 发布:2024-05-07 15:37:59 浏览:401
重庆电信服务器租用教学云主机 发布:2024-05-07 15:28:05 浏览:72
python声明对象 发布:2024-05-07 15:28:03 浏览:127
存储过程的应用场景 发布:2024-05-07 15:12:16 浏览:612
车内配置怎么看 发布:2024-05-07 15:11:39 浏览:208
outlook已发送文件夹 发布:2024-05-07 14:08:13 浏览:31
佛系源码 发布:2024-05-07 14:04:03 浏览:674
php蚂蚁 发布:2024-05-07 13:49:22 浏览:401
phpfpmpid 发布:2024-05-07 13:44:29 浏览:521
linuxtty1 发布:2024-05-07 13:40:10 浏览:865