为了账号安全,请及时绑定邮箱和手机立即绑定

关于年份的代码,,,,求慕友们看看能否优化代码。。。最后请问一下 写一个日历表(日历表)的代码要怎么写。。。

#include <stdio.h>
#include <stdlib.h>
int main()
{
	/* 定义需要计算的日期 */
	int year;
	int month;
	int day;
	printf("请输入年份:");
	scanf_s("%d", &year);
	printf("请输入月份:");
	scanf_s("%d", &month);
	printf("请输入几号:");
	scanf_s("%d", &day);
	int sum = 0;  //记录天数。。
				 /*
				  * 请使用switch语句,if...else语句完成本题
				  * 如有想看小编思路的,可以点击左侧任务中的“不会了怎么办”
				  * 小编还是希望大家独立完成哦~
				  */
	int num = 1;	//当作变量使用
	if(year>=0&&year<=2500)
		if (month>0 && month <= 12)
			if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
				if (((((month == 1 || month == 3) || month == 5) || month == 7) || month == 8) || month == 10 || month == 12) {
					if (day == 31)	num = 1;
					else num = 0;
				}
				else if (month == 2) {
					if (day == 29) num = 1;
					else  num = 0;
				}
				else {
					if (day == 30) num = 1;
					else num = 0;
				}
				if (num == 0) printf("\t连几月份有几天都不知道,你傻了吗。。\n");
			}
			else {
				if (((((month == 1 || month == 3) || month == 5) || month == 7) || month == 8) || month == 10 || month == 12) {
					if (day == 31)	num = 1;
					else num = 0;
				}
				else if (month == 2) {
					if (day == 28) num = 1;
					else  num = 0;
				}
				else {
					if (day == 30) num = 1;
					else num = 0;
				}
				if (num == 0) printf("\t连几月份有几天都不知道,你傻了吗。。\n");
			}
		else {
			printf("\t只有十二个月。。\n");
			num = 0;
		}
	else {
		printf("\t年份输入错误。。\n");
		printf("\t有规定只能输入大于零年且小于二五零零年的年份才能生效。\n");
		num = 0;
	}
if(num)
	{
		switch (month)
		{
		case 1:sum = day; break;
		case 2:sum = day + 31; break;
		case 3:sum = day + 31 + 28; break;
		case 4:sum = day + 31 + 28 + 31; break;
		case 5:sum = day + 31 + 28 + 31 + 30; break;
		case 6:sum = day + 31 + 28 + 31 + 30 + 31; break;
		case 7:sum = day + 31 + 28 + 31 + 30 + 31 + 30; break;
		case 8:sum = day + 31 + 28 + 31 + 30 + 31 + 30 + 31; break;
		case 9:sum = day + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31; break;
		case 10:sum = day + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30; break;
		case 11:sum = day + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31; break;
		case 12:sum = day + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30; break;
		default:
			printf("恭喜您脑子进水了\n"); break;
		}
		if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
		{
			sum += 1;
		}
		else
		{
			sum += 0;
		}
		printf("%d年%d月%d日是该年的%d天\n", year, month, day, sum);
	}
	else
	{
		printf("%s", "\t恭喜您脑子进水了。。\n");
	}
	system("PAUSE");
	return 0;
}


正在回答

代码语言

3 回答

#include <stdio.h>

int main()

{

int year, month, day, date;

 

year = 2008;

month = 8;

day = 8;

 

date = day;

for (int i = 1; i < month; i++)

{

if (i <= 7)

{

if (0 == i % 2)

date += 30;

else

date += 31;

}

else

{

if (0 == i % 2)

date += 31;

else

date += 30;

}

}

if (0 == year % 100)

{

if (0 == year % 400)

date -= 1;

else

date -= 2;

}

else

{

if (0 == year % 4)

date -= 1;

else

date -= 2;

}

 

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

return 0;

}

不知道这个合不合你胃口,我抄大神的,勿喷。。

