一元二次方程解法
一元二次方程求解有很几种方法是我们在做题中最常使用的;包括:
1、直接开平方法;
2、配方法;
3、公式法;
4、因式分解法。
如果让计算机去求解,我想公式法应该是直观有效的。
使用公式需要△ = b^2 - 4* a *c进行判别,这里面涉及到开方与乘方的问题,还涉及到虚数的问题。
上网得知,库函数sqrt与pow分别涉及到开方与乘方,虚数的问题没有解决,自己手动变相反数+i,技术菜无奈(=.=)。
如下:
突发奇想,给pow函数的变量y传0.5不就相当于开方嘛!
实验证明确实可行!
题目代码如下
#include <stdio.h>
#include <math.h>
int main()
{
float a,b,x1,x2,c,e;
while(scanf("%f%f%f",&a,&b,&c)!=EOF)
{
if(a==0)
{
printf("Not quadratic equation\n");
}
else
{
e=pow(b,2)-4*a*c;
if(e==0)
{
printf("x1=x2=%.2f\n",-b/(2*a));
}
else if(e>0)
{
x2=(-b+sqrt(e))/(2*a);
x1=(-b-sqrt(e))/(2*a);
printf("x1=%.2f;x2=%.2f\n",x1,x2);
}
else if(e<0)
{
float i;
x2=sqrt(-e)/(2*a);
x1=sqrt(-e)/(2*a);
i=-b/(2*a);
printf("x1=%.2f-%.2fi;x2=%.2f+%.2fi\n",i,x1,i,x2);
}
}
}
return 0;
}
几道考察循环的题
#include <stdio.h>
int main()
{
int a,b,c;
while(scanf("%d",&a)!=EOF)
{
b=a;
c=a;
while(a>0)
{
b=c;
while(b>0)
{
printf("* ");
b-=1;
}
printf("\n");
a-=1;
}
}
return 0;
}
#include <stdio.h>
int main()
{
int a,i,j;
while(scanf("%d",&a)!=EOF)
{
for(i=1;i<=a;i++)
{
for(j=1;j<=i;j++)
{
printf("* ");
}
printf("\n");
}
}
return 0;
}
#include <stdio.h>
int main()
{
int a,i,j;
while(scanf("%d",&a)!=EOF)
{
for(i=1;i<=a;i++)
{
for(j=0;j<=a-i;j++)
{
printf("* ");
}
printf("\n");
}
}
return 0;
}
#include <stdio.h>
int main()
{
int a,i,j,k;
while(scanf("%d",&a)!=EOF)
{
for(i=1;i<=a;i++)
{
for(k=0;k<a-i;k++)
{
printf(" ");
}
for(j=1;j<=i;j++)
{
printf("* ");
}
printf("\n");
}
}
return 0;
}
#include <stdio.h>
int main()
{
int a,i,j,k;
while(scanf("%d",&a)!=EOF)
{
for(i=1;i<=a;i++)
{
for(k=0;k<a-i;k++)
{
printf(" ");
}
for(j=1;j<=i;j++)
{
printf("* ");
}
printf("\n");
}
}
return 0;
}
#include <stdio.h>
int main()
{
int a,i,j,k;
while(scanf("%d",&a)!=EOF)
{
for(i=1;i<=a;i++)
{
for(k=1;k<i;k++)
{
printf(" ");
}
for(j=0;j<=a-i;j++)
{
printf("* ");
}
printf("\n");
}
}
return 0;
}
除了第一个用了while循环,之后用的都是for循环,还是for循环好控制啊!