黑马程序员技术交流社区
标题:
关于小明去黑马报道见的第一个人是帅哥还是美女的一题
[打印本页]
作者:
4B青年
时间:
2015-7-1 20:48
标题:
关于小明去黑马报道见的第一个人是帅哥还是美女的一题
/*
小明从2006年1月1日开始,每三天结识一个美女两天结识一个帅哥,编程实现当输入2006年1月1日之后的任意一天,输出小明那天是结识美女还是帅哥(注意闰年问题)(C语言)
*/
#include <stdio.h>
//定义一个判断是否是闰年的函数
int leapYear(int n){
if(n%4==0){
if(n%100!=0){
return 1;
}
else if(n%400==0){
return 1;
}
else{return 0;}
}
else{return 0;}
}
int main(int argc, const char * argv[]) {
//定义年月日变量
int year,month,day;
//提示用户输入一个日期
printf("请以2006-1-1的格式输入一个2006年之后的日期:\n");
//接收用户输入的日期
scanf("%d-%d-%d",&year,&month,&day);
//判断是否非法
if(year<2006 && month<1 && month>12 && day<1 && day>31){
printf("您输入的日期有误,请核对好日历后重新运行本程序。");
return 0;
}
//定义变量计数闰年年数及非闰年年数
int countLeap=0;
int countOther=year-2006;
//通过for循环判断有几年是闰年
for(int i=2006; i<year; i++){
//调用判断闰年的函数
if (leapYear(i)){
countLeap++;
countOther--;
}
}
//定义两个数组用于存放闰年与非闰年的月份天数
int leapMonth[]={31,29,31,30,31,30,31,31,30,31,30,31};
int nonMonth[]={31,28,31,30,31,30,31,31,30,31,30,31};
int sumDay=0;
int sumMonth=0;
//用for循环遍历数组求出当年前几个月份的天数之和
if (leapYear(year)) {
for (int i=0; i<month-1; i++) {
sumMonth+=leapMonth[i];
}
}
else {
for (int i=0; i<month-1; i++) {
sumMonth+=nonMonth[i];
}
}
//计算总天数
sumDay=countLeap*366+countOther*365+sumMonth+day;
printf("这是小明开始认识人生的第%d天\n",sumDay);
//利用求余法判断认识的是美女还是帅哥并打印
if(sumDay%3==0 && sumDay%2==0) printf("%d-%d-%d这天有点忙哦,既认识了个美女,又认识了个帅哥!",year,month,day);
else if(sumDay%3==0) printf("%d-%d-%d这天认识了个美女!\n",year,month,day);
else if(sumDay%2==0) printf("%d-%d-%d这天认识了个帅哥!\n",year,month,day);
else printf("%d-%d-%d这天弱爆了,一个都没认识,继续加油哦!\n",year,month,day);
return 0;
}
复制代码
作者:
程明佳
时间:
2015-7-1 20:53
小明好福气呀。。。。。
作者:
小小羊
时间:
2015-7-1 21:37
你好有想法啊,艳遇吗?
作者:
peng_gavin
时间:
2015-7-1 21:45
小明被玩坏了 哈哈
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2