本帖最后由 jackz007 于 2020-11-24 00:26 编辑
代码逻辑正确,运行结果正确,对于初学者而言,很不容易,加油!
不过,代码写得很不简洁,这里给楼主提供一个简洁一些的版本,谨供楼主参考。#include <stdio.h>
//判断闰年
int leap(int y)
{
if((! (y % 4) && y % 100) || ! (y % 400)) return 1 ;
else return 0 ;
}
//计算每个月的天数
int mdays(int y , int m)
{
int md[12] = {31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31} , days ;
days = md[m - 1] ;
if(m == 2 && leap(y)) days ++ ;
return days ;
}
//计算某个日期是某一年的第几天
int thedays(int y , int m , int d)
{
int days , k ;
for(days = d , k = 1; k < m ; k ++) days += mdays(y , k) ;
return days ;
}
int main(void)
{
int year , month , day ;
scanf("%d%d%d" , & year , & month , & day) ;
printf(" %d the %d day\n", year , thedays(year , month , day)) ;
}
编译、运行实况D:\00.Excise\C>g++ -o days days.c
D:\00.Excise\C>days
2020 11 23
2020 the 328 day
D:\00.Excise\C>
|