liyifeng295641 发表于 2024-1-6 15:11:18

C语言数组02

0. 用户输入年份,打印该年每个月的天数。

注:2 月份以外,除了 1、3、5、7、8、10 和 12 月份有 31 天,其它月份均是 30 天;闰年的 2 月份是 29 天,非闰年是 28 天。

程序实现如下图(注意打印格式):

https://xxx.ilovefishc.com/forum/201603/29/024055oviwtn8owd6faqca.png

我写的:

#include <stdio.h>

int main(){

        int years;
        printf("请输入一个年份:");
        scanf("%d", &years);
        if(years % 4 == 0 && years % 100 != 0 || years % 400 == 0){
                int run[] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
                for(int i = 0; i < 12; i++){
                        printf("%i月份:%d天\n", i + 1, run);
                }
        }else{
                int ping[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
                for(int i = 0; i < 12; i++){
                        printf("%i月份:%d天\n", i + 1,ping);
                }
        }
        return 0;
}

FishC 发表于 2024-1-6 15:11:31

问题出在了定义数组的地方。C语言中,定义数组时不能直接赋值,需要逐个元素赋值。

你可以改成这样:

#include <stdio.h>

int main(){
    int years;
    printf("请输入一个年份:");
    scanf("%d", &years);
    if(years % 4 == 0 && years % 100 != 0 || years % 400 == 0){
      int run = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
      for(int i = 0; i < 12; i++){
            printf("%d月份:%d天\n", i + 1, run);
      }
    }else{
      int ping = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
      for(int i = 0; i < 12; i++){
            printf("%d月份:%d天\n", i + 1, ping);
      }
    }
    return 0;
}

这样就可以正确地打印出每个月的天数了。注意在循环中,使用 `run` 和 `ping` 分别获取对应月份的天数。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: C语言数组02