可以帮我看看这个身高预测的代码哪里有问题吗?

img

img


这里只输入父亲的身高,还没输入母亲的身高就直接开始预测身高了,自己检查了好几遍也没看出来代码哪里出了问题

你的函数返回值有问题,你的这一行代码在执行之后会将计算的结果变成浮点数,你接收的时候也应该用浮点数,可以用float或者double

img


你可以这样修改

#include <stdio.h>
int childHight(int FHight, int MHight);
int main()
{
    int m_FHight;
    int m_MHight;
    int result;
    printf("请输入父亲的身高:\n");
    scanf("%d" ,&m_FHight);
    printf("请输入母亲的身高:\n");
    scanf("%d",&m_MHight);
    result=childHight(m_FHight,m_MHight);
    printf("预测孩子的身高:");
    printf("%d",result);
    return 0;
}
int childHight(int FHight, int MHight){
        int result=(int)(FHight+MHight)*0.54;  //这一行代码会将你的计算结果强制转换为int整形
        return result;
}

也可以这样修改

#include <stdio.h>
float childHight(int FHight, int MHight);
int main()
{
    int m_FHight;
    int m_MHight;
    float result;
    printf("请输入父亲的身高:\n");
    scanf("%d" ,&m_FHight);
    printf("请输入母亲的身高:\n");
    scanf("%d",&m_MHight);
    result=childHight(m_FHight,m_MHight);
    printf("预测孩子的身高:");
    printf("%.0f",result);  //在输出时可以设置保留的位数,像我这样就是保留0位的小数,输出也就是整数了
    return 0;
}
float childHight(int FHight, int MHight){
        float result=(FHight+MHight)*0.54;
        return result;
}

这是运行结果图

img

如果我的回答对你有帮助,请给我个采纳谢谢

你输入的是浮点数,但定义的是整型变量啊。要么把整型都改为浮点型,输入用%f,要么输入整数,表示厘米

你是int类型,不能输入小数
可以输入 188 160这样的

把三个变量的数据类型修改下:float m_FHight, m_MHight; double result; 然后对应的地方如函数的形参类型改为 float , 函数返回类型改为 double ,输入输出里对应的格式符改为:%f 。

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7610803
  • 这篇博客也不错, 你可以看下任意输入一个正整数,从高位向低位依次输出,或从低位向高位依次输出(数组,调用函数两种方法)
  • 除此之外, 这篇博客: C代码性能优化中的 高效编程的一个重要宗旨就是:不停地重新检查程序,在操作中尽量采取高效率的操作和快速的存取对象,尽量减少低效率的操作和缓慢的存取对象! 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 大家都知道,数据结构和程序的算法是决定程序性能的两大要素!说实话想要写出合理的代码,必须了解编译器是如何生成代码的,以及cpu是如何执行程序的。

    • 优化代码框架
      1. 合理的优化代码结构,减少函数调用层次和嵌套深度,甚至有些函数可以使用内联或define来定义,以减少函数调用所占时间
    • 简化函数
      1. 充分理解函数所要实现的功能,用最简单的方式去实现,去掉冗余的逻辑。
      2. 优化循环,有些操作可以放到循环外做,不必每次都做
    • 选取合适的算法和数据结构
      1. 通常使用指针比数组要快很多,对于频繁插入删除的操作,使用链表要比使用数组快很多
    • 减少运算强度
      1. 尽量使用位操作代替计算
      2. 公共子表达式可以提前计算
      3. 通过查表来换取时间
      4. 前缀改成后缀, i++改成++i
    • 利用操作系统和CPU本身的优势
      1. 多核和多处理器的某种组合上并行的运算;可以将任务有计划的分配给特定的处理器
      2. 充分利用操作系统的位宽,尤其是拷贝等操作上,但这个地方要注意字节对齐
      3. 充分利于CPU的流水
    • 编译选项
      1. 编译器优化:在编译时使用命令行选项 -finline”、“-O1”或者更高级别编译选项时
      2. 开启编译选项-O2

    以上部分原帖:https://blog.csdn.net/chenyq991/article/details/79047741,这里将有更加详细的解释

    将记录关于《C程序性能优化-20个实验与达人技巧》的一些记录

    1、编译器运作流程

    在编译器编译时加上编译选项(-O)可以优化生成的汇编代码

    2、指令流水线

    3、高速缓存

    尽量将变量分配给高速缓存的寄存器中

    3、基础优化概括

    • 由于CPU内部有若干个加算器,将若干个加法算法并列起来同时计算,变量个数越多,处理时间反而越短!
    • 在进行数据乘除的运算时,采用寄存器内数据的移位操作来提高效率
    • 在对内存访问时一定要选择合适大方式比如指针。。
    • if-else-语句中不成立的条件比成立条件要消耗时间
    • 64位操作系统执行函数调用(有无参数)一般都在1.3~1.4纳秒、32位操作系统执行函数调用有参数2.2纳秒,无参数1.3纳秒
    • 数据存取

    • 字符串操作

    • GCC的优化选项

    在使用gdb和Eclipse调试工具时无需指定优化选项

    • 复杂运算简化:将循环内的乘法运算置换为加法运算的方法
    •  整数转换成字符串--利用数字查字符标的方式

     

     

  • 您还可以看一下 林晓炜老师的网络安全工程师演示:搜索引擎的高级搜索使用技巧课程中的 搜索引擎高级使用技巧【一】小节, 巩固相关知识点