在线编译为什么不通过?
# include <stdio.h>
/*定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。*/
/*
普通闰年:
年份是4的倍数,且不是100的倍数;
实际闰年:
年份是4的倍数,且必须是400的倍数;
*/
typedef struct DATA{
int year;
int mon_get;
int month[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int day;
}Data;
int main(){
Data data;
int count_day = 0; //表示天数
int pos = 0; //标记是否为一月
scanf("%d %d %d", &data.year, &data.mon_get, &data.day);
if ((data.year%4 == 0 && data.year%100 != 0) || data.year%400 == 0) //如果是世纪闰年
data.month[1] = 29;
for (int i=1; i<data.mon_get; ++i){
count_day += data.month[i-1];
pos++;
}
count_day += data.day;
if (pos == 0)
count_day = data.day;
printf("%d\n", count_day);
return 0;
}
这也许就是在线编译器的局限性了吧!
在线编译器没有线下编译器那么强大,功能也没有那么齐全。
在线编译器可能只是可以编译一些简单的逻辑代码,复杂一点的应该就编译不过了,所以还是老老实实用离线的编译器吧,例如Visual Studio等
定义结构体时,结构体中数组不能初始化赋值.
要在定义结构体变量data时再进行初始化赋值.你题目的解答代码如下:
# include <stdio.h>
/*定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。*/
/*
普通闰年:
年份是4的倍数,且不是100的倍数;
实际闰年:
年份是4的倍数,且必须是400的倍数;
*/
typedef struct DATA{
int year;
int mon_get;
int month[12];
int day;
}Data;
int main(){
Data data = {0,0, {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31} ,0};
int count_day = 0; //表示天数
int pos = 0; //标记是否为一月
scanf("%d %d %d", &data.year, &data.mon_get, &data.day);
if ((data.year%4 == 0 && data.year%100 != 0) || data.year%400 == 0) //如果是世纪闰年
data.month[1] = 29;
for (int i=1; i<data.mon_get; ++i){
count_day += data.month[i-1];
pos++;
}
count_day += data.day;
if (pos == 0)
count_day = data.day;
printf("%d\n", count_day);
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!