c语言用switch编程一个月有多少天,为什么我输出的结果没有天数,输出的只有年和月?

1、要考虑闰年,月份输入错误则输出“error!”
2、还有一个问题就是我在if和else那里都加了一组“{}”,如果不加这个,编译的时候else那里的代码就会显示错误,两处都加上才没有,但看别人写的程序就没有加,这又是怎么回事呢?
有没有c语言ds详细讲一下,蟹蟹了!

img

if -else那里的问题是,不加括号if和else就不能配对了,语法错误,可以把break放到if-else语句后即可;

你在屏幕输出的那些信息后面输入年和月就可以了,如 : 2022 5;

修改如下:

#include <stdio.h>

int main(void){
    
    int year,month;
    printf("请输入年份和月份:");
    scanf("%d%d",&year,&month);
    
    switch(month){
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            printf("31天\n");
            break; 
        case 4:
        case 6:
        case 9:
        case 11:
            printf("30天\n");
            break;
        case 2:
            if(year%4==0&&year%100==0||year%400==0) //此处修改了下,当年份除以4余数为0,但除以100余数不为0位闰年。
                printf("29天\n"); 
            else
                printf("28天\n");
            break;
        default:
            printf("error!");            
            
    } 
    
    return 0;
} 

img

你要输入值呀,接收到你输入的值才会去运行,if后边如果只有一条语句就可以省略大括号,超过一条就得加上大括号

把输入换成

    printf("year = ");
    scanf("%d", &year);
    printf("month = ");                                                                                       
    scanf("%d", &month);

下面判断闰年的时候是 year % 100 != 0,你的写错了,可以参考改一下