[解问题篇]3.根据日期猜天数(C++语言编写)

"人的理想志向往往和他的能力成正比。" —— 约翰逊

(因为我现在在上学,初三毕业班,时间比较紧,每天不能按时更新,请大家见谅,都是“应式”教育的错,嘿嘿)

(如有转载,请标明出处,谢谢o(* ̄︶ ̄*)o)

参考:菜鸟教程,C语言经典案例100例(我把这些翻译成C++\C#,供自己、大家一起学习)

菜鸟教程:http://www.runoob.com/cprogramming/c-exercise-example4.html

ASV大宝博客园:https://www.cnblogs.com/fspasv-dabao/articles/9508110.html

题目:输入某年某月某日,判断这一天是这一年的第几天?

(在实际应用中,用户可能会 "蓄意破坏",但是这是练习,所以没有那么严。到了实际应用,必须要检测天数、月数的数字是否超出标准!)

方法1:

#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
    int day,month,year,sum,leap;
    printf("\n请输入年、月、日,格式为:年,月,日(2015,12,10)\n");
    cin>>year>>month>>day;
      switch(month) // 先计算某月以前月份的总天数
    {
        case 1:sum=0;break;
        case 2:sum=31;break;
        case 3:sum=59;break;
        case 4:sum=90;break;
        case 5:sum=120;break;
        case 6:sum=151;break;
        case 7:sum=181;break;
        case 8:sum=212;break;
        case 9:sum=243;break;
        case 10:sum=273;break;
        case 11:sum=304;break;
        case 12:sum=334;break;
        default:printf("data error");break;
    }
      sum+=day;
      if(year%400==0 || (year%4==0 && year%100!=0))//判断是否是闰年
      { leap=1;
      }else{
          leap=0;
      }
      if(leap==1&&month>2){
      sum++;
      }
      
      cout<<"这是这一年的第 "<<sum<<endl;

    

    return 0;
}

方法二:有心人士写的源码,看起来不错!利用循环


#include <iostream>

#include <stdio.h>

using namespace std;

int main()

{    

    int year, month, day,sumday=0;

    int monthday[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

    printf("请输入年、月、日,格式为:年,月,日(2015,12,10)\n");

    cin>>year>>month>>day;

    if (year % 400 == 0 || (year % 100 != 0 && year % 4 == 0))//判断是否是闰年

    {

        monthday[1] =29;//如果是,则二月是29天

    }

    for (int i = 0; i < month-1; i++)//month-1 是因为数组元素是以零为始

    {

        sumday += monthday[i];//持续增加

    }

    sumday += day;

    printf("%d\n",sumday);

 

    return 0;

}

 

谢谢大家的欣赏哈,本章结束!还会有再续!

ASV大宝

(如有错误,尽情指出,虚心听教,方才提高,谢谢大家!)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值