一道C语言编程题,求解答并且说明错误原因!!

编程题:编程实现:从键盘输入三角形的三条边长,判断这三条边是否能构成三角形,如不能打印“不构成三角形”,如能,请判断该三角形是什么类型的三角形?提示:程序只要能根据输入判断并打印出:不构成三角形、等边三角形、等腰三角形、直角三角形、普通三角形五种情况即可。另外,三条边长度可以是小数。要求:必须使用if …else if…else if…else…多分支结构实现。 输入格式:3 4 5 输出格式:直角三角形

//一道C语言编程题,求解答并且说明错误原因!! 50
//编程题:编程实现:从键盘输入三角形的三条边长,判断这三条边是否能构成三角形,如不能打印“不构成三角形”,如能,请判断该三角形是什么类型的三角形?
//提示:程序只要能根据输入判断并打印出:不构成三角形、等边三角形、等腰三角形、直角三角形、普通三角形五种情况即可。另外,三条边长度可以是小数。
//要求:必须使用if …else if…else if…else…多分支结构实现。
//输入格式:3 4 5
//输出格式:直角三角形

#include <stdio.h>
#include <stdlib.h>

int canBe(double a, double b, double c) {
if (a + b > c || a + c > b || b + c > a) {//判断可以构成三角形
return 1;
} else {
return 0;
}
}

int main() {
printf("input three number");
double a, b, c;
scanf("%lf %lf %lf", &a, &b, &c);//接收三个边长
if (canBe(a, b, c) == 1) {//如果能构成三角形
if (a == b == c) {//等边条件
printf("等边三角形");
} else if (a == b || b == c || a == c) {
printf("等腰三角形");//等腰条件
} else if (a * a + b * b == c * c) {
printf("直角三角形");//直角条件
} else {
printf("普通三角形");//都不符合
}
} else {
printf("不构成三角形");//如果不能构成三角形
exit(0);
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-10-25
所以,其实语言不重要了,重要的是对数学的理解了。
等边,三个数一样大,
直角,不用说了吧
等腰,两边一样大,
两边合计大于第三边是三角,
这有个顺序不。等腰直角三角型也是有的,
不是要给写完整的代码吧……
第2个回答  2019-10-25
#include <stdio.h>
#include <string.h>
main(){
float a,b,c;
printf("请输入三角形3条边的长度,用空格分隔:");
scanf("%f %f %f",&a,&b,&c);
printf("[%.2f,%.2f,%.2f]\n",a,b,c);
if(a+b<=c || a+c<=b || b+c<=a){
printf("\n不构成三角形\n");
}
else if(a==b&&b==c){
printf("\n等边三角形\n");
}
else if(a==b||b==c||a==c){
printf("\n等腰三角形\n");
}
else if(
a*a+b*b==c*c||
a*a+c*c==b*b||
c*c+b*b==a*a){
printf("\n直角三角形\n");
}
else{
printf("\n普通三角形\n");
}
}
第3个回答  2019-10-25

#include <stdio.h>

#include <math.h>

int main()

{ double a,b,c,t; 

  scanf("%lf%lf%lf",&a,&b,&c);

  if(a<b){t=a;a=b;b=t;}

  if(a<c){t=a;a=c;c=t;}

  if(a>=b+c)printf("不构成三角形");

    else if(a==b&&b==c)printf("等边三角形");

      else if(a==b||b==c||a==c)printf("等腰三角形");

        else if(fabs(a*a-(b*b+c*c))<1e-8)printf("直角三角形");

          else printf("普通三角形");

  return 0;

}

本回答被网友采纳
第4个回答  2019-10-25
不知道怎么办?

一道c语言编程题求大神解答,找一下我错在哪了,谢谢了?
错误1:宏定义最后没有分号,将#define D 500;改为#define D 500 错误2:l不是整数,因此将l定义为int型就错了 错误3:既然规定输入格式为P=,那么输入时就不能直接输入数值,而应在数值之前输入P=,例如输入P=6000 另外,程序的不妥之处:1、利润不一定是整数,因此将P定义为int型不妥 2、i...

C语言编程,输入正整数a,b,输出a,b之间所有素数之和,求解答我的代码哪里...
有两个错误,见下面代码:include<stdio.h> void main(){ unsigned int a,b,x,y,m=0;printf("a=");scanf("%d",&a);printf("b=");scanf("%d",&b);if(a>=b)printf("wrong");else for(x=a+1;x<b;x++){ for(y=2;y<x;y++){ if(x%y==0) break;} if(y==x) m=m...

C语言编程作业,求解答
作业1:result(int)= c (char) * i (int) + f (float) \/ d (double) -(f + i);第一步:f+i, 一个float和int相加,按精度高的float进行计算,结果为float result = char * int + float\/double - float;第二步:char * int, 他们都是整数相加为int result =int + float\/double...

c语言编程求纠错~~~
while(scanf("%d",&n)!=EOF){if(n==0)break;a=sg(n);if(a>=10)a=sg(a);printf("%d\\n",a);} 这个循环出错了,如果按你这个代码来执行的话,每次读入一个n的值,循环里都是只计算一次a的值,a的值要么是sg(n),要么是sg(a),然后继续读入新的n的值。要想满足“如果结果是两位...

一道C语言问题求解答
这道题考的是动态规划的思想。代码思路如下:假设我们要铺长度为10,那么怎么铺呢?有两种铺法。长度为9,再加一块长度为1的。长度为8,再加一块长度为2的。由此我们可以得知铺n的情况等于铺n-1的情况+铺n-2的情况。公式 :f(n)=f(n-1)+f(n-2)。

C语言题 请求师傅们解答
{ if ( *a ){ fun(a+1) ;printf("%c", *a) ; \/\/ } } main( ){ char s[10]="abcd";printf("处理前字符串=%s\\n处理后字符串=", s);fun(s); printf("\\n") ;} 第二题 char *a,*b;a=s;b=t;while(*a&&*b){ a++;b++;if(!*b) return s;if(!*a) return t...

求c语言代码纠错
include <stdio.h> include <math.h> int main(){ double x1,x2,a,b,c;printf("已知方程ax^2+bx+c=0,请输入a,b,c\\n");scanf("%lf%lf%lf",&a,&b,&c);printf("方程为ax^2+bx+c=0\\n"); \/\/有改动 if (b*b-4.0*a*c>=0){ x1=(-b+sqrt(b*b-4.0*a*c))\/...

C语言编程问题求解答
9题:include <stdio.h>int main(){int N=1;scanf("%d",&N);if(N<=0){N=1;}int numSpaceFirst=N-1;for(int row=0; row<N; row++,numSpaceFirst--){for(int i=0; i<numSpaceFirst; i++){printf(" ");}for(int i=0; i<2*row-1; i++){printf("*");}printf("\\n...

C语言题目,求大神解答
这段程序的运行结果如下:p1数组中的元素:2 b f 4 d f 此外,如果要添加更多功能,还可以在程序中添加更多函数。例如,可以添加一个查询函数,用于查询p1数组中指定的联系人信息。可以添加一个添加函数,用于向p1数组中添加新的联系人信息。可以添加一个修改函数,用于修改p1数组中指定的联系人信息。...

C语言问题,求大佬解答
【示例代码如下,用 中文c 编译】定义 最大输入个数 10000 整数类型 甲,个数=0, 输入数[最大输入个数],统计=0;小数类型 和=0,平均值;重复{ 图形输入整数() => 甲;如果( 甲 大于 0 ){ 和 += 甲;如果(个数 < 最大输入个数) 输入数[个数 ++] = 甲;} }直到 甲 ...

相似回答