首页 > 解决方案 > C:for循环分段错误(核心转储)

问题描述

我不明白为什么会出现分段错误(核心转储)。我只是想创建一个程序,告诉你每个数字有多少个分隔符。例如 20,有 6(1, 2, 4, 5, 10, 20)。

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

int NOMBRE, i, RES;
int nbDivis = 0;
printf("Enter a number");
scanf("%d", NOMBRE);

for(i=1; i<= NOMBRE; i++){
    RES = NOMBRE%i;
    if (RES=0)
       nbDivis+= 1;

}
printf("The number of dividers is %d", nbDivis);

return 0;
}

标签: cloops

解决方案


  1. scanf("%d", &NOMBRE);你不应该使用scanf("%d", NOMBRE);
  2. if (RES==0)你不应该使用 if (RES=0)

以下code可以工作:

#include <stdio.h>
int main()
{
    int NOMBRE;
    int nbDivis = 0;
    printf("Enter a number");
    scanf("%d", &NOMBRE);

    for (int i = 1; i <= NOMBRE; ++i)
        if (NOMBRE%i == 0)
            ++nbDivis;
    printf("The number of dividers is %d", nbDivis);

    return 0;
}

推荐阅读