麻烦帮我鉴定一下这个程序 顺便帮忙简化一下

来源:百度知道 编辑:UC知道 时间:2024/06/27 05:42:50
朋友随手写了个程序传给我,叫我帮他看下有没有错,顺便简化一下
可是我也不太懂,但是看得出来这个程序写得很啰嗦

#include <stdio.h>
#include <math.h>

void main()
{
int a,b,c,delta,4ac,result1,result2;
scanf ("%d,%d,%d",&a,&b,&c);
4ac=4*a*c;
delta=b*b-4ac;
if delta<0;
printf ("该方程在实数范围内无解");
else
result1=-1*b+sqrt (delta)/2;
result2=-1*b-sqrt (delta)/2;
if result1=result2;
printf("这个方程只有一个解,这个解是%d\n",result1);
else
printf ("result 1 is %d.\nresult2 is %d.\n",result1,result2);
}

化简到是没发要了,还算简便了。但是中间有少许的语法错误。
if delta<0; 应该写成if(delta<0)而且后面没有分号!
还有那个-1*b可以写成-b.
我去调试了老半天,终于给调出来了。你仔细看看
#include<stdio.h>
#include<math.h>
void main()
{
int a,b,c;
float delta,result1,result2;
scanf("%d,%d,%d",&a,&b,&c);
delta=b*b-4*a*c;
if (delta<0)
printf ("该方程在实数范围内无解");
else
{result1=(-b+sqrt(delta))/(2*a);
result2=(-b-sqrt(delta))/(2*a);
if (result1==result2)
printf("这个方程只有一个解,这个解是%f\n",result1);
else
printf ("result1 is %f.\nresult2 is %f.\n",result1,result2);
}
}
那个sqrt函数的值是双精度的,而且要里面的参数也是实型的,所以有点变化。
还有,你把那个求根公式都搞错了。

#include <stdio.h>
#include <math.h>

void main()
{
int a,b,c,result1,result2;
scanf ("%d,%d,%d",&a,&b,&c);
if((b*b-4*a*c)<0)
printf ("