这两个程序有差吗?
为什么第一个就满分,第二个就差一点点儿
定义 结构体变量(包括 年、月、日),编程序实现以下功能:
输入 年 月 日 后,程序计算出该日期在本年中是第几天
输入格式:
输入一年中的年 月 日,格式详见样例
输出格式:
输出该日期在本年度是第几天,格式详见样例
输入样例:
2001 8 1
输出样例:
213
#include<stdio.h>
#include"math.h"
#include"string.h"
struct Date
{
int year;
int month;
int day;
};
int main()
{
struct Date p;
scanf("%d%d%d",&p.year,&p.month,&p.day);
int m[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int sum,i;
sum=p.day;//当前月的天数先算入总数
for(i=0;i<p.month-1;i++)//之前所有月份总天数累加
sum+=m[i];
//考虑闰年2月多一天
if(((p.year%4==0&&p.year%100!=0)||p.year%400==0)&&p.month>2)
printf("%d", sum+1);
else
printf("%d", sum);
return 0;
}
#include<stdio.h>
int main()
{
struct dayliy
{
int year;
int month;
int day;
}a={0,0,0};
int m=0,i=0,t=0,k=0,b[12]={0};
scanf("%d %d %d",&a.year,&a.month,&a.day);
m=a.month;
for(;i<m-1;i++)
{ k=i+1;
switch (k)
{
case 2: b[i]=28;break;
case 4:
case 6:
case 9: b[i]=30;break;
default:b[i]=31;break;
}
}
t=b[0]+b[1]+b[2]+b[3]+b[4]+b[5]+b[6]+b[7]+b[8]+b[9]+b[10]+b[11]+a.day;
if((a.year/4==0&&a.year/100!=0||a.year/100&&a.year/400==0)&&a.month>2)
t=t+1;
printf("%d",t);
return 0;
}
第二个的if语句判断闰年的条件写错了,导致错误。
个人感觉没什么区别,换了种写法,知道思路即可,考的就是分支、循环控制的语法