C语言问题,求高手改错解析,我是小白,谢谢啦

输入三个实数,判断能否构成三角形;若能,再说明是何种类型的三角形,

我这样写不可以吗?
#include<stdio.h>
void main()
{
double a,b,c,m;
printf("input a,b,c;");
scanf("&%lf,&%lf,&%lf,a,b,c");
if(a+b>c&&b+c>a&&c+a>b)
if(a>b&&b>c)
a=a;
b=b;
c=c;
if(a>b&&c>b)
m=b;
b=c;
c=m;
if(b>c&&c>a)
m=a;
a=b;
b=c;
c=m;
if("b>a&&a>c")
m=a;
a=b;
b=m;
if(c>a&&a>b)
m=b;
b=a;
a=c;
c=m;
if(c>b&&b>a)
m=a;
a=c;
c=m;
if(b*b+c*c==a*a)
printf("直角三角形");
else if(b*b+c*c<a*a)
printf("钝角三角形");
else if(b*b+c*c>a*a)
printf("锐角三角形");
else
printf("不能构成三角形");
}

第1个回答  2013-01-16
除了楼上说的外。
所有属于 if 后的语句块都要用大括号括起来,否则if判断完后只会执行紧靠 if 后的第一个语句,接着就会继续顺序执行之后的语句。
例如:
if(a>b&&b>c)
a=a;
b=b;
c=c;
会在在判断条件 a>b&&b>c 成立后执行 a=a;
接着不管条件 a>b&&b>c是否成立,都会执行语句:
b=b;
c=c;
这显然不是你想要的。

应改为:
if(a>b&&b>c)
{
a=a;
b=b;
c=c;
}
这样的情况出现在你所有的if语句中。
即使if之后只有一条语句,也最好把它括起来。
第2个回答  2013-01-16
scanf("&%lf,&%lf,&%lf,a,b,c");改为scanf("&%lf,&%lf,&%lf",&a,&b,&c);
语法格式误点多!其实只要让a保存最大值即可!我改成下面的了!
#include<stdio.h>
void main()
{
double a,b,c,m;
printf("input a,b,c:");
scanf("%lf%lf%lf",&a,&b,&c);
if(a+b>c&&b+c>a&&c+a>b)
{
if(a<b)
{
m=a,a=b,b=m;
}
if(c>a)
{
m=a,a=c,c=m;
}
if(b*b+c*c==a*a)
printf("直角三角形");
else if(b*b+c*c<a*a)
printf("钝角三角形");
else if(b*b+c*c>a*a)
printf("锐角三角形");
}
else
printf("不能构成三角形");
}本回答被提问者采纳
第3个回答  2013-01-16
scanf("&%lf,&%lf,&%lf,a,b,c");
改成:
scanf("%lf,%lf,%lf",&a,&b,&c);

然后if 后面加大括号
比如:
if(a+b>c&&b+c>a&&c+a>b)
{
if(a>b&&b>c)
{
a=a;
b=b;
c=c;
}

if()
{
...
}

...}
不然只有紧跟if下面的第一条语句会执行。
第4个回答  2013-01-16
scanf("&%lf,&%lf,&%lf,a,b,c");

这个应该是scanf("%lf,%lf,%lf“,&a,&b,&c);
还有你的if语句要明确一下,如果是多个语句,应用
if()
{
}
结构,指哪些是这个范围的
第5个回答  2013-01-16
你先说 能不能运行通过啊 我大致一看 错误有点小多啊 这能够编译通过?

C语言问题,求大神解决,谢谢啦,我是小白,最好能够解释下原因..
第三项结果是一个指针,也就是一个地址。它就是a[2][1]的地址,由于scanf要求是地址,所以它是正确的。

C语言问题,求大神解决,谢谢拉。。我是小白,解释下原因
答案就是 A) 1

C语言问题,求大神解决,谢谢拉。。我是小白,解释下原因
因为x=1,所以 x的二进制为:0000 0001 向左移动3位后为:0000 1000 0000 1000转为10进制位:2^3 = 8 所以,选:D

C语言问题,求大神解决,谢谢啦,我是小白,最好能够解释下。
题中,a=3 ,二进制为:0011;b=6,二进制值为:0110。所以(a^b)按位异或后的值为0101也就是5,左移两位后值(二进制)为:010100 也就是 :20

C语言问题,求大神解决,说下所使用的原理及知识点,谢谢啦,我是小白。
char c=’A’; \/\/在ASCII码中 字符'A'是 65 c = (c>=’A’ && c<=’Z’) ? (c+32) : c;这个表达式的意思是: c>=’A’成立, c<=’Z’也成立,所以执行c+32 c+32 = 65+32 = 97;在ASCII码中 字符97是字符'a'所以答案选择 B ...

C语言问题,求大神解决,谢谢啦,我是小白,最好能够解释下。
C.int add(x,y) \/\/两个参数,都没有数据类型说明,而且花括号内的float x,y \/\/是定义的临时变量,不是形参类型 {float x,y;return(x+y);} D.int add(x,y) \/\/正确,虽然add后的参数类型没有说明,但紧接着其后的float x,y;\/\/就说明了参数的数据类型float x,y;,这是老旧...

c语言求阶乘问题,希望高手指导本菜鸟改错,在线等,不胜感激
include <stdio.h>\/\/求一个数的阶乘,结果对10007取余int main(){ int N;int input[100];int i; unsigned long fac(int n);N = 0;while(scanf("%d",&input[N])&&(input[N]!=-1)&& N <100) \/\/现将输入存到缓冲区 { N++; }for(i = 0 ;i < N; i++){...

c语言小白,请问为什么我的这段代码输出结果不正确?应该怎么改呢?求具...
1、这一块统计数量的代码其实老实说我都没看懂是什么意思,但是我测试了,输入13能统计出来是2,但是输入12345的时候统计就错了,这段并不能数出3来。2、第17行有问题,你每次循环都把max赋值为Num[0],按照你的代码来,输入13时,Num[0]的值为0,所以max初始值总是0,而且Num[9]也是0,所以...

C语言改错题,小白求解
看了下代码,问题应该都是变量命名,如图:1、sun应该是sum,sun是没有定义过的变量 2、P==n这个中的P也是没有被声明过的,应该是小写p 其他逻辑看了下好像没有什么感觉异常的

关于C语言的简单问题 求大神改错 TAT
这一句改为 scanf("%s",&s);还有 你这个程序 乱七八糟的,不能实现对应的功能啊

相似回答