c语言求高手帮忙找一下错!!!

程序如下,错误在最后。#include<stdio.h>floatx1,x2,disc,p,q;greater_than_zero(a,b)floata,b;{x1=(-... 程序如下,错误在最后。
#include<stdio.h>
float x1,x2,disc,p,q;

greater_than_zero(a,b)
float a,b;
{
x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
}

equal_to_zero(a,b)
float a,b;
{
x1=x2=(-b)/(2*a);
}

smaller_than_zero(a,b)
float a,b;
{
p=(-b)/2*a;
q=sqrt(disc)/(2*a);
}

main()
{
float a,b,c;
printf("\n请输入a,b,c,的值:");
scanf("%f %f %f",&a,&b,&c);
printf("方程是%5.2f*x*x+%5.2f*x+%5.2f=0\n",a,b,c);
disc=b*b-4*a*c;
printf("方程的解是:\n");
if(disc>0)
{
greater_than_zero(a,b)
printf("x1=%5.2f,x2=%5.2f\n",x1,x2);
}
else if(disc==0)
{
equal_to_zero(a,b)
printf("x1=%5.2f,x2=%5.2f\n",x1,x2);
}
else
{
smaller_than_zero(a,b)
printf("x1=%5.2f+%5.2fi,x2=%5.2f-%5.2fi\n",p,q,p,q);
}
}
E:\软件\C++\MSDev98\MyProjects\习题八点二\去.cpp(3) : error C2065: 'a' : undeclared identifier
E:\软件\C++\MSDev98\MyProjects\习题八点二\去.cpp(3) : error C2065: 'b' : undeclared identifier

E:\软件\C++\MSDev98\MyProjects\习题八点二\去.cpp(4) : error C2448: '<Unknown>' : function-style initializer appears to be a function definition
展开
 我来答
yaoyue1019
2009-12-25 · 知道合伙人互联网行家
yaoyue1019
知道合伙人互联网行家
采纳数:804 获赞数:3392
擅长lua脚本 与android前端交互设计

向TA提问 私信TA
展开全部
#include<stdio.h>
#include <math.h>
float x1,x2,disc,p,q;
void greater_than_zero(float a,float b)
{
x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
}

void equal_to_zero(float a,float b)
{
x1=x2=(-b)/(2*a);
}

void smaller_than_zero(float a,float b)
{
p=(-b)/2*a;
q=sqrt(disc)/(2*a);
}

void main()
{
float a,b,c;
printf("\n请输入a,b,c,的值:");
scanf("%f %f %f",&a,&b,&c);
printf("方程是%5.2f*x*x+%5.2f*x+%5.2f=0\n",a,b,c);
disc=b*b-4*a*c;
printf("方程的解是:\n");
if(disc>0)
{
greater_than_zero(a,b);
printf("x1=%5.2f,x2=%5.2f\n",x1,x2);
}
else if(disc==0)
{
equal_to_zero(a,b);
printf("x1=%5.2f,x2=%5.2f\n",x1,x2);
}
else
{
smaller_than_zero(a,b);
printf("x1=%5.2f+%5.2fi,x2=%5.2f-%5.2fi\n",p,q,p,q);
}
}
楼上的别误导人了,楼主的错误是他根本不熟悉编程语言,C++对C是向下兼容的,除了个别地方有些差异,总体来说C的语法C++可以全部接受

要和LZ强调的是

每个函数定义的时候最好都有一个返回值,如果没有的话也使用void

再就是每个函数的参数声明不是写在函数名下面,而是写在函数名右边的括号里

再一个就是函数变量最好不要用全局的 一开始就定义那么多全局变量不太好

再再一个是 你使用什么功能就要引入相应的头文件,比如你使用了开平方的功能,那个sqrt是math.h库里的函数,所以也要引入相应的头文件
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sandamailcn
2009-12-25 · TA获得超过743个赞
知道小有建树答主
回答量:541
采纳率:0%
帮助的人:0
展开全部
看提示是因为你写的语法是c语言的,但你文件后缀为cpp,编译器把这样的程序当c++程序编译,因此有错,因为在c++中,函数不允许定义为:
greater_than_zero(a,b)
而应该写:
greater_than_zero( float a, float b)
其实就是c,现在也多这样写。
你可以把文件名改为.c再试
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ck659
2009-12-25 · TA获得超过1589个赞
知道小有建树答主
回答量:1650
采纳率:0%
帮助的人:569万
展开全部
修改了一下,你试试:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

float x1,x2,disc,p,q;

void greater_than_zero(float a, float b)
{
x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
return;
}

void equal_to_zero(float a, float b)
{
x1=x2=(-b)/(2*a);
return;
}

void smaller_than_zero(float a, float b)
{
p=(-b)/2*a;
q=sqrt(disc)/(2*a);
return;
}

int main()
{
float a,b,c;
printf("\n请输入a,b,c,的值:");
scanf("%f %f %f",&a,&b,&c);
printf("方程是%5.2f*x*x+%5.2f*x+%5.2f=0\n",a,b,c);
disc=b*b-4*a*c;
printf("方程的解是:\n");
if(disc>0)
{
greater_than_zero(a,b);
printf("x1=%5.2f,x2=%5.2f\n",x1,x2);
}
else if(disc==0)
{
equal_to_zero(a,b);
printf("x1=%5.2f,x2=%5.2f\n",x1,x2);
}
else
{
smaller_than_zero(a,b);
printf("x1=%5.2f+%5.2fi,x2=%5.2f-%5.2fi\n",p,q,p,q);
}
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2009-12-25
展开全部
二楼的,你说别人误导人,明明是你瞎说, 你若说的对,你为什么要把函数改成greater_than( float a, float b)
不是c++兼容c吗?
你能说别人什么地方说错了吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
昕日会更好
2009-12-25 · 超过56用户采纳过TA的回答
知道答主
回答量:347
采纳率:0%
帮助的人:0
展开全部
c始终不是c++,当然要修改了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式