黑马程序员技术交流社区
标题: 问小明的约会对象是谁的问题 [打印本页]
作者: peide0427 时间: 2015-11-7 23:03
标题: 问小明的约会对象是谁的问题
//小明从2006年1月1日开始,每三天结识一个美女两天结识一个帅哥,编程实现当输入2006年1月1日之后的任意一天,输出小明那天是结识美女还是帅哥(注意润年问题)
// 还是有BUG的,就是当用户输入2017,2,29时候不会抱错。。。大家可以交流一下
#include <stdio.h>
int runOrPing(int Y);
int dayOfYear(int x);
int dayOfMonth(int x, int y);
void result(int sumDay);
int main(){
printf("请输入2006-1-1之后的任意一天,年、月、日以逗号隔开,形式如:“2014,3,23”\n");//提示用户输入日期
int x,y,z;
scanf("%d,%d,%d",&x,&y,&z);//接受数据信息
if (x<2006||y>12||y<1||z>31) {
printf("请输入有效日期");
}else {
int daySum=dayOfYear(x)+dayOfMonth(x, y)+z;//调用函数
result(daySum);
}
return 0;
}
int runOrPing(int Y){
if ((Y%400==0)||((Y%4==0)&&(Y%100!=0)))
{
return 1;
}else return 0;//定义函数判断是否是闰年,如果是,返回值1;
}
int dayOfYear(int x){ //定义函数计算年份部分的日期
int count=0;
for(int i=2006;i<=x;i++)
{
if(runOrPing(i)){
count++;
}
}
return (x-count)*28+count*29+(x-2006)*337;
}
int dayOfMonth(int x, int y) //定义函数计算月部分的日期
{
char runMonth[]={31,29,31,30,31,30,31,31,30,31,30,31};
char pingMonth[]={31,28,31,30,31,30,31,31,30,31,30,31};
int sum=0;
if(runOrPing(x)) {
for (int i=0;i<y-1;i++){
sum=sum+runMonth;
}
}else{
for (int i=0;i<y-1;i++){
sum=sum+pingMonth;
}
}
return sum;
}
void result(int sumDay){// 判断最后的结果。
if(sumDay%5<=3)
{
printf("今天小明见到的是美女!\n");
}else
printf("今天小明见到的是帅哥!\n");
}
作者: 陌忆 时间: 2015-11-8 11:11
%5<3,那等于0呢,是帅哥还是美女
作者: zhecipinle 时间: 2015-11-8 12:09
他还有谁有没认识的情况呢
作者: a578530825 时间: 2015-11-8 12:33
感觉吊吊的
作者: 尖锐湿疣丶陈赫 时间: 2015-11-8 17:40
这题目有点意思
作者: xiaobei 时间: 2015-11-8 19:34
呵呵挺有意思的啊
| 欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |