c语言求助 函数
设计函数int getDays(int year,int month),根据给定的年year和月份month,计算该月的天数并返回。 提示:注意闰年的判断。输入与输出要求: 输入两个整数y,m,即年份与月份。输出该年内该月的天数,占一行。 测试用例保证输入合法。
请帮忙看看那里出错了?谢谢。
#include<stdio.h>
int getDays(int year,int month) ;
int main()
{
int year, month ;
scanf("%d%d",&year,&month);
printf("There are %d days in month %d year %d.\n",getDays(year,month), month, year) ;
return 0 ;
}
int getDays(int year,int month)
{
switch(month)
{
case 1:printf("31\n");break;
case 2:printf("30\n");break;
case 3:printf("29\n");break;
case 4:printf("28\n");break;
if((month=1)||(month=3)||(month=5)||(month=7)||(month=8)||(month=10)||(month=12))
return 1;
if((month=4)||(month=6)||(month=9)||(month=11))
return 2;
{
if((year%4==0)&&(year%100!=0)||(year%400==0))
return 3;
else
return 4;
}
}
}
#include<stdio.h>
int getDays(int year, int month);
int main()
{
int year, month;
scanf("%d%d", &year, &month);
printf("There are %d days in month %d year %d.\n", getDays(year, month), month, year);
return 0;
}
int getDays(int year, int month)
{
int result=0;//作为case判断的条件
//这部分搬到上面,先判断
if ((month = 1) || (month = 3) || (month = 5) || (month = 7) || (month = 8) || (month = 10) || (month = 12))
result= 1;
if ((month = 4) || (month = 6) || (month = 9) || (month = 11))
result = 2;
{
if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0))
result = 3;
else
result = 4;
}
switch (result) //注意返回值是你函数调用部分最终要的结果,前面闰年判断不能用1234作为返回,而应用result变量代替
{
case 1:return 31; break;
case 2:return 30; break;
case 3:return 29; break;
case 4:return 28; break;
}
} 修改见注释部分,,
1、if月份判断的部分提前了
2、if判断的结果用变量result代替return,避免返回值直接返回到第10行调用部分,造成出错
3、case判断条件用result代替,打印改为return 满意的话记得设置最佳答案哈 本帖最后由 jackz007 于 2020-11-13 21:19 编辑
#include <stdio.h>
int getDays(int year,int month)
{
int days ;
days = 30 ;
switch(month) {
case1:
case3:
case5:
case7:
case8:
case 10:
case 12: days ++ ;
break ;
case2: days -= 2 ;
if(!(year % 4) && (year % 100) || ! (year & 400)) days ++ ;
break ;
} ;
return days ;
}
main(void)
{
int y , m ;
scanf("%d%d" , & y , & m) ;
printf("%d\n" ,getDays(y , m)) ;
}
简化版
#include <stdio.h>
int getDays(int year ,int month)
{
int md[] = {31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31} , days ;
days = md ;
if(month == 2 && (! (year % 4) && year % 100 || ! ( year % 400))) days ++ ;
return days ;
}
main(void)
{
int y , m ;
scanf("%d%d" , & y , & m) ;
printf("%d\n" ,getDays(y , m)) ;
} {:10_277:}
页:
[1]