gpt4 book ai didi

C 程序在 For 循环中崩溃

转载 作者:太空宇宙 更新时间:2023-11-04 03:27:55 25 4
gpt4 key购买 nike

我是 C 编程的新手(我有一些非常基本的通过 vb.NET 编程的经验),我正在尝试为欧拉计划问题 #1 编写程序。 https://projecteuler.net/problem=1

算法

挑战要求程序员找到 3 或 5(含)的所有倍数的总和小于 1000(我使用 intInput 允许用户输入整数代替 1000)。

我当前的解决方案接受输入,并将其递减 1,直到 (intInput - n) % 3 = 0,也就是说,直到找到下一个最接近输入整数的 3 的倍数。

程序然后循环遍历从 1 到 ((intInput - n)/3) 的所有整数,将每个整数添加到前面整数的总和中,只要当前整数不是 5 的倍数,在这种情况下, 它被跳过。

然后将结果和存储在 intThreeMultiplier 中。

然后重复上面的过程,用5代替3在intInput下找到5的最高倍数,然后循环整数1到((intInput - n)/5),这次不跳过3的倍数,并将总和存储在 intFiveMultiplier 中。

然后通过 sum = (3 * intThreeMultiplier) + (5 * intFiveMultiplier) 计算输出总和。

问题

每当我编译和运行我的代码时,用户被允许输入一个整数,然后程序崩溃。我已经确定原因与第一个 For 循环有关,但我无法弄清楚它是什么。

我已经注释掉了有问题的代码片段之后的所有内容。

源代码:

#include <stdio.h>
#include <stdlib.h>

void main()
{
int intInput = 0; /*Holds the target number (1000 in the challenge statement.)*/
int n = 0;
int count = 0;
int intThreeMultiplier = 1;
int intFiveMultiplier = 1;

printf("Please enter a positive integer.\n");
scanf("%d",intInput);

for( ; (((intInput - n) % 3) != 0) ; n++)
{}

/*for(; count <= ((intInput - n) / 3); count++)
{
if ((count % 5) != 0)
{
intThreeMultiplier += count;
}
}

count = 0;
for(n = 0 ; ((intInput - n) % 5) != 0 ; n++)
{}

for(; count <= ((intInput - n) / 5) ; count++)
{
intFiveMultiplier += count;
}

int sum = (3 * intThreeMultiplier) + (5 * intFiveMultiplier);
printf("The sume of all multiples of 3 or 5 (inclusively) under %d is %d.",intInput, sum);*/
}

这是我第一次在 StackOverflow 上发帖,所以如果我违反了任何提问规则,我提前道歉,并希望收到有关此问题的任何反馈。

此外,我非常愿意接受有关编码实践的任何建议,或者我在使用 C 时犯下的任何新手错误。

谢谢!

最佳答案

scanf("%d",intInput);

可能是

scanf("%d", &intInput);  // note the ampersand

scanf 需要存储内容的变量的地址。 Why scanf must take the address of operator

仅用于调试,打印输入以验证输入是否被正确接受,类似

printf("intInput = %d\n", intInput);

关于C 程序在 For 循环中崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39731599/

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