C语言实验——数日子

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; 
} 
  

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注