日历嘛。。哎。。有空再想下,应该和发牌器差不多。。

0 回复 有任何疑惑可以回复我~
if (((((month == 1 || month == 3) || month == 5) || month == 7) || month == 8) || month == 10 || month == 12) {
        if (day >0 && day <= 31)  {}
        else {
            printf("\t连几月份有几天都不知道,你傻了吗。。\n");
            num = 0;
        }
    }
    else {
        if (day >0 && day <= 30)  {}
        else { 
            printf("\t连几月份有几天都不知道,你傻了吗。。\n"); 
            num = 0;
        }
    }


0 回复 有任何疑惑可以回复我~

发现错误,,,,重新写了一遍。。。

#include <stdio.h>
#include <stdlib.h>
int main()
{
	/* 定义需要计算的日期 */
	int year;
	int month;
	int day;
	printf("请输入年份:");
	scanf_s("%d", &year);
	printf("请输入月份:");
	scanf_s("%d", &month);
	printf("请输入几号:");
	scanf_s("%d", &day);
	int sum = 0;  //记录天数。。
				 /*
				  * 请使用switch语句,if...else语句完成本题
				  * 如有想看小编思路的,可以点击左侧任务中的“不会了怎么办”
				  * 小编还是希望大家独立完成哦~
				  */
	int num = 1;	//当作变量使用
	if (year >= 0 && year <= 2500){}	//判断年份是否输入正确。。
	else {
		printf("\t年份输入错误。。\n");
		printf("\t有规定只能输入大于零年且小于二五零零年的年份才能生效。\n");
		num = 0;
	}
	if (month > 0 && month <= 12) {}	//判断月份是否输入正确。。
	else {
		printf("\t只有十二个月。。\n");
		num = 0;
	}
	if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
		if (month == 2) {
			if (day >0&&day<=29) {}
			else {
				printf("\t连几月份有几天都不知道,你傻了吗。。\n");
				num = 0;
			}
		}
	}
	else {
		if (month == 2) {
			if (day >0 && day <= 28) {}
			else {
				printf("\t连几月份有几天都不知道,你傻了吗。。\n");
				num = 0;
			}
		}
	}
	if (((((month == 1 || month == 3) || month == 5) || month == 7) || month == 8) || month == 10 || month == 12) {
		if ((day >0 && day <= 29))	{}
		else {
			printf("\t连几月份有几天都不知道,你傻了吗。。\n");
			num = 0;
		}
	}
	else {
		if ((day >0 && day <= 29))	{}
		else { 
			printf("\t连几月份有几天都不知道,你傻了吗。。\n"); 
			num = 0;
		}
	}
if(num)
	{
		switch (month)
		{
		case 1:sum = day; break;
		case 2:sum = day + 31; break;
		case 3:sum = day + 31 + 28; break;
		case 4:sum = day + 31 + 28 + 31; break;
		case 5:sum = day + 31 + 28 + 31 + 30; break;
		case 6:sum = day + 31 + 28 + 31 + 30 + 31; break;
		case 7:sum = day + 31 + 28 + 31 + 30 + 31 + 30; break;
		case 8:sum = day + 31 + 28 + 31 + 30 + 31 + 30 + 31; break;
		case 9:sum = day + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31; break;
		case 10:sum = day + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30; break;
		case 11:sum = day + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31; break;
		case 12:sum = day + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30; break;
		default:
			printf("恭喜您脑子进水了\n"); break;
		}
		if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
		{
			sum += 1;
		}
		else
		{
			sum += 0;
		}
		printf("%d年%d月%d日是该年的%d天\n", year, month, day, sum);
	}
	else
	{
		printf("%s", "\t恭喜您脑子进水了。。\n");
	}
	system("PAUSE");
	return 0;
}


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

关于年份的代码,,,,求慕友们看看能否优化代码。。。最后请问一下 写一个日历表(日历表)的代码要怎么写。。。

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号