c语言100道题的第四题
【程序4】年月日判断是年份的第几天。题目:输入某年某月某日,判断这一天是这一年的第几天?
1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊
情况,闰年且输入月份大于3时需考虑多加一天。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main()
{
int day, month,year,num,leap;
printf("year ,month ,day:\n");
scanf("%d,%d,%d", &year, &month,&day);
switch (month) /*先计算某月以前月份的总天数*/
{
case 1:
num = 0;
break;
case 2:
num = 31;
break;
case 3:
num = 59;
break;
case 4:
num = 90;
break;
case 5:
num = 120;
break;
case 6:
num = 151;
break;
case 7:
num = 181;
break;
case 8:
num = 212;
break;
case 9:
num = 243;
break;
case 10:
num = 273;
break;
case 11:
num = 304;
break;
case 12:
num = 334;
break;
default:
printf("the day error\n");
}
num += day; /*再加上某天的天数*/
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))/*判断是不是闰年*/
{
leap = 1;
}
else
{
leap = 0;
}
if (leap == 1 && month > 2) /*如果是闰年且月份大于2,总天数应该加一天*/
{
num++;
}
printf("It is the %dth day.", num);
system("pause");
return 0;
}
这个程序为什么运行的时候出现错误,求大佬帮忙看一下。 错误提示的意思是num 这个变量没有初始化,如果输入月份不在1-12月中比如说13,则num就不会被初始化。 xieglt 发表于 2020-10-15 15:48
错误提示的意思是num 这个变量没有初始化,如果输入月份不在1-12月中比如说13,则num就不会被初始化。
可是在控制台上输入的月份小于13,但是程序也没法运行啊 旭旭宝宝 发表于 2020-10-15 15:59
可是在控制台上输入的月份小于13,但是程序也没法运行啊
系统不同,调试结果也不一样。自己设断点调试吧,看每个变量的值,不行就把它们输出来看。
写程序要自己学会调试,要不永远也不会自己找错误。
我估计是scanf函数输出的问题,你输入格式用了逗号,输入的时候也应该有逗号
比如:2020,10,15
好的好的 第八行的输入 scanf("%d,%d,%d", &year, &month,&day); 改为:scanf("%d%d%d", &year, &month,&day); 使用 scanf() 时,在语句上除控制符外中间不要加入任何其他的字符 ,在输入时可以用空格隔开 ! 因为加入了,容易出错 风过无痕1989 发表于 2020-10-15 18:27
第八行的输入 scanf("%d,%d,%d", &year, &month,&day); 改为:scanf("%d%d%d", &year, &month,&day); 使用...
好了,解决了,谢谢!
页:
[1]