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;
}
问题出在了定义数组的地方。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]