求两个整数的平均数,到底哪里出错了😥

img


这个程序不管我输入什么,结果都是0.00000
把2改为2.0后就能用了
请问一下这是为什么?

以%f打印 (a+b)/2的结果会是0的原因是,(a+b)/2的结果为整数,而%f是打印浮点数的,所以用它来打印整数,结果会出错;

然后,整数除以小数,除法运算式中出现了浮点数,则运算结果会保留小数结果。

测试如下:

参考链接:


C语言中的除法_c 除法_生信猿人的博客-CSDN博客
c语言除法怎么保留小数_c语言除法保留小数如何运算_MantrasWu1的博客-CSDN博客 如:1/2的结果和1.0/2的结果就不同因为没有定义1/2为浮点型,所以1/2自动取整,结果等于0而1.0/2,由于预先用浮点型表示其结果显然为:0.5例:#include int main(){ int a[5],n=2,m=3,k,sum=0; int i=0; printf("请输入被除数n:"); scanf("%d",&n); printf("请输入除数m:"); scanf("%d",&_c语言除法保留小数如何运算 https://blog.csdn.net/qq_44625599/article/details/121133793

C语言基础---3.格式化输出总结---%d ,%s,%f & %.3f,%m.ns 以及sprintf函数_sprintf %s_hello-alien的博客-CSDN博客 文章目录1.常规----格式化输出2.特殊----格式化输出3.sprintf-----格式化输出1.常规----格式化输出%d//整型输出%ld//长整型输出%o//以八进制数形式输出整数%x //以十六进制数形式输出整数,或输出字符串的地址%u//以十进制数输出unsigned型数据(无符号数)注意:%d与%u的区别是,有无符号的数值范围不同,也就是极限的值不同,不然数值打印出来会有误%c//用来输出一个字符%s/_sprintf %s https://blog.csdn.net/chenmozhe22/article/details/109738852

c语言:为什么把整数以%f格式输出是0.000? - 知乎 #include<stdio.h> void main() { int a=1073741824; printf("%f\n",a);//为什么… https://www.zhihu.com/question/55152080



#include <stdio.h>

int main(void){
    
    int a;
    int b;
    
    scanf("%d %d",&a,&b);
    
    // https://blog.csdn.net/black_procedure/article/details/104622570
    // https://blog.csdn.net/weixin_44952348/article/details/110522187
    // https://blog.csdn.net/qq_44625599/article/details/121133793
    // https://blog.csdn.net/chenmozhe22/article/details/109738852
    // https://www.zhihu.com/question/55152080
    // %f是用于打印浮点数,所以用它来打印整数运算(a+b)/2的结果,结果会出错 
    // 然后,(a+b)/2.0,除法式子中出现了浮点数类型,所以 会保留小数结果 
    printf("%f",(a+b)/2.0);
    
    return 0; 
}

img

【以下回答由 GPT 生成】

问题原因是在C语言中,整数类型之间的运算结果仍然是整数。也就是说,(a + b)的结果是一个整数类型的值。

在该代码中,(a + b)表示两个整数相加的和,然后再除以2。由于(a + b)是整数类型,除以2后,结果会向下取整,所以最终结果始终为0。

解决方法是将(a + b)的结果转换为浮点数类型,即将整数类型的结果强制转换为浮点数类型。可以使用强制类型转换运算符(float)将表达式(a + b)转换为浮点数类型,然后再除以2。

以下是修改后的代码:

#include <stdio.h>

int main() {
    int a;
    int b;

    scanf("%d%d", &a, &b);
    printf("%f", ((float)(a + b) / 2));

    return 0;
}

在此修改后的代码中,将(a + b)的结果强制转换为浮点数类型,然后再除以2。这样就可以得到正确的平均值结果了。

请注意,%f格式说明符会打印浮点数,所以需要使用强制类型转换将结果转换为浮点数类型,保证输出时能够正确显示小数部分。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^