菜鸡思路写的数组课后作业练习
新人写的代码{:9_229:} 各位大佬轻喷,我写的真的是麻烦啊!!我再去钻研钻研小甲鱼的答案去!生命计算器那一题
#include<stdio.h>
int main()
{
int year, month, day;
int year1, month1, day1;
int days = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int month_, count, count1;
long sum = 0;
printf("请输入你的生日(如1988.05.20):");
scanf("%d.%d.%d", &year, &month, &day);
printf("请输入今年日期(如2016.03.28):");
scanf("%d.%d.%d", &year1, &month1, &day1);
for(year += 1; year < year1; year++)//从 出生第二年 到 当前日期到前一年 整年的天数
{
if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))
{
sum += 366;
}
else
{
sum += 365;
}
}
month_ = month;
for(month += 1; month <= 12; month++)//出生月份的下一个月 到 年底的时间
{
if((year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) && month == 2)
{
for(; month <= 12; month++)
{
sum += days;
}
sum = sum + 1;
}
else
{
for(; month <= 12; month++)
{
sum += days;
}
}
switch(month_)//生日当月剩余天数
{
case1: sum = sum + (days - day);break;
case2: sum = sum + (days - day);break;
case3: sum = sum + (days - day);break;
case4: sum = sum + (days - day);break;
case5: sum = sum + (days - day);break;
case6: sum = sum + (days - day);break;
case7: sum = sum + (days - day);break;
case8: sum = sum + (days - day);break;
case9: sum = sum + (days - day);break;
case 10: sum = sum + (days - day);break;
case 11: sum = sum + (days - day);break;
case 12: sum = sum + (days - day);break;
}
//从当前日期的年初 到 当前日期前一个月 的天数
if((year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) && month1 >= 3)
{
for(count = 1; count < month1; count++)
{
sum += days;
}
sum += 1;
}
else
{
for(count = 1; count < month1; count++)
{
sum += days;
}
}
//当前日期 当前月份下的“日”的天数
for(count1 = 1; count1 <= day1; count1++)
{
sum += 1;
}
printf("你在这个世界总共生存类%ld天\n", sum);
}
return 0;
} #include <stdio.h>
#include <time.h>
void today(int * year , int * month , int * day)
{
time_t T ;
struct tm * TM ;
time(& T) ;
TM = localtime(& T) ;
* year = TM -> tm_year + 1900 ;
* month= TM -> tm_mon+ 1 ;
* day = TM -> tm_mday ;
}
int leapyear(int y)
{
return ((! (y % 4) && y % 100) || ! (y % 400)) ? 1 : 0 ;
}
int monthdays(int y , int m)
{
int r , md[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31} ;
r = 0 ;
if(y >= 1900 && y <= 2999 && m > 0 && m < 13) {
r = md ;
if(leapyear(y) && m == 2) r += 1 ;
}
return r ;
}
int check(int y , int m , int d)
{
int e , r ;
r = 0 ;
if(y >= 1900 && y <= 2999 && m > 0 && m < 13 && d >= 1 && d <= monthdays(y , m)) r = 1 ;
return r ;
}
int days(int y[] , int m[] , int d[])
{
int a , b , ds ;
ds = 0 ;
if(y > y || (y == y && m < m) || (y == y && m == m) && d <= d) {
if(y == y && m == m) {
ds = d - d ;
} else if(y == y) {
ds = monthdays(y , m) - d ;
for(b = m + 1 ; b < m ; b ++) ds += monthdays(y , b) ;
ds += d ;
} else {
ds = monthdays(y , m) - d ;
for(b = m + 1 ; b < 13 ; b ++) ds += monthdays(y , b) ;
for(a = y + 1 ; a < y ; a ++) ds += (leapyear(a)) ? 366 : 365 ;
for(b = 1 ; b < m ; b ++) ds += monthdays(y , b) ;
ds += d ;
}
}
return ds + 1 ;
}
int years(int y[] , int m[] , int d[])
{
int ys , a ;
ys = 0 ;
if(y > y) {
ys = y - y ;
if(m > m || (m == m && d > d)) ys -- ;
}
return ys ;
}
int main(void)
{
int y , m , d ;
today(& y , & m , & d) ;
printf("今天是 : %4d-%02d-%02d\n" , y , m , d) ;
printf("输入您的出生日期 (y-m-d) : ") ;
scanf("%d-%d-%d" , & y , & m , & d) ;
printf("您输入的出生日期是 : %04d-%02d-%02d\n" , y , m , d) ;
if(check(y , m , d) && (y > y || (y == y && m < m) || (y == y && m == m && d <= d))) {
printf("今天是阁下生命中的第 【%5d】 天!\n" , days(y , m , d)) ;
if(m == m && d == d) {
printf(" 今天是阁下 【%2d】 周岁的生辰!\n" , years(y , m , d)) ;
printf(" 祝阁下生日快乐!\n") ;
} else {
printf(" 阁下已经 【%2d】 周岁了!\n" , years(y , m , d)) ;
}
} else {
printf("日期输入错误!") ;
}
}
页:
[1]