#include <stdio.h>
void main()
{
int y,m,d;
int sum=0;
int flog;//标识是否是闰年
int flog2=1;//标识是否是合法月份
printf("请输入年月日(yyyy-mm-dd)\n");
scanf("%4d-%2d-%2d",&y,&m,&d);
switch (m-1)
{
case 12: sum+=31;
case 11: sum+=30;
case 10: sum+=31;
case 9: sum+=30;
case 8: sum+=31;
case 7: sum+=31;
case 6: sum+=30;
case 5: sum+=31;
case 4: sum+=30;
case 3: sum+=31;
case 2: sum+=29;
case 1: sum+=31;
default:printf("非法月份\n");
flog2=0;
break;
}
sum=sum+d;
if(( y%4==0 && y%100!=0 ) || y%400==0)
flog=1;
else
flog=0;
if (d>0&&d<=31)
{
if(flog==1)
printf("这一天是这年的第%d天",sum-flog);
if(flog==0)
printf("这一天是这年的第%d天",sum);
}
else
printf("非法日期\n");
}
我哪里有错误了??为什么输入非法月份后不会停止,
例如输入:2013-13-01,
这输出:非法月份
这是今年的第367天
输入:2013-03-32
则输出:非法月份
非法日期
如何改进呢??
#include <stdio.h>
void main()
{
int y,m,d;
int sum=0;
int flog;//标识是否是闰年
int flog2=1;//标识是否是合法月份
printf("请输入年月日(yyyy-mm-dd)\n");
scanf("%4d-%2d-%2d",&y,&m,&d);
switch (m-1)
{
case 11: sum+=30;//case12这句不要。因为swich是计算某月之前的月数有多少天,再加上该月的第几天
case 10: sum+=31;
case 9: sum+=30;
case 8: sum+=31;
case 7: sum+=31;
case 6: sum+=30;
case 5: sum+=31;
case 4: sum+=30;
case 3: sum+=31;
case 2: sum+=29;
case 1: sum+=31;
break;//这里要改
default:
{
printf("非法月份\n");
flog2=0;
}
break;
}
if(flog2==1)//这里改一下
{
sum=sum+d;
if(( y%4==0 && y%100!=0 ) || y%400==0)
flog=1;
else
flog=0;
if (d>0&&d<=31)
{
if(flog==1)
printf("这一天是这年的第%d天",sum-flog);
if(flog==0)
printf("这一天是这年的第%d天",sum);
}
else
printf("非法日期\n");
}
}
还有很多需要改进啊
1.判非法日期不完善 距离 难道2013-4-31合法吗?
2.日期累加完全不是这样做的 ,switch语言机制你还没弄清楚啊
你可以试试无论你输入什么 都会输出非法月份
我已经把你的代码改好了 你想不出来 我可以发给你
#include <stdio.h>老师要求用switch-case语句,部分误差不管,我是初学C,太复杂搞不定啊~不过非常感谢你的详细解答,谢谢!谢谢!
C语言编程:输入某年某月某日,判断这一天是这一年的第几天?
int getDaysByMonth(int m,int d,char flag){ int c;if(flag=='r'){\/\/闰年 if(m==2){\/\/2月是29天 return(31+d);}else if(m>2){ c=0;m=m-1;for(;m>0;m--){ if(m==1||m==3||m==5||m==7||m==8||m==10||m==12){ c+=31;}else if(m==2){ c+=29...
用C语言编写:输入某年某月某日,判断这一天是这一年的第几天?
int n,year,month,day,month_day_sum=0,sum,month_day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};printf("please input the \\"year month day\\"\\n");scanf("%d%d%d",&year,&month,&day);if(year%100!=0&&year%4==0||year%400) month_day[2]=29;if(day>31||day<...
求输入某年某月某日,判断这天是星期几,这一年的第几天,距
判断某年某月某日是这年的第几天 为解决此问题,首先设定全局变量months[12],用于存放各月天数。接着,定义年、月、日三个变量,用于存储用户输入的日期信息。对months数组进行初始化,考虑7月与8月为31天的特性,引入临时变量j判断分界点。根据输入的年、月、日数据,计算当前日期是今年的第几天。...
C语言编程:输入某年某月某日判断这一天是一年的第几天的程序是是什么...
if (days==0){ printf("您输入的日期格式无效。\\n");return 0;} if (isRunnian(year) && month >2){ printf("输入日期是对应年份的第%d天",days+1);}else{ printf("输入日期是对应年份的第%d天",days);} return 0;} \/\/循环实现 int getDays(int month,int day){ int NUMBER[12]...
C语言中输入年月日,判断这一天是一年的第几天……
1#include<stdio.h> 2#include<stdlib.h> 3\/*题目:输入某年某月某日,判断这一天是这一年的第几天*\/ 4intmain(){ 5system("color1F");\/\/设定显示框为蓝底白字 6system("modeconcols=80lines=30");\/\/固定显示框尺寸 7\/ 8intdays[11];9intyear,moon,day,i,t1,t2;10while(1){ 11...
C语言编程:输入某年某月某日,判断这一天是这一年的第几天?
printf("请输入年月日(例如2017-01-01):");scanf("%d-%d-%d",&y,&m,&d);} \/\/先判断是否为闰年 if((y%4==0 && y%100!=0)||(y%400==0)){\/\/闰年 count=getDaysByMonth(m,d,'r');}else{\/\/平年 count=getDaysByMonth(m,d,'n');} printf("%d-%02d-%02d是今年的第%d...
C语言编程:输入某年某月某日,判断这一天是这一年的第几天?
13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};printf("输入年、月、日,用空格隔开:");scanf("%d%d%d", &year, &month, &day);for (i=1; i =3)days+=1;printf("%d年%d月%d日是这一年的第%d天!\\n", year, month, day, days);return 0;} ...
c语言输入某年某月某日 判断这一天是这一年的第几天用switch
month) \/*先计算某月以前月份的总天数*\/{case 1:sum=0;break;case 2:sum=31;break;case 3:sum=59;break;case 4:sum=90;break;case 5:sum=120;break;case 6:sum=151;break;case 7:sum=181;break;case 8:sum=212;break;case 9:sum=243;break;case 10:sum=273;break;case 11:...
C语言算某年某月某日是这年的第几天哪有问题
case 5:case 7:case 8:case 10:case 12:sum+=31;break;case 4:case 6:case 9:case 11:sum+=30;break;case 2:if(year%4==0&&year%100!=0||year%400==0) { sum+=29;} else { sum+=28;} } } printf("%d年%d月%d日是该年的第%d天",year,month,day,sum);return 0;} ...
C语言编程:输入某年某月某日判断这一天是一年的第几天的程序是是什么...
year) && month >2){\\x0d\\x0aprintf("输入日期是对应年份的第%d天",days+1);\\x0d\\x0a}else{\\x0d\\x0aprintf("输入日期是对应年份的第%d天",days);\\x0d\\x0a}\\x0d\\x0areturn 0;\\x0d\\x0a}\\x0d\\x0a\\x0d\\x0a\/\/循环实现\\x0d\\x0aint getDays(int month,...