- 论坛徽章:
- 0
|
计算输入日期是一年中的第几天,代码如下:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int year;
int month;
int day;
int sum=0;
int i;
printf("请输入年份> ");
scanf("%d",&year);
printf("请输入月份> ");
scanf("%d",&month);
printf("请输入日子> ");
scanf("%d",&day);
for(i=month-1;i>0;i--)
{
switch(i)
{
case '1':
case '3':
case '5':
case '7':
case '8':
case '10':
sum+=31;
break;
case '4':
case '6':
case '9':
case '11':
sum+=30;
break;
case '2':
if((year%4==0&&year%100)||year%400==0)
sum+=29;
else
sum+=28;
break;
}
}
sum+=day;
printf("今天是%d年的第%d天\n",year,sum);
system("PAUSE");
return 0;
}
用DEV c++编译后有两个警告:
26:18 D:\code\Source file\P125_7.c [Warning] multi-character character constant
32:18 D:\code\Source file\P125_7.c [Warning] multi-character character constant
经我跟踪执行情况,循环只在for(i=month-1;i>0;i--)和switch(i)间运行,并不进入switch语句体,结果sum=day。
问题出在case '10':和case '11':上吗?有书上说case项不可超过10,我不太相信。查了下,有许多例子case超过10项的。
难道是i不能是循环变量吗?没想明白,故请大家帮帮忙,谢谢啦! |
|