C语言问题请教

2025-01-02 04:26:28
推荐回答(5个)
回答1:

程序基本需要重写。很明显的错误有几点吧:
1、变量类型用的long int。那么输入参数和求解的结果,只能是以整数形式储存。不知道这是不是lz的原本意图。
2、没有实现“键盘输入系数”的相关语句。如果lz不知道,建议百度下scanf的用法。
3、if ... else ... 的语法错误。c语言中,格式应该是:
if ( 条件1 ) {
//语句
}else if ( 条件2 ) {
//语句
}else {
//语句
}
注意条件外面的括号不可少!lz看下你的代码,if条件最外层没有括号。
4. pow(x,0.5)是可以实现开方的运算。但是pow中间两个参数之间有个逗号,lz你别少了啊。。另外,使用sqrt函数是不是更好?

回答2:

#include
#include
int main()
{
//long int x,a,b,c;
int a,b,c;//int型就可以,没有long int型
double x1,x2;//有两个解,就设置x1和x2,并且设置为double型,因为解多数为浮点型
scanf("%d %d %d",&a,&b,&c);//输入a,b,c的值
if(b*b-4*a*c>0)
{
  x1=(-b+pow(((b*b)-(4*a*c)),0.5))/(2*a);//pow函数两个参数之间用逗号隔开
x2=(-b-pow(((b*b)-(4*a*c)),0.5))/(2*a);
  printf("%lf\t%lf\n",x1,x2);
}
else if((b*b)-(4*a*c)==0)//是else if而不是if else
{
  x1=(-b+pow(((b*b)-(4*a*c)),0.5))/(2*a);
x2=x1;
  printf("%lf\t%lf\n",x1,x2);
}
else 
   printf("此一元二次方程无解"); 
return 0;
}

回答3:

一元二次方程正常有2个解,而你只定义了一个x,最好定义2个。
((b*b)-(4*a*c))<0你都能有解,这不是编程的问题,这是你概念理解错了
if()
{}
else if()
{}
else
if else是什么?这是你c语言语法的错误

回答4:

  1. abc没有从键盘获取

  2. 语法错误

  3. 输出,没有解的个数输出来

回答5:

x=(-b+pow(((b*b)-(4*a*c))0.5))改为x=(-b+pow(((b*b)-(4*a*c)),0.5))

pow(a,b)中间缺了个‘,’