gpt4 book ai didi

c - 我的代码不起作用。我做错了吗?

转载 作者:行者123 更新时间:2023-11-30 18:23:26 25 4
gpt4 key购买 nike

我刚刚学过编程和英语。我是新手。

我的代码应该显示输入的数字之和为 1。

(例如:如果您输入 5,则答案为 15;如果您输入 10,则答案为 55)

但是这段代码不起作用。我已经尝试了很多次来修复它,但我不知道为什么这段代码不起作用。

<小时/>
#include <stdio.h>

int main(void){

int i = 0;
int sum;
int j;

scanf("%d\n", sum);
for(j = 1; j <= sum; j++){

i = i + j;}

printf("%d\n", i);
return 0;
}

最佳答案

你的代码的问题很简单,一个像样的编译器会警告你:

testprog.c: In function ‘main’:
testprog.c:9:11: warning: format ‘%d’ expects argument of type ‘int *’,
but argument 2 has type ‘int’ [-Wformat=]
scanf("%d\n", sum);
^

scanf 函数需要您想要填充的项目的地址,因为它需要更改它们。将实际项目(因为 C 是按值传递)传递给函数只能更改副本而不是原始项目。

您可以在标准中看到正确的方法:

d: Matches an optionally signed decimal integer, whose format is the same as expected for the subject sequence of the strtol function with the value 10 for the base argument. The corresponding argument shall be a pointer to signed integer.

<小时/>

顺便说一句,我已经修复了该问题并添加了一些更多改进,例如:

  • 更容易混淆的变量名称(在任何阶段,您的 sum 变量都不是任何值的总和);
  • 更好(更符合逻辑)的代码布局;
  • 更好地确定临时变量的作用域,例如 i
  • 提示用户输入,以便他们知道应该输入什么;和
  • 通过检查 scanf 的返回值来检查输入是否有效。

代码是:

#include <stdio.h>

int main(void){
int maxNum;
int sum = 0;

printf("Enter number to sum up to: ");
if (scanf("%d", &maxNum) != 1) {
fprintf(stderr, "Problem getting input\n");
return 1;
}

for (int i = 1; i <= maxNum; ++i) {
sum += i;
}

printf("Sum is %d\n", sum);
return 0;
}

关于c - 我的代码不起作用。我做错了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56160861/

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