//输入某年某月某日,判断这一天是这一年的第几天?
//方法一:switch表示
#include <stdio.h>
main()
{
int day, month, year,sun,total=0;//分别定义年月日变量
int a;
printf("请输入你年,月,日:\n");
scanf_s("%d,%d,%d", &year, &month, &day);//键入年月日,中间要加“,”
a = month; //因为后面计算月份的时间,用了for,月份要存入另一个变量中
for (month; month > 0; month--)//先算月份之前的时间
{
switch (month)
{
case 1:sun = 0; break;
case 2:sun = 31; break;
case 3:sun = 28; break;
case 4:sun = 31; break;
case 5:sun = 30; break;
case 6:sun = 31; break;
case 7:sun = 30; break;
case 8:sun = 31; break;
case 9:sun = 31; break;
case 10:sun = 30; break;
case 11:sun = 31; break;
case 12:sun = 30; break;
default:printf("输入错误"); break;
}
total = total + sun;//月数天数总和
}
total = total + day;//月份的天数加上单独的天数
if(a>2)
if (year % 400 == 0 || year % 100 != 0 && year % 4 == 0)//判断闰年
total=total+1;
printf("%d年%d月%d日是%d年%d日", year,a,day,year,total);
}
拖延症还是太严重了,在后台一直运行着VS,就是注意力不够集中,无法把思绪集中起来。
1、月份的时间具有延时性,第一个月只计算天数,依次往后,所以case=o;
2、关于时间天数的问题肯定是要判断闰年和平年,而且还要月份大于2月才会受其影响;
3、闰年的表示方法很有趣,要记一下
if (year % 400 == 0 || year % 100 != 0 && year % 4 == 0)//判断闰年
total=total-1;
4、当你在某一月输出比月份更高的天数的时候,代码无法判断,依旧继续执行;
这里total=total-1;可以换成total–;
|| :表示或
&&:表示与
!=:表示非
//输入某年某月某日,判断这一天是这一年的第几天?
//方法二:数组表示
#include<stdio.h>
main()
{
int year, month, day,sun;
int a[] = {0,0,31,28,31,30,31,30,31,31,30,31,30,31};
int i,j;
while(1)
{
sun = 0;
printf("请输入年月日:\n");
scanf_s("%d,%d,%d", &year, &month, &day);
j = month;
if (month > 12)
{
printf("输入错误1\n");
continue;
}
if (day > a[++month])
{
printf("输入错误2\n");
continue;
}
for (i = 1; i <= 13; i++)
{
sun = sun + a[i];
if (i == j)
{
if(month>2)
if (year % 400 == 0 || year % 100 != 0 && year % 4 == 0)
sun++;
sun = sun + day;
printf("%d年%d月%d日是%d年%d日\n",year,j,day,year,sun);
}
}
}
}
好多问题呀,脑子转不过来了,尴尬,有小伙伴要沟通交流的可以加QQ呀:1498745547
本来想玩骚一点,然后把自己骚断腰了;
1、在润年输入2020,2,29,系统会直接提示错误2,没有解决掉;
2、想多尝试解决方案,发现自己好弱。
- 问题很多希望大佬多多指点
- 自己很菜希望大佬多多指点
- 有问题是肯定的