黑马程序员技术交流社区
标题:
帮忙解决一下吧.......
[打印本页]
作者:
longer057
时间:
2015-5-1 23:03
标题:
帮忙解决一下吧.......
小明从2006年1月1日开始,每三天结识一个美女两天结识一个帅哥,编程实现当输入2006年1月1日之后的任意一天,输出小明那天是结识美女还是帅哥(注意润年问题)
看看下面两个方法哪个错了,错在哪里?
#include <stdio.h>
typedef struct {
int year;
int month;
int day;
} DATE;
int main(int argc, const char * argv[]) {
int a[12]={31,29,31,30,31,30,31,31,30,31,30,31};
int b[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int falt=1;
while (falt) {
// 定义日期
DATE date;
// 提示用户输入日期 并接收日期
printf("请输入年:\n");
scanf("%d",&date.year);
printf("请输入月:\n");
scanf("%d",&date.month);
printf("请输入日:\n");
scanf("%d",&date.day);
// 对日期进行计算得到相差天数
int count1 = 0; // 记录闰年数
int count2 = 0; // 记录非闰年数
for (int i=2006; i<date.year; i++) {
if((i%4==0&&i%100!=0)|| i%400==0){
count1++;
}
}
count2 = date.year - 2006 - count1;
int count = 0;
count = count1 * 366 + count2 * 365; // 记录总天数
if(((date.year)%4==0&&(date.year)%100!=0)|| (date.year)%400==0){
for (int i=0; i<date.month-1; i++) {
count += a[i];
}
}else {
for (int i=0; i<date.month-1; i++) {
count += b[i];
}
}
count += date.day;
// 天数 对2/3进行取余
printf("小明熬了%d天\n", count);
if (count % 2 == 0) {
printf("卧槽,有帅哥!\n");
}
if (count % 3 == 0) {
printf("MLGB,大美女!\n");
}
if (count%2&&count%3) {
printf("尽情的开撸吧...\n");
}
printf("请按:0.退出 1.继续\n");
scanf("%d",&falt);
}
return 0;
}
复制代码
#include <stdio.h>
int getYears(int year);
int getMonth(int year,int month);
int getAllDay(int year, int month, int day);
int main(int argc, const char * argv[]) {
int year,month,day;
printf("请输入一个日期 年-月-日 来看看小明现在有没有精尽人亡.\n");
scanf("%d-%d-%d",&year,&month,&day);
int all_day = getAllDay(year, month, day);
//NSLog(@"%d",all_day);
printf("%d\n",all_day);
//判断小明的行为
if (all_day % 2 == 0) {
printf("小明现在在泡妞呢,叔叔咱们不约!\n");
}
if (all_day % 3 == 0) {
printf("小明现在在搞基呢,你要不要一起来!\n");
}
if (all_day % 2 == 0 && all_day % 3 == 0) {
printf("小明现在在3P呢,不带外人,你洗洗睡吧!\n");
}
if (all_day % 2 != 0 && all_day % 3 != 0) {
printf("小明现在自己在家撸着呢....\n");
}
return 0;
}
//获取闰年和平年各多少天的函数
int getYears(int year)
{
//如果是闰年返回366天
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
return 366;
}
else {//否则返回365天
return 365;
}
}
//获取一共几个月,合计多少天.
int getMonth(int year,int month)
{
//定义润月
int double_array[12] = {31,29,31,30,31,30,31,31,30,31,30,31};
//定义平月
int arrar[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
int day_month = 0;
//闰月天数
if ((year % 4 == 0 && year % 100 != 0 )||year % 400 == 0) {
for (int i = 1; i < month; i++) {
day_month += double_array[i-1];
}
}
else {//平月天数
for(int i = 1; i < month; i++) {
day_month += arrar[i-1];
}
}
return day_month;
}
//获取总天数
int getAllDay(int year, int month, int day)
{
int allDay = 0;
int day_years = 0;
int day_month = 0;
//计算总年数
for (int i = 2006; i < year; i++) {
day_years += getYears(year);
}
//计算月份总天数
day_month = getMonth(year, month);
//计算总天数
allDay = day_years + day_month + day;
// NSLog(@"%d",allDay);
return allDay;
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2