saberAMD 发表于 2018-12-2 15:38:55

C语言函数调用

本帖最后由 saberAMD 于 2018-12-2 15:41 编辑

#include <stdio.h>

main()
{
        float realr;
        float m,z;
        float getM(float r);
        float getZ(float r);
        scanf("%f",&realr);
        m=getM(float r);
        z=getZ(float r);
        printf("%f,%f",m,z);
}

float getM(float r)
{
        float r;
        m=3.14*r*r;
        return m;
       
}
float getZ(float r)
{
        float r;
        z=2*3.14*r;
        return z;
}
我这个怎么不对呢

倚楼听雨落 发表于 2018-12-2 16:09:54

#include <stdio.h>
#include <stdlib.h>
double getM(double r)
{
        double m = 0;
        m = 3.14*r*r;
        return m;

}
double getZ(double r)
{
        double z = 0;
        z = 2 * 3.14*r;
        return z;
}

int main()
{
        double realr = 0;
        double m = 0, z = 0;
        printf("请输入圆的半径:");
        scanf_s("%lf", &realr);
        m = getM(realr);
        z = getZ(realr);
        printf("%lf\n%lf\n", m, z);
        system("pause");
        return 0;
}


你这要这样写才对吧,你上面写的有好多错误:
一个是没有声明函数,函数要么写在前面要么先声明一下,后面再写,还有就是函数里面m和z都是没有定义的变量。

倚楼听雨落 发表于 2018-12-2 16:10:57

倚楼听雨落 发表于 2018-12-2 16:09
#include
#include
double getM(double r)


不知道说的对不对,反正我感觉是这些问题。

luckyblyd 发表于 2018-12-2 16:15:27

手动修改
#include <stdio.h>
float getM(float r);//函数声明放在main()主函数之前,函数定义可以写后面也可以和定义一起
float getZ(float r);
main()
{
      float realr;
      float m,z;
      
      scanf("%f",&realr);
      m=getM(realr);//传的是已经定义的参数
      z=getZ(realr);
      printf("%f,%f",m,z);
}

float getM(float r)
{
      float m=3.14*r*r;//r是传参,m未定义,所以定义m就可以
      return m;
      
}
float getZ(float r)
{
      float z=2*3.14*r;
      return z;
}

saberAMD 发表于 2018-12-2 16:15:47

倚楼听雨落 发表于 2018-12-2 16:09
#include
#include
double getM(double r)


Configuration: cc - Win32 Debug--------------------
Linking...
c.obj : error LNK2001: unresolved external symbol _scanf_s
Debug/cc.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

cc.exe - 2 error(s), 0 warning(s)
报了两个错误,初学C语言 不怎么会

倚楼听雨落 发表于 2018-12-2 16:18:54

本帖最后由 倚楼听雨落 于 2018-12-2 16:21 编辑

saberAMD 发表于 2018-12-2 16:15
Configuration: cc - Win32 Debug--------------------
Linking...
c.obj : error LNK2001: unresolved ...

你用的是什么编译器?你把scanf_s,改成scanf

另外一个报错的没看明白。。。,我是在VS2015下编译运行的,没有问题,不知道你用的是哪个编译器。

saberAMD 发表于 2018-12-2 16:19:45

倚楼听雨落 发表于 2018-12-2 16:18
你用的是什么编译器?你把scanf_s,改成scanf

vc++

倚楼听雨落 发表于 2018-12-2 16:26:05

saberAMD 发表于 2018-12-2 16:19
vc++

https://fishc.com.cn/thread-121313-1-1.html
虽然没用过那个但是好多人都说那个软件好老了而且不支持C99,我个人觉得Windows下面用Visual Studio 2015更好用吧。{:5_109:}

saberAMD 发表于 2018-12-2 16:30:46

倚楼听雨落 发表于 2018-12-2 16:26
https://fishc.com.cn/thread-121313-1-1.html
虽然没用过那个但是好多人都说那个软件好老了而且不支持C ...

学校教学用的是这个 我就只有跟着用了      确实不怎么好用

倚楼听雨落 发表于 2018-12-2 16:36:17

saberAMD 发表于 2018-12-2 16:30
学校教学用的是这个 我就只有跟着用了      确实不怎么好用

可以试试Visual Studio 2015,功能强大,最重要的是也是免费的,注册一个微软账号就好了,你那个主函数不要偷懒,最好写成int main()。

saberAMD 发表于 2018-12-2 17:42:38

倚楼听雨落 发表于 2018-12-2 16:36
可以试试Visual Studio 2015,功能强大,最重要的是也是免费的,注册一个微软账号就好了,你那个主函数不 ...

好的 谢谢了
页: [1]
查看完整版本: C语言函数调用