C语言实验——数日子
时间: 1ms 内存:64M
描述:
光阴似箭,日月如梭,大学的时间真是宝贵,要抓紧时间AC^_^。你知道今天是这一年第几天吗,掐指一算还是要算好久,呵呵还是让计算机来做吧。这里的问题就是让你来写一个程序,输入某年某月某日,判断这一天是这一年的第几天?
计科12级同学,请用数组编程(课下请用switch再做一遍,不要用数组)
输入:
输入数据有多组,第一行是数据的组数n,下面n行是n组数据,每组数据由3个正整数组成,分别为年、月、日,我们保证每组数据都是有效的日期。
输出:
输出所输入的日期是这一年的第几天。
示例输入:
2
2009 1 1
2008 1 3
示例输出:
1
3
提示:
参考答案(内存最优[752]):
#include <stdio.h>
#include <stdlib.h>
int main()
{
int s[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int n,i,j,a[1000],b[1000],c[1000],d[100]={0};
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d %d %d",&a[i],&b[i],&c[i]);
for(i=1;i<=n;i++)
{
for(j=0;j<=b[i]-2;j++)
d[i]=d[i]+s[j];
d[i]=d[i]+c[i];
if(a[i]%4==0&&a[i]%100!=0||a[i]%400==0)
{
if(b[i]>2)
d[i]=d[i]+1;
}
}
for(i=1;i<=n;i++)
printf("%d\n",d[i]);
return 0;
}
参考答案(时间最优[0]):
#include <stdio.h>
#include <stdlib.h>
int main()
{
int s[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int n,i,j,a[1000],b[1000],c[1000],d[100]={0};
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d %d %d",&a[i],&b[i],&c[i]);
for(i=1;i<=n;i++)
{
for(j=0;j<=b[i]-2;j++)
d[i]=d[i]+s[j];
d[i]=d[i]+c[i];
if(a[i]%4==0&&a[i]%100!=0||a[i]%400==0)
{
if(b[i]>2)
d[i]=d[i]+1;
}
}
for(i=1;i<=n;i++)
printf("%d\n",d[i]);
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。