首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"invalid suffix "k“on integer constant”错误

"invalid suffix "k“on integer constant”错误
EN

Stack Overflow用户
提问于 2010-11-26 09:20:23
回答 4查看 35.3K关注 0票数 0

我正在编写一个C程序,使用高斯算法打印给定年份的复活节日期。我对C语言很陌生,下面是代码:

代码语言:javascript
复制
#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;
}

以及根据codepad的错误:

代码语言:javascript
复制
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“,那么为什么编译器会抱怨呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-11-26 09:22:12

我想这个8k可能是8*k的意思。

代码语言:javascript
复制
int p = floor ((13 + 8k)/25);
票数 9
EN

Stack Overflow用户

发布于 2010-11-26 09:24:20

当你乘以整数时,你需要使用8*k,而不是8k。

票数 1
EN

Stack Overflow用户

发布于 2010-11-26 23:36:33

除了使用Unicode字符(您不应该使用Winword或任何其他文本处理器编辑程序)之外,您不需要floor函数,因为您始终只使用整数。整数变量不能包含小数值,所以当你将year除以100时,你只能得到商的整数部分。

在队伍中

代码语言:javascript
复制
 if (d == 28 && e = 6 && (11M + 11) % 30 < 19)

除了缺少的*之外,还有一个应该是===

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4281943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档