WwangHB 发表于 2020-1-19 04:33:36

重新编写温度转换程序,使用函数实现温度计算

#include <stdio.h>

float temp(int m, float n);

/*test temp function */
main()
{
      int i;
      float p;
      for (i = 0; i <= 200; i = i + 20)
                printf("%d\t %6.1f\n", i, temp(i, p));

      return 0;
}

float temp(int fath, float celsius)

{
      int i;
      float p;

      p = 5.0 * (i - 32.0) / 9.0;

      return p;
}


请问大佬这个哪有问题么
运行结果
0           -5.6
20       -599116928.0
40       -599116928.0
60       -599116928.0
80       -599116928.0
100       -599116928.0
120       -599116928.0
140       -599116928.0
160       -599116928.0
180       -599116928.0
200       -599116928.0

sanguine_boy 发表于 2020-1-19 11:17:43

函数写错了,形参都没参与运算。。。。。。。(你看下是否想要这样的效果)
#include<stdio.h>
float change(int fahrenheit);
int main()
{
        int i;
        for(i=0;i<=200;i+=20)
                printf("%-6d%5.2f\n",i,change(i));//注意得到的结果是摄氏度
        return 0;
}
float change(int fahrenheit)//摄氏温度(C)与华氏温度(F)的换算式是:C = 5×(F- 32)/9
{
        float celsius;
        celsius=5.0*(fahrenheit-32)/9;
        return celsius;
}

WwangHB 发表于 2020-1-19 18:19:40

sanguine_boy 发表于 2020-1-19 11:17
函数写错了,形参都没参与运算。。。。。。。(你看下是否想要这样的效果)

请问大佬怎么看形参有没有参与运算,为什么我那个形参没有参与运算呢?

sanguine_boy 发表于 2020-1-19 19:57:05

WwangHB 发表于 2020-1-19 18:19
请问大佬怎么看形参有没有参与运算,为什么我那个形参没有参与运算呢?

float temp(int fath, float celsius)你定义的这个函数的函数体里面都没用上形参fath和celsius,说明函数的形参没有意义,只是个摆设,我的理解是这样子

wyybwdq 发表于 2020-1-19 20:48:56

1.你的在temp(int fath,float celsius )中并没有使用 fath, celsius。
2.主函数中的temp(i,p)中的 i,p的值传递给了fath 和celsius 。
3.这叫做传递参数,所以fath等于main中的temp(i,p)中的i,同理 celsius 等于p。
4.你在函数自创的temp()中直接使用变量fath和celsius就可以了;并不用在定义i,p
5.变量的作用域为两个大括号之间:所以main中i,p并不与temp中的I,P有关联,所以需要3.中的传递参数.
6.因为5. 所以temp()中的ip没有赋值,是内存中未知数字得到不正确的数字
7.一开始temp括号中的内容应该与最下面temp中的内容相同
8.打好基础

WwangHB 发表于 2020-1-26 04:25:13

wyybwdq 发表于 2020-1-19 20:48
1.你的在temp(int fath,float celsius )中并没有使用 fath, celsius。
2.主函数中的temp(i,p)中的 i ...

谢谢大佬纯小白,刚开始学习,再看c程序设计,一脸懵逼

陈某不吃辣 发表于 2020-1-30 16:18:54

可以可以
页: [1]
查看完整版本: 重新编写温度转换程序,使用函数实现温度计算