C语言编程问题,找出其中的错误,并说明理由

#include<stdio.h>
#include<stdio.h>
float f(float x) /*定义函数f,以实现f(x)=((x-5.0)*x+16.0)*x-80.0*/
{
float y;
y=((x-5.0)*x+16.0)*x-80.0;
return(y);
}
float xpoint(float x1,float x2) /*定义xpoint函数,求出弦与x轴交点*/
{
float y;
y=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));
return(y);
}
float root(float x1;float x2) /*定义root函数,求近视根*/
{
float x,y,y1;
y1=f(x1);
do
{
x=xpoint(x1,x2);
y=f(x);
if(y*y1>0) /*f(x)与f(x1)同符号*/
{
y1=y;
x1=x;
}
else
x2=x;
} while(fabs(y)>=0.0001);
return(x);
}
void main() /*主函数*/
{
float x1,x2,f1,f2,x;
do
{
printf("input x1,x2:\n");
scanf("%f,%f",&x1,&x2);
f1=f(x1);
f2=f(x2);
}
while(f1*f2>=0);
x=root(x1,x2);
printf("A root of equation is %8.4f\n",x);

}

第1个回答  2009-08-13
一共两个错误:
1. 需要在开始#include<math.h>,因为后面的fabs库函数的声明包含在这个头文件中
2.
float root(float x1;float x2) /*定义root函数,求近视根*/
参数用,分隔,不是用;,所以改为:
float root(float x1,float x2) /*定义root函数,求近视根*/

下面是修改后的代码:
#include<stdio.h>
#include<math.h>

float f(float x) /*定义函数f,以实现f(x)=((x-5.0)*x+16.0)*x-80.0*/
{
float y;
y=((x-5.0)*x+16.0)*x-80.0;
return(y);
}
float xpoint(float x1,float x2) /*定义xpoint函数,求出弦与x轴交点*/
{
float y;
y=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));
return(y);
}
float root(float x1,float x2) /*定义root函数,求近视根*/ //Error1: ;->,
{
float x,y,y1;
y1=f(x1);
do
{
x=xpoint(x1,x2);
y=f(x);
if(y*y1>0) /*f(x)与f(x1)同符号*/
{
y1=y;
x1=x;
}
else
x2=x;
} while(fabs(y)>=0.0001);
return(x);
}
void main() /*主函数*/
{
float x1,x2,f1,f2,x;
do
{
printf("input x1,x2:\n");
scanf("%f,%f",&x1,&x2);
f1=f(x1);
f2=f(x2);
}
while(f1*f2>=0);
x=root(x1,x2);
printf("A root of equation is %8.4f\n",x);

}本回答被提问者采纳

对于C语言编程出了错,怎么能快速找出错误呢?
代码是否存在逻辑错误:1、变量使用前未被数值 实例:int main(){ int x=5,y,z;z=x*y;printf("%d",z);return 0;} 在此程序中变量y在使用之前未被赋值,所以结果输出z的值就会是系统随机分配一个值给y再加乘以x的值。2、把赋值赋值符号“=”与等于符号“==”相混淆 实例:有一下语句:...

一道c语言编程题求大神解答,找一下我错在哪了,谢谢了?
没有语法错误,只能说明在格式上没有找到错误,还不一定是正确的,更不要说能够正确执行了。没有语法错误,有三种可能:1、格式没问题,但算法错误;2、格式没问题,但不符合要求,导致计算结果错误;3、格式没问题,且算法没问题,能够计算出正确结果。只有符合第3种情况,才是正确的程序。

c语言 编程 代码 为什么会出现这种错误 怎么解决?
产生这个问题可能的原因 1, 你用vc建了一个控制台程序,它的入口函数应该是main, 而你使用了WinMain.2. 你用vc打开了一个.c\/.cpp 文件,然后直接编译这个文件,这个文件中使用了WinMian而不是main作为入口函数。vc这时的默认设置是针对控制台程序的。解决方法 1.进入project->setting->c\/c++, ...

c语言编程错误解析:下面是代码(跟上一个提问不一样),请问错在哪儿?为什 ...
第一个:pS = (double *)malloc(sizeof(double)*index);pS[NUM_P]是分配好内存的了,你定义的42,pS是常量,无法进行赋值操作。你需要重新定义指针变量来操作 第二个:strcpy()是针对字符串的,不能将浮点数拿来拷贝,你就改成:pS[j++] = zhuanhuan;更何况你还写的pS[j++],假如pS[]是...

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语言的编程问题,帮忙找找哪错了,一直输出NONONONO
int flower(int num);int main(){ int m,n,i,k=0;scanf("%d%d",&n,&m);for(i=n;i<=m;i++){ k+=flower(i);} if(k==0)printf("no\\n");return 0;} int flower(int num){ int a,b,c;if(num<100||num>999)return 0;a=num%10;b=num%100\/10;c=num\/100;if(a*a...

C语言编程的三个数比大小,求指出错误点。
main(){ int a,b,c,d;printf("请输入三个整数:\\n");scanf("%d,%d,%d",&a,&b,&c);if(a>b){d=a,a=b;} else{d=b;} if(c>d){printf("%d>%d>%d\\n",c,d,a);} else if(a>c)printf("%d>%d>%d\\n",d,a,c);else printf("%d>%d>%d\\n",d,c,a);system("pause...

c语言编程运行出现两个结果
有2处错误:include <stdio.h> include <math.h> define a 10000 define b 7500 define c 10000 define d 6000 define e 6000 void main (){ double i,w;printf("请输入利润:");scanf("%lf",&i);if (i>=1000000){ w=(i-1000000)*0.01+a+b+c+d+e;printf("应发奖金总数为:%....

C语言 编程后,有错误,怎么查看是那部分出错了!
【编写完代码后直接编译,如果有错误,编译器会自动弹出提示的】例子如下:如上图简单的C程序,编写完之后直接点击编译,然后会弹出错误信息,如下图所示:修改错误之后,再次编译就可以得到正确的输出结果,如下图所示:

关于C语言编写程序的一个疑问 高手帮忙看看我的程序哪错了
特别提醒这四个问题,祝你编程方面有所提高。另外说明一声,C语言是认汉字的,你老师说的没错。以下附上正确代码,在VC6中编译运行通过了的。具体不知道你要什么样的300个单词,这部分就自己补全吧。include<stdio.h> include <stdlib.h> include void main(void){ srand( (unsigned)time( NULL...

相似回答