"人的理想志向往往和他的能力成正比。" —— 约翰逊
(因为我现在在上学,初三毕业班,时间比较紧,每天不能按时更新,请大家见谅,都是“应式”教育的错,嘿嘿)
(如有转载,请标明出处,谢谢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大宝
(如有错误,尽情指出,虚心听教,方才提高,谢谢大家!)