Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C程序在For循环时崩溃_C_Crash - Fatal编程技术网

C程序在For循环时崩溃

C程序在For循环时崩溃,c,crash,C,Crash,我是C编程新手(我有一些通过vb.NET编程的基本经验),我正试图为项目Euler问题#1编写一个程序。 算法 这个挑战要求程序员找到1000以下所有3或5(包括)的倍数之和(我使用intInput允许用户输入一个整数代替1000) 我的当前解决方案接受输入,并将其递减1,直到(intInput-n)%3=0,也就是说,直到找到输入整数下一个最接近的3的倍数 然后,程序循环处理从1到((intInput-n)/3的所有整数,将每个整数与前面整数的总和相加,只要当前整数不是5的倍数,在这种情况下

我是C编程新手(我有一些通过vb.NET编程的基本经验),我正试图为项目Euler问题#1编写一个程序。

算法 这个挑战要求程序员找到1000以下所有3或5(包括)的倍数之和(我使用intInput允许用户输入一个整数代替1000)

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

然后,程序循环处理从1到((intInput-n)/3的所有整数,将每个整数与前面整数的总和相加,只要当前整数不是5的倍数,在这种情况下,将跳过该整数

结果之和随后存储在intThreeMultiplier中

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

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

问题 每当我编译并运行我的代码时,允许用户输入一个整数,然后程序崩溃。我已经确定原因与第一个For循环有关,但我不知道它是什么

我已经注释掉了所有出现问题的代码片段

源代码:
#包括
#包括
void main()
{
int intInput=0;/*保存目标编号(在质询语句中为1000)*/
int n=0;
整数计数=0;
int三乘子=1;
int五乘子=1;
printf(“请输入一个正整数。\n”);
scanf(“%d”,输入时);
对于(;((输入-n)%3)!=0;n++)
{}
/*计数
可能是

scanf("%d", &intInput);  // note the ampersand
scanf
需要存储内容的变量的地址

仅对于调试,打印输入以验证输入是否被正确接受,如

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

输入
intInput
时需要的第一件事应该使用:

 scanf("%d", &intInput);    
因为
scanf()


此外,我认为您应该仔细检查您的算法,因为您对某些数字进行了多次求和。:)

第一个循环无法崩溃,除非编译器出现错误代码。您是否尝试在调试器中运行该程序以捕获实际发生的崩溃,然后找到它的位置?为什么注释掉大部分代码?为什么需要两个循环?只需使用一个循环,当当前数字为mult时iple为3或5将其添加到总数中。
void main()
是一个无效且不推荐使用的签名。对于托管环境(您有一个),最小正确的签名是
int main(void)
。这修复了它,谢谢!现在我只需要处理算法本身。:)
printf("intInput = %d\n", intInput);
 scanf("%d", &intInput);