gpt4 book ai didi

c - C 中的参数类型错误

转载 作者:太空狗 更新时间:2023-10-29 16:00:57 26 4
gpt4 key购买 nike

我应该向用户询问一个 3 位数字,然后用该数字加上 6 模 10 替换每个数字,然后对所有更新数字求和。当我运行该程序时,它会在我输入数字后崩溃,警告:

format %d expects argument of type 'int *' but argument 2 has type int.

这是我的源代码:

#include <stdio.h>

int main(int argc, char* argv[])
{
int Integer;
int Divider;
int Digit1, Digit2, Digit3;

printf("Enter a three-digit integer: ");
scanf("%d", Integer);

Divider = 1000;
Digit1 = Integer / Divider;

Integer = Integer % Divider;
Divider = 100;
Digit2 = Integer / Divider;

Integer = Integer % Divider;
Divider = 10;
Digit3 = Integer / Divider;


Digit1 = (Digit1 + 6) % 10;
Digit2 = (Digit2 + 6) % 10;
Digit3 = (Digit3 + 6) % 10;

printf(Digit3 + Digit1 + Digit2);

getch();
return 0;
}

更新

在我们的示例输出中,如果用户输入 928,则结果数字应为 584。我不确定这个数字是如何产生的。它应该用该数字加上 6 模 10 的总和替换每个数字。那么我的代码中是否也存在数学错误?

最佳答案

几个地方:

scanf("%d", &Integer);
printf("%d\n", Digit3 + Digit1 + Digit2);
getchar(); // maybe??

事实上,编译器会为您清楚地指出它们:

warning: format ‘%d’ expects argument of type ‘int *’, but argument 2 has type ‘int’ [-Wformat=]
scanf("%d", Integer);
^

warning: passing argument 1 of ‘printf’ makes pointer from integer without a cast [enabled by default]
printf(Digit3 + Digit1 + Digit2);
^

warning: implicit declaration of function ‘getch’ [-Wimplicit-function-declaration]
getch();
^

请注意,关于 getch,您可以在这里进一步阅读:implicit declaration of function 'getch' .

在这些修复之后,您的程序可以正常运行。让我调用固定的源文件z.c,

gcc -std=gnu99 -O2 -o z z.c
./z

如果我输入 304,我得到 21


补充说明:

是否希望Divider100101,而不是1000, 100, 10?

关于c - C 中的参数类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41643227/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com