问郝斌ls的一个程序,不知道为什么会报错

#include <stdio.h>
bool IsPrime(int m)//本行报错,原因未知
{
int i;
for(i=2;i<m;++i)
{
if(0==m%i)
break;
}
if(i==m)
return true;
else
return false;
}
void TraverseVal(int n)
{
int i;
for(i=2;i<=n;++i)
{
if(IsPrime(i))
printf("%d\n",i);
}
}
int main(void)
{
int val;
scanf("%d",&val);
TraverseVal(val);
return 0;
}

img

你的编译器是c语言,c语言是不支持bool类型的。
c++才支持bool类型的。你把编译器改成c++的就行
c语言可以用int类型的1和0,来代替bool类型。

#include <stdio.h>

int IsPrime(int m)//本行报错,原因未知
{
    int i;
    for (i = 2; i < m; ++i)
    {
        if (0 == m % i)
            break;
    }
    if (i == m)
        return 1;
    else
        return 0;
}
void TraverseVal(int n)
{
    int i;
    for (i = 2; i <= n; ++i)
    {
        if (IsPrime(i))
            printf("%d\n", i);
    }
}
int main(void)
{
    int val;
    scanf("%d", &val);
    TraverseVal(val);
    return 0;
}

也可以通过枚举自定义bool类型

#include <stdio.h>

typedef enum {false,true} bool; //枚举变量默认从0开始自加,假为0,真为1
bool IsPrime(int m)//本行报错,原因未知
{
    int i;
    for (i = 2; i < m; ++i)
    {
        if (0 == m % i)
            break;
    }
    if (i == m)
        return true;
    else
        return false;
}
void TraverseVal(int n)
{
    int i;
    for (i = 2; i <= n; ++i)
    {
        if (IsPrime(i))
            printf("%d\n", i);
    }
}
int main(void)
{
    int val;
    scanf("%d", &val);
    TraverseVal(val);
    return 0;
}

如有帮助,望采纳!谢谢!