鱼C论坛

 找回密码
 立即注册
查看: 1289|回复: 16

[已解决]小白求助关于函数的问题

[复制链接]
发表于 2019-11-3 21:49:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
# 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;
}

这个为什么会出错?
最佳答案
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()?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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                            ;
        else  return false                                      ;
}

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-3 22:16:54 | 显示全部楼层
c语言里是没有bool类型的,c99之后有一个新的头文件,要在源文件中包含stdbool.h这个头文件,才能用bool。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-3 22:22:14 | 显示全部楼层
#include<stdio.h>
#define False 0
#define True  1

typedef int Bool;


用这种形式的吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-3 22:22:51 | 显示全部楼层
lovedai 发表于 2019-11-3 22:22
#include
#define False 0
#define True  1

通过宏定义还有typedef实现
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-4 08:28:11 | 显示全部楼层
lovedai 发表于 2019-11-3 22:22
通过宏定义还有typedef实现

为什么别人,像我那样写可以正常运行?(哔哩哔哩《郝斌C语言自学教程》里面讲函数那些视频)而我主要写会报错;是不是软件需要怎样设置?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-4 11:52:18 | 显示全部楼层
lovedai 发表于 2019-11-3 22:22
#include
#define False 0
#define True  1

加了这些也还是报错;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-4 21:00:15 | 显示全部楼层
谁能不死 发表于 2019-11-4 11:52
加了这些也还是报错;

抱歉,是我走眼了,你那个avl和val有问题,我没仔细看,你改一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-4 21:08:31 | 显示全部楼层
lovedai 发表于 2019-11-4 21:00
抱歉,是我走眼了,你那个avl和val有问题,我没仔细看,你改一下

那几个val 没有问题,我试过的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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()?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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)

大神 你看看这是从你那复制过来的;所以我怀疑是不是我的软件有问题?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-5 16:24:49 | 显示全部楼层
lovedai 发表于 2019-11-5 12:49
# include

bool Prime(int avl)

找到原因了,是文件扩展名的问题;后缀可能不能是.c吧;改成.cpp就OK了;谢谢你的帮忙
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-5 18:05:29 | 显示全部楼层
lovedai 发表于 2019-11-5 12:49
# include

bool Prime(int avl)

bool p = Prime(5);
        if (p)        
大神 这两行看不明白啊,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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)
{
        int  i;
       
        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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

p小写了,大小写敏感的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-7 14:11:57 | 显示全部楼层
lovedai 发表于 2019-11-7 13:45
p小写了,大小写敏感的

确实是厉害 ,谢谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-3 10:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表