输出错误
#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;
} 问题在于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);
isdkz 发表于 2023-5-15 22:26
问题在于scanf函数中使用的是%d格式符,而a、b、c都是float类型,应该使用%f格式符。修改为如下代码:
真服了,下意识就定义%d了{:10_247:} 这段代码存在多处问题:
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;
} 啊这啧啧啧 发表于 2023-5-15 22:28
真服了,下意识就定义%d了
{:10_244:} sfqxx 发表于 2023-5-15 22:31
我小号登不进去了 歌者文明清理员 发表于 2023-5-15 23:47
我小号登不进去了
为什么 sfqxx 发表于 2023-5-16 06:50
为什么
密码错误次数过多
奇怪,,我昨天重置过密码啊,还 copy paste 的,不可能错啊
页:
[1]