我正在编写一个C程序,使用高斯算法打印给定年份的复活节日期。我是C的新手。这是代码:
#include <math.h>
int main () {
int year = 1998;
int a = year % 19;
int b = year % 4;
int c = year % 7;
int k = floor (year/100);
int p = floor ((13 + 8k)/25);
int q = floor (k/4);
int M = (15 − p + k − q) % 30;
int N = (4 + k − q) % 7;
int d = (19a + M) % 30;
int e = (2b + 4c + 6d + N) % 7;
if (d == 29 && e == 6) {
printf("19 April");
}
else if (d == 28 && e = 6 && (11M + 11) % 30 < 19) {
printf("18 April");
}
else if (22 + d + e < 32) {
printf("%d March", (22 + d + e));
}
else {
printf("%d April", d + e - 9);
}
return 0;
}
和错误根据键盘:
Line 23: error: invalid suffix "k" on integer constant
In function 'main':
Line 10: error: stray '\342' in program
Line 10: error: stray '\210' in program
Line 10: error: stray '\222' in program
Line 10: error: expected ')' before 'p'
Line 10: error: stray '\342' in program
Line 10: error: stray '\210' in program
Line 10: error: stray '\222' in program
Line 11: error: stray '\342' in program
Line 11: error: stray '\210' in program
Line 11: error: stray '\222' in program
Line 11: error: expected ')' before 'q'
Line 11: error: invalid suffix "a" on integer constant
Line 11: error: invalid suffix "b" on integer constant
Line 16: error: invalid suffix "c" on integer constant
Line 21: error: invalid suffix "d" on integer constant
Line 32: error: invalid suffix "M" on integer constant
据我所知,第23行没有“k”,为什么编译器会抱怨?
答案 0 :(得分:8)
我认为此8k
可能是8*k
:
int p = floor ((13 + 8k)/25);
答案 1 :(得分:1)
当你乘以整数时,你需要使用8 * k而不是8k。
答案 2 :(得分:1)
除了使用的Unicode字符(您不应该使用Winword或任何其他文本处理器编辑程序),您不需要floor
函数,因为您一直只使用整数。整数变量不能保存小数值,因此当您将year
除以100时,您将只得到商的不可分割部分。
在第
行 if (d == 28 && e = 6 && (11M + 11) % 30 < 19)
在丢失的*
旁边,您的=
应为==
。
答案 3 :(得分:0)
int p = floor ((13 + 8k)/25);
什么是8k?你的意思是8 * k?
以下地方的类似问题也是:
int d = (19a + M) % 30;
int e = (2b + 4c + 6d + N) % 7;
else if (d == 28 && e = 6 && (11M + 11) % 30 < 19) {