当前位置:首页 » 编程语言 » 高斯日记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天 你的算法也不算错 可能和出题人的想法差了一点

热点内容
随机启动脚本 发布:2025-07-05 16:10:30 浏览:518
微博数据库设计 发布:2025-07-05 15:30:55 浏览:20
linux485 发布:2025-07-05 14:38:28 浏览:300
php用的软件 发布:2025-07-05 14:06:22 浏览:751
没有权限访问计算机 发布:2025-07-05 13:29:11 浏览:428
javaweb开发教程视频教程 发布:2025-07-05 13:24:41 浏览:690
康师傅控流脚本破解 发布:2025-07-05 13:17:27 浏览:235
java的开发流程 发布:2025-07-05 12:45:11 浏览:681
怎么看内存卡配置 发布:2025-07-05 12:29:19 浏览:279
访问学者英文个人简历 发布:2025-07-05 12:29:17 浏览:829