程序设计入门15 日期累加(几个输入憋着输出,还是一个一个地输出都A了!!!)
发布日期:2021-05-08 12:50:53 浏览次数:20 分类:原创文章

本文共 3262 字,大约阅读时间需要 10 分钟。

题目描述

设计一个程序能计算一个日期加上若干天后是什么日期。

输入

输入第一行表示样例个数m,接下来m行每行四个整数分别表示年月日和累加的天数。

输出

输出m行,每行按yyyy-mm-dd的个数输出。

样例输入

12008 2 3 100

样例输出

2008-05-13

一,我的代码(憋着输出)

#include<iostream>using namespace std;int month1[13][2]={  {0,0},{31,31},{28,29},{31,31},{30,30},{31,31},{30,30},{31,31},{31,31},{30,30},{31,31},{30,30},{31,31}};int date[200][3];bool isLeap(int year){	return ((year%4==0&&year%100!=0)||year%400==0);	}int main(){	int m;	int year,month,day,sum;	int n=0;	scanf("%d",&m);	int k=m;	while(k--){		scanf("%d%d%d%d",&year,&month,&day,&sum);		n=0;		while(sum!=n){			n++;			day++;			if(day==month1[month][isLeap(year)]+1){				day=1;				month++;			}			if(month==13){				month=1;				year++;			}		}		date[k+1][0]=year;		date[k+1][1]=month;		date[k+1][2]=day;	}	for(int i=m;i>=1;i--){		if(date[i][1]>9&&date[i][2]>9){		printf("%d-%d-%d",date[i][0],date[i][1],date[i][2]);		}		else if(date[i][1]<10&&date[i][2]>9){		printf("%d-0%d-%d",date[i][0],date[i][1],date[i][2]);		}		else if(date[i][1]>9&&date[i][2]<10){		printf("%d-%d-0%d",date[i][0],date[i][1],date[i][2]);		}			else{		printf("%d-0%d-0%d",date[i][0],date[i][1],date[i][2]);		}		if(i!=1)			printf("\n");		}	return 0;}

二,别人的代码(一个一个地输出)

#include<stdio.h>#include<math.h>#include<iostream>using namespace std;bool judge(int year){    if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)    {        return true;    }    return false;}int main(){//  freopen("E:\input.txt", "r", stdin);    int m;    cin >> m;    int a[][12] = {  {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},{31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}};    while (m--)    {        int year, month, day, num;        cin >> year >> month >> day >> num;        int b = 0, i = 0;        if (judge(year))        {            b = 1;        }        if (num <= a[b][month - 1] - day)        {            day += num;        }        else        {            num -= (a[b][month - 1] - day);            if (month == 12)            {                month = 0;                i = 0;                year++;                if(judge(year))                {                    b = 1;                }                else                {                    b = 0;                }            }            month++;            day = 0;            for (i = month - 1; ; i++)            {                if (num > a[b][i])                {                    num -= a[b][i];                    if (month == 12)                    {                        month = 0;                        i = -1; //因为for循环会增1                        year++;                        if(judge(year))                        {                            b = 1;                        }                        else                        {                            b = 0;                        }                    }                    month++;                }                else                {                    day += num;                    break;                }            }        }        cout << year << "-";        if (month < 10)        {            cout <<"0";        }        cout << month << "-";        if (day < 10)        {            cout << "0";        }        cout << day << endl;;    }    return 0;}

 

A掉的网址:http://codeup.cn/problem.php?cid=100000578&pid=4

 

 

上一篇:程序设计入门16 排序和排名与结构体
下一篇:程序设计入门14 结构体

发表评论

最新留言

表示我来过!
[***.240.166.169]2025年04月02日 12时12分23秒