请大家帮忙一下!请看我的C代码什么地方错误了

我是个新手,加上又不懂得英语,最近编写了一个C程序,但就是运行不了,请大家看看什么地方出了问题!

#include<stdio.h>
#include<math.h>
void main()
{
float a,b,c,dt;
printf("请输入a,b,c:");
scanf("\n %f %f %f",&a,&b,&c);
dt=sprt(b*b-4*a*c);
printf("方程%fx*x+%fx+%f=0的根是:\n",a,b,c);
printf("x1=%f x2=%f",(-b+dt)/(2*a),(-b-dt)/(2*a));
}

您好,您的程序有如下几处问题:
1,您的关键字书写错误:dt=sprt(b*b-4*a*c); 中sprt应改为sqrt(求表达式的平方根)
优化后的源程序代码为:
#include<stdio.h>
#include<math.h>
void main()
{
float a,b,c,dt;
printf("input a,b,c:\n");
scanf("\n %f %f %f",&a,&b,&c);
dt=sqrt(b*b-4*a*c);
printf("方程%fx*x+%fx+%f=0的根是:\n",a,b,c);
printf("x1=%f x2=%f\n",(-b+dt)/(2*a),(-b-dt)/(2*a));
}
如果你是个新手,加上又不懂得英语的话,想学好C语言我建议你从如下几个步骤着手!
一,题书结合!
如果你在看C语言教程时可以找一些对应知识点的练习做下,如果那个题搞不懂就多看看书中的知识点!看几回你就会知道一些了!

二,学好C语言的运算符和运算顺序
这是学好《C程序设计》的基础,C语言的运算非常灵活,功能十分丰富,运算种类远多于其它程序设计语言。在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算和三目运算使表达式更为简单,但初学者往往会觉的这种表达式难读,关键原因就是对运算符和运算顺序理解不透不全。当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则显得十分重要。在学习中,只要我们对此合理进行分类,找出它们与我们在数学中所学到运算之间的不同点之后,记住这些运算也就不困难了,有些运算符在理解后更会牢记心中,将来用起来得心应手,而有些可暂时放弃不记,等用到时再记不迟。
先要明确运算符按优先级不同分类,《C程序设计》运算符可分为15种优先级,从高到低,优先级为1 ~ 15,除第2、3级和第14级为从右至左结合外,其它都是从左至右结合,它决定同级运算符的运算顺序。下面我们通过几个例子来说明:
(1)5*8/4%10 这个表达式中出现3种运算符,是同级运算符,运算顺序按从左至右结合,因此先计算5 *8=40,然后被4除,结果为10,最后是%(求余数)运算,所以表达式的最终结果为10%10 = 0;
(2)a = 3;b = 5;c =++ a* b ;d =a + +* b;
对于c=++a*b来说,按表中所列顺序,+ +先执行,*后执行,所以+ + a执行后,a的值为4,由于+ +为前置运算,所以a的值4参与运算,C的值计算式为4*5=20而不是3*5=15了;而对于d=a++*b来说,由于a + +为后置运算,所以a值为4参与运算,使得d的值仍为20,而a参与运算后其值加1,值为5。 这个例子执行后,a的值为5,b的值为5,c的值为20,d的值也是20;
(3)(a = 3,b = 5,b+ = a,c = b* 5)
例子中的“,”是逗号结合运算,上式称为逗号表达式,自左向右结合,最后一个表达式的结果值就是逗号表达式的结果,所以上面的逗号表达式结果为40,a的值为3,b的值为8,c的值为40。
(4)a=5;b=6;c=a>b?a:b;
例中的a>b?a:b是一个三目运算,它的功能是先做关系运算a>b部分,若结果为真,则取问号后a的值,否则取冒号后b的值,因此c的值应该为6,这个运算可以用来代替if…else…语句的简单应用。

三,学好C语言的四种程序结构
要把C语言的语法知识记住,因为编程都是以此为基础的!
四,多上机调试
自已写好代码后多在机子去调试,认真想想为什么会错?
不要为得出结果而上机输入代码去验证,一定要分析错的原因!

五,C语言对英语的要求
其实英语不好并不影响C语言的学习,因为C语言的英语都是些关建字,很容易记,看多了就知道了!

另外谭浩强的《c语言程序设计>>这本书也很不错的,你可以到学校的图书馆找了看!
最后祝你学习进步!
温馨提示:内容为网友见解,仅供参考
第1个回答  2007-08-31
#include<stdio.h>
#include<math.h>

void main()
{
float a,b,c,dt;
printf("请输入a,b,c:");
scanf("%f %f %f",&a,&b,&c);/* 这里不能有\n */
if(a == 0.0)
{
printf("a不能为零!\n请重新运行程序!\n")
return;
}

dt=b*b-4*a*c;
if(dt >= 0)/* dt > 0 才有解 */
{
dt=sqrt(dt);/*不是sprt() 应该是是sqrt() */
printf("方程%fx*x+%fx+%f=0的根是:\n",a,b,c);
printf("x1=%f x2=%f",(-b+dt)/(2*a),(-b-dt)/(2*a));
}
else
{
printf("没有解!\n");
}
getch();
}
第2个回答  2007-08-31
运行有报错吗?报什么错?我感觉没什么错啊!你是不是a,b,c的输入方式不对哦?
第3个回答  2007-08-31
网友zubyzuby
说得好
第4个回答  2007-08-31
SCANF语句如果输入的是字符串的话,不要加空格(除非你需要一个空格字符),否则将会被认为是一个字符被输入
SCANF 前一个语句,你要想换行的话,应该用PRINTF语句!!
第5个回答  2007-08-31
晕 你是不是把sqrt写成sprt 拉????

请大家帮忙一下!请看我的C代码什么地方错误了
1,您的关键字书写错误:dt=sprt(b*b-4*a*c); 中sprt应改为sqrt(求表达式的平方根)优化后的源程序代码为:include<stdio.h> include<math.h> void main(){ float a,b,c,dt;printf("input a,b,c:\\n");scanf("\\n %f %f %f",&a,&b,&c);dt=sqrt(b*b-4*a*c);printf("方程%f...

c语言:如图,请问一下哪里出错了?
首先解答一下这个C语言代码出错的原因:第一个gets未定义:出现这个错误一般是没有包含相应的头文件,或者库里没有这个函数。这里应该是没有这个函数。gets(char *dest)是一个老的库函数,采用这个函数存在越界的安全隐患。它只有一个参数,如果输入的字符个数超过dest内存空间,程序可能失败,也可能被黑客...

C语言,帮忙看一下哪里错了?
错误有以下几处:1、第二行,改为:int GC(int a,int b,int c)。2、第四行和第五行,去掉。3 、第六行,改为:if(a==b&&b&&c)printf("为等边三角形\n");4、第七行改为:return 1;其他不用改,应该就好了。如果还不行请留言。

刚学c语言,请大神看一下,哪里错了
你好,代码没有错,只是你在输入重力时,输入的格式没有按要求来输入重力g,正确的输入g应该是这样的,请看下图。希望能帮到你。

C语言简单程序,帮看看哪错了
错误点有3个:输入一个实数那行有个引号用了中文符,应该改为英文符;最后输出-a那段语句后面没有写“;”;定义变量a时为双精度浮点数,而输入时存为了单精度浮点数,存在溢出故障,会导致运行错误,见下图:应该改为如下 include<stdio.h> main(){ double a;printf("请输入一个实数:");scanf(...

一个c程序代码输入5个数字求出其中最小数;麻烦看一下哪里错了
这是改好的 include<stdio.h>main(){ int f[5],m,x,mix; for(m=0,x=1;m<=4;m++,x++) { printf("请输入第%d位数:",x); scanf("%d",&f[m]); } mix=f[0]; for(m=1;m<=4;m++) { mix=mix<f[m]?mix:f[m]; } printf("mix=...

请帮忙看一下下面的这段代码错在 哪儿,编译有错误。
你代码中可能存在错误。就是头文件的引用 #include<inttypes.h> 这个文件一般是没有的,得自己加进去 文件内容如下 \/* 7.8 Format conversion of integer types <inttypes.h> *\/#ifndef _INTTYPES_H_#define _INTTYPES_H_#include <_mingw.h>#include <stdint.h>#define __need_wchar_t#...

C语言编程求一元二次方程问题,请大家看一下下面的C语言程序哪里出错了...
main(){ void yyecfc(double a,double b,double c);\/\/声明函数 char judge;double a,b,c;printf("求一元二次方程的解\\n");loop:printf("输入参数a,b,c\\n");\/\/设置循环跳转标号 scanf("%lf%lf%lf",&a,&b,&c);yyecfc(a,b,c);\/\/调用函数 printf("是否继续?(Y\/N)\\n");s...

c语言未经处理的异常,求大佬指点
您好,很高兴回答您的问题。您的这个题目,系统已经很明显告诉您了错误的原因。因为您定义的x为字符型数据,那么它对应的输入输出格式符为%c,但是您在输入语句中写的是%s,是字符串格式,不符合字符型单个变量的输入输出。根据题目意思,应该是要输入字符串,那么定义的时候就要写成char x[2],因为存放的...

初学C语言,请大家帮我看看这个问题,输出结果不对啊
1 、像类似 a=b=c 的赋值语句是从右侧往左进行的,即先c赋值给b,b再赋值给a 2 、== 表示判断时候相等,不是赋值 3 、printf函数格式化参数的判别顺序是从右向左 结合上面几点,打印结果说明如下:(1) 最右边的d 是因为你的printf的最后一个格式化串写错了(你写成了d%)(2) a==(b=...

相似回答
大家正在搜