C语言,这两个简单的程序有什么不同?实在看不出来了

来源:百度知道 编辑:UC知道 时间:2024/07/04 11:42:32
http://acm.jlu.edu.cn/joj/showproblem.php?pid=2355
第一个:
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
float a,b,c;
double x1,x2;
while(scanf("%f %f %f",&a,&b,&c)!=EOF)
{
if(b*b-4*a*c>0)
{
x1=(-b-sqrt(b*b-4*a*c))/(2*a);
x2=(-b+sqrt(b*b-4*a*c))/(2*a);
if(x1<x2)
printf("%.2f %.2f\n",x1,x2);
else if(x1>x2)
printf("%.2f %.2f\n",x1,x2);
else
printf("%.2f\n",x1);
}
else if(b*b-4*a*c==0)
{
printf("%.2f\n",(-b)/(2*a));
}
else
cout<<"No solution"<<endl;
}
return 0;
}
第二个:
#include <stdio.h>
#include <math.h>
int main()
{

using namespace std;这一句咋看着那么像c++呢,要说不一样呢,头文件不一样,还有那个using namespace std,第二个程序没有引入标准语言包;至于小右同学说的我到不赞同,在过称里声明的就是过程变量,只不过作用范围小一点,不能说不让在过程中声明,例如for(Int i=0;i<5;i++){}

用 VC6 试了,2个都能很好的跑。
实验数据:
1 2 1
1 2 3
1 3 2
1 -8 9
2 9 8
1 4 2.5
。。。

字面上也看不出有何区别。

用c语言的确不能,楼上的是用c++编译当然可以,如果改成.c确实存在楼主的问题的。
c语言要有很严格,定义函数要放最前面 比方double x1,x2;
while(scanf("%f %f %f",&a,&b,&c)!=EOF);这样没问题,而放后面就会有问题,这是c是c++的一个不同的地方,根据本人的经验判断,c的定义不能在其他函数后面,不然就会出错

我也同意江小右的说法