當前位置:首頁 » 編程語言 » 高斯日記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天 你的演算法也不算錯 可能和出題人的想法差了一點

熱點內容
androidactivity生命 發布:2024-04-27 07:33:48 瀏覽:83
win2008伺服器搭建網站 發布:2024-04-27 07:26:51 瀏覽:639
java的vector 發布:2024-04-27 07:05:00 瀏覽:203
舊電腦共享伺服器 發布:2024-04-27 06:32:21 瀏覽:339
java程序練習 發布:2024-04-27 06:24:00 瀏覽:438
sql30 發布:2024-04-27 06:22:10 瀏覽:55
怎樣防止sql注入 發布:2024-04-27 06:11:25 瀏覽:236
安卓為什麼不能登蘋果系統的游戲 發布:2024-04-27 06:11:23 瀏覽:601
編程日課 發布:2024-04-27 05:56:54 瀏覽:620
漏洞上傳工具 發布:2024-04-27 05:50:58 瀏覽:717