谁能不死 发表于 2019-11-3 21:49:20

小白求助关于函数的问题

# include <stdio.h>

bool Prime( int avl)
{
        int i;
       
        for (i=2; i<val; ++i)
        {
                if (0 == val%i)
                        break;
        }
       
        if (i == val)       
                return true;
        else
               
                return false;
}

这个为什么会出错?

jackz007 发表于 2019-11-3 22:10:27

本帖最后由 jackz007 于 2019-11-4 00:25 编辑

      函数 Prime() 的输入参数名称写错了。
bool Prime( int avl)
{
      int i                                                         ;
      for (i=2; i<val; ++i) if (0 == val%i) break ;
      if (i == val) return true                            ;
      elsereturn false                                    ;
}

lovedai 发表于 2019-11-3 22:16:54

c语言里是没有bool类型的,c99之后有一个新的头文件,要在源文件中包含stdbool.h这个头文件,才能用bool。

lovedai 发表于 2019-11-3 22:22:14

#include<stdio.h>
#define False 0
#define True1

typedef int Bool;


用这种形式的吧

lovedai 发表于 2019-11-3 22:22:51

lovedai 发表于 2019-11-3 22:22
#include
#define False 0
#define True1


通过宏定义还有typedef实现

谁能不死 发表于 2019-11-4 08:28:11

lovedai 发表于 2019-11-3 22:22
通过宏定义还有typedef实现

为什么别人,像我那样写可以正常运行?(哔哩哔哩《郝斌C语言自学教程》里面讲函数那些视频)而我主要写会报错;是不是软件需要怎样设置?

谁能不死 发表于 2019-11-4 11:52:18

lovedai 发表于 2019-11-3 22:22
#include
#define False 0
#define True1


加了这些也还是报错;

lovedai 发表于 2019-11-4 21:00:15

谁能不死 发表于 2019-11-4 11:52
加了这些也还是报错;

抱歉,是我走眼了,你那个avl和val有问题,我没仔细看,你改一下

谁能不死 发表于 2019-11-4 21:08:31

lovedai 发表于 2019-11-4 21:00
抱歉,是我走眼了,你那个avl和val有问题,我没仔细看,你改一下

那几个val 没有问题,我试过的

lovedai 发表于 2019-11-5 12:49:40

# include <stdio.h>

bool Prime(int avl)
{
        int i;

        for (i = 2; i < avl; ++i)
        {
                if (0 == avl % i)
                        break;
        }

        if (i == avl)
                return true;
        else

                return false;
}

int main()
{
        bool p = Prime(5);
        if (p)        printf("正确");
}

这是我测试用的,如果你再有问题,是不是说,你没写main()?

谁能不死 发表于 2019-11-5 16:07:34

lovedai 发表于 2019-11-5 12:49
# include

bool Prime(int avl)


# include <stdio.h>

bool Prime(int avl)
{
      int i;

      for (i = 2; i < avl; ++i)
      {
                if (0 == avl % i)
                        break;
      }

      if (i == avl)
                return true;
      else

                return false;
}

int main()
{
      bool p = Prime(5);
      if (p)      printf("正确");
}

C:\Program Files (x86)\Microsoft Visual Studio\MyProjects\lianxi8zhizhen\zhizhena1.c(3) : error C2061: syntax error : identifier 'Prime'
C:\Program Files (x86)\Microsoft Visual Studio\MyProjects\lianxi8zhizhen\zhizhena1.c(3) : error C2059: syntax error : ';'
C:\Program Files (x86)\Microsoft Visual Studio\MyProjects\lianxi8zhizhen\zhizhena1.c(3) : error C2059: syntax error : 'type'
C:\Program Files (x86)\Microsoft Visual Studio\MyProjects\lianxi8zhizhen\zhizhena1.c(22) : error C2065: 'bool' : undeclared identifier
C:\Program Files (x86)\Microsoft Visual Studio\MyProjects\lianxi8zhizhen\zhizhena1.c(22) : error C2146: syntax error : missing ';' before identifier 'p'
C:\Program Files (x86)\Microsoft Visual Studio\MyProjects\lianxi8zhizhen\zhizhena1.c(22) : error C2065: 'p' : undeclared identifier
C:\Program Files (x86)\Microsoft Visual Studio\MyProjects\lianxi8zhizhen\zhizhena1.c(22) : warning C4013: 'Prime' undefined; assuming extern returning int
执行 cl.exe 时出错.

zhizhena1.obj - 1 error(s), 0 warning(s)

大神 你看看这是从你那复制过来的;所以我怀疑是不是我的软件有问题?

谁能不死 发表于 2019-11-5 16:24:49

lovedai 发表于 2019-11-5 12:49
# include

bool Prime(int avl)


找到原因了,是文件扩展名的问题;后缀可能不能是.c吧;改成.cpp就OK了;谢谢你的帮忙

谁能不死 发表于 2019-11-5 18:05:29

lovedai 发表于 2019-11-5 12:49
# include

bool Prime(int avl)


bool p = Prime(5);
      if (p)      
大神 这两行看不明白啊,

lovedai 发表于 2019-11-5 18:52:01

谁能不死 发表于 2019-11-5 18:05
bool p = Prime(5);
      if (p)      
大神 这两行看不明白啊,

不能是.c,是因为我前面说的,不能直接用bool.
这两行是把5作为参数传进去,函数返回值赋值给p,if判断p,p这里返回了true.

谁能不死 发表于 2019-11-5 20:52:23

lovedai 发表于 2019-11-5 18:52
不能是.c,是因为我前面说的,不能直接用bool.
这两行是把5作为参数传进去,函数返回值赋值给p,if判断p ...

没有看到你定义p 啊,怎么不报错呢?
给看看我下面这个 if ( prime(n) ) 为什么说 错误C2065:“prime”:未声明的标识符
# include <stdio.h>

bool Prime( int val)
{
        inti;
       
        for (i=2; i<val; ++i)
        {
                if (0 == val%i)
                        break;
        }
       
        if(i == val)       
                return true;
        else
               
                return false;
}

int main(void)
{
        int n;

       
                printf("请输入你要检验的数字\n");
                scanf("%d",n);       

               
               
                if ( prime(n) )
                       
                        printf("%d这个数是素数\n", n);
               
                else
            printf("%d这个数不是素数\n", n);
               
       
        return 0;
}

lovedai 发表于 2019-11-7 13:45:06

谁能不死 发表于 2019-11-5 20:52
没有看到你定义p 啊,怎么不报错呢?
给看看我下面这个 if ( prime(n) ) 为什么说 错误C2065:“prime” ...

p小写了,大小写敏感的

谁能不死 发表于 2019-11-7 14:11:57

lovedai 发表于 2019-11-7 13:45
p小写了,大小写敏感的

确实是厉害 ,谢谢了
页: [1]
查看完整版本: 小白求助关于函数的问题