我是C的新手,所以我遇到了所有错综复杂的问题。在这个函数中,我试图找到一个月内的天数,包括闰年。当我尝试取2个数字的mod时,我的问题出现在第二个else语句中。有帮助吗?这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int length(int month, int year)
{
int monthday;
if (month == 2) {
if ((year % 400 == 0) || ((year % 100 != 0) && (year % 4 == 0))) {
monthday = 29;
} else {
monthday = 28;
}
} else {
monthday = (30 + (month + floor((month / 8))) % 2);
}
return monthday;
}
答案 0 :(得分:0)
mod操作数只接受两个整数。函数floor
返回一个double,这就是错误源自的地方。
请用
替换该行monthday = (30 + (month + month/8)%2);
你不需要floor
函数,因为在C中除以两个整数会得到一个整数作为结果,这是结果的底限。
通过尝试使用此函数编译程序,我收到此错误:
test.c:21:52:错误:二进制%的操作数无效(有'double'和'int') monthday =(30 +(月+楼((月/ 8)))%2);