什么可以修复 C 中的模数错误

What could be a fix for a modulus error in C

我想就此寻求帮助。我要输入两个整数。除 "modulus" 之外的所有结果均已显示。第二个和第三个“%d”也保持原样。这是我 运行 我的程序时的结果。

Enter First Number: 10
Enter Second Number: 20

10 + 20 = 30  
10 - 20 = -10  
10 * 20 = 200  
10 / 20 = 0  
10 % %d = %d

如果这是我的程序,可能的修复方法是什么:

#include <stdio.h>
#include <conio.h>
main()
{

  int num1, num2, sum=0, diff=0, prod=0, quot=0, mod=0;

  clrscr();

  printf("\nEnter First Number:");
  scanf("%d",&num1);
  printf("\nEnter Second Number:");
  scanf("%d",&num2);
  sum = num1 + num2;
  diff = num1 - num2;
  prod = num1 * num2;
  quot = num1 / num2;
  mod = num1 % num2;
  printf("%d + %d = %d", num1, num2, sum);
  printf("%d - %d = %d", num1, num2, diff);
  printf("%d * %d = %d", num1, num2, prod);
  printf("%d / %d = %d", num1, num2, quot);
  printf("%d % %d = %d", num1, num2, mod);
  getch();

}

%字符用于表示printf中的格式字符串。

使用 %% 打印 % 字符。现在,printf 需要格式字符串,但只有 space.

printf("%d %% %d = %d", num1, num2, mod);

问题在这里:

printf("%d % %d = %d", num1, num2, mod);
           ~~~~

当您在格式字符串中使用 % 时,printf 会将其视为转换规范的一部分(如 %d)。如果它后面跟的不是有效规范,则结果是未定义的,所以任何事情都可能发生。

如果您需要在输出中使用文字 %,请在格式字符串中使用 %%

printf("%d %% %d = %d", num1, num2, mod);