鱼C论坛

 找回密码
 立即注册
查看: 1307|回复: 7

[已解决]输出错误

[复制链接]
发表于 2023-5-15 22:26:36 | 显示全部楼层 |阅读模式

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

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

x
#include<stdio.h>
#include<stdbool.h>
#include<math.h>
int main(){
        //定义
        float a,b,c;
        float S,min,max,h;
        _Bool flag=0;
        printf("请输入三角形的三边长:");
        scanf("%d %d %d",&a,&b,&c);
       
        if(a+b>c&&a+c>b&&b+c>a){
                flag=1;
        }
       
        if(flag){
                max=a>b?a:b;
                max=max>c?max:c;
                printf("%f",max);
                min=a<b?a:b;
                min=min<c?min:c;
                printf("%f",min);
                //mid=a+b+c-max-min;
               
                h=max*max-0.5*0.5*min*min;
                printf("%f",h);
                S=max*h*0.5;
               
        }
       
        printf("三角形的面积为:%f",S);
        //return 0;
}
最佳答案
2023-5-15 22:26:58
问题在于scanf函数中使用的是%d格式符,而a、b、c都是float类型,应该使用%f格式符。修改为如下代码:
scanf("%f %f %f",&a,&b,&c);
另外,需要注意的是,在计算h的时候,需要使用sqrt函数计算平方根。修改为如下代码:
h=sqrt(max*max-0.5*0.5*min*min);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-15 22:26:58 | 显示全部楼层    本楼为最佳答案   
问题在于scanf函数中使用的是%d格式符,而a、b、c都是float类型,应该使用%f格式符。修改为如下代码:
scanf("%f %f %f",&a,&b,&c);
另外,需要注意的是,在计算h的时候,需要使用sqrt函数计算平方根。修改为如下代码:
h=sqrt(max*max-0.5*0.5*min*min);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2023-5-15 22:28:42 | 显示全部楼层
isdkz 发表于 2023-5-15 22:26
问题在于scanf函数中使用的是%d格式符,而a、b、c都是float类型,应该使用%f格式符。修改为如下代码:

真服了,下意识就定义%d了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-15 22:29:36 | 显示全部楼层
这段代码存在多处问题:

1. `scanf` 中输入标识符 `%d` 应该改为 `%f`。

2. 计算变量 `h` 的公式不正确,应该使用勾股定理计算。

3. 输出变量时没有添加换行符,最后使用printf函数输出的“三角形的面积为:”和S值会连在一起。

下面是修改后的代码:
#include<stdio.h>
#include<stdbool.h>
#include<math.h>

int main(){
    //定义
    float a,b,c;
    float S,min,max,h;
    bool flag=0;  //使用标准库中的bool类型
    printf("请输入三角形的三边长:");
    scanf("%f %f %f",&a,&b,&c);  //修改%d为%f

    if(a+b>c&&a+c>b&&b+c>a){
        flag=1;  //可以构成三角形
    }

    if(flag){
        max=a>b?a:b;
        max=max>c?max:c;
        printf("%f\n",max);  //添加换行符
        min=a<b?a:b;
        min=min<c?min:c;

        h=sqrt(max*max-0.5*c*0.5*c);  //计算h的公式
        printf("%f\n",h);  //添加换行符

        S=max*h*0.5;
    }

    printf("三角形的面积为:%f\n",S);  //添加换行符

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

使用道具 举报

发表于 2023-5-15 22:31:24 | 显示全部楼层
啊这啧啧啧 发表于 2023-5-15 22:28
真服了,下意识就定义%d了

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

使用道具 举报

发表于 2023-5-15 23:47:30 | 显示全部楼层

我小号登不进去了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-16 06:50:35 | 显示全部楼层

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

使用道具 举报

发表于 2023-5-16 16:52:53 | 显示全部楼层

密码错误次数过多


奇怪,,我昨天重置过密码啊,还 copy paste 的,不可能错啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-24 20:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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