作者在 2011-08-19 12:00:42 发布以下内容
/*
时间:2011年8月19日11:54:55
功能:输入一元二次方程的3个系数,判断解的个数,并求出解
目的:改善之前学过的一元二次方程代码,掌握do...while的用法
*/
# include <stdio.h>
# include <math.h>
int main(void)
{
double a,b,c;
double delta;
double x1,x2;
char ch;
do //do...while主要用于人机交互
{
printf("请输入一元二次方程的3个系数\n");
printf("a = ");
scanf("%lf", &a);
printf("b = ");
scanf("%lf", &b);
printf("c = ");
scanf("%lf", &c);
delta = b*b - 4*a*c;
if (delta > 0)
{
x1 = (-b + sqrt(delta)) / 2*a;
x2 = (-b - sqrt(delta)) / 2*a;
printf("此一元二次方程有两个实数解 x1 = %lf, x2 = %lf\n", x1,x2);
}
else if (0 == delta)
{
x1 = (-b + sqrt(delta)) / 2*a;
printf("此一元二次方程有一个实数解 x = %lf\n", x1);
}
else
printf("此一元二次方程无实数解\n");
printf("是否继续(Y/N)?\n");
scanf(" %c", &ch); // %c前面必需加空格,参见《c prime plus》的空白符问题
} while ('y'==ch || 'Y'==ch); //要考虑到消除键盘输入的大小写区别
return 0;
}
/*
在VC++6.0中的输出结果为:
————————————
请输入一元二次方程的3个系数
a = 1
b = 2
c = 1
此一元二次方程有一个实数解 x = -1.000000
是否继续(Y/N)?
y
请输入一元二次方程的3个系数
a = 1
b = 5
c = 6
此一元二次方程有两个实数解 x1 = -2.000000, x2 = -3.000000
是否继续(Y/N)?
y
请输入一元二次方程的3个系数
a = 1
b = 2
c = 3
此一元二次方程无实数解
是否继续(Y/N)?
n
Press any key to continue
————————————
*/
时间:2011年8月19日11:54:55
功能:输入一元二次方程的3个系数,判断解的个数,并求出解
目的:改善之前学过的一元二次方程代码,掌握do...while的用法
*/
# include <stdio.h>
# include <math.h>
int main(void)
{
double a,b,c;
double delta;
double x1,x2;
char ch;
do //do...while主要用于人机交互
{
printf("请输入一元二次方程的3个系数\n");
printf("a = ");
scanf("%lf", &a);
printf("b = ");
scanf("%lf", &b);
printf("c = ");
scanf("%lf", &c);
delta = b*b - 4*a*c;
if (delta > 0)
{
x1 = (-b + sqrt(delta)) / 2*a;
x2 = (-b - sqrt(delta)) / 2*a;
printf("此一元二次方程有两个实数解 x1 = %lf, x2 = %lf\n", x1,x2);
}
else if (0 == delta)
{
x1 = (-b + sqrt(delta)) / 2*a;
printf("此一元二次方程有一个实数解 x = %lf\n", x1);
}
else
printf("此一元二次方程无实数解\n");
printf("是否继续(Y/N)?\n");
scanf(" %c", &ch); // %c前面必需加空格,参见《c prime plus》的空白符问题
} while ('y'==ch || 'Y'==ch); //要考虑到消除键盘输入的大小写区别
return 0;
}
/*
在VC++6.0中的输出结果为:
————————————
请输入一元二次方程的3个系数
a = 1
b = 2
c = 1
此一元二次方程有一个实数解 x = -1.000000
是否继续(Y/N)?
y
请输入一元二次方程的3个系数
a = 1
b = 5
c = 6
此一元二次方程有两个实数解 x1 = -2.000000, x2 = -3.000000
是否继续(Y/N)?
y
请输入一元二次方程的3个系数
a = 1
b = 2
c = 3
此一元二次方程无实数解
是否继续(Y/N)?
n
Press any key to continue
————————————
*/
再修改一下,增加对a=0时的判断
/*
时间:2011年8月22日9:15:14
功能:输入一元二次方程的3个系数,判断解的个数,并求出解
目的:改善之前学过的一元二次方程代码,掌握do...while的用法
附注:受好友laznrbfe指点,增加对a=0时的判断
*/
# include <stdio.h>
# include <math.h>
int main(void)
{
double a,b,c;
double delta;
double x1,x2;
char ch;
do //do...while主要用于人机交互
{
printf("请输入一元二次方程的3个系数\n");
printf("a = ");
scanf("%lf", &a);
printf("b = ");
scanf("%lf", &b);
printf("c = ");
scanf("%lf", &c);
if(a != 0)
{
delta = b*b - 4*a*c;
if (delta > 0)
{
x1 = (-b + sqrt(delta)) / 2*a;
x2 = (-b - sqrt(delta)) / 2*a;
printf("此一元二次方程有两个实数解 x1 = %lf, x2 = %lf\n", x1,x2);
}
else if (0 == delta)
{
x1 = (-b + sqrt(delta)) / 2*a;
printf("此一元二次方程有一个实数解 x = %lf\n", x1);
}
else
printf("此一元二次方程无实数解\n");
}
else
{
x1 = -c / b;
printf("这是一元一次方程,解为x = %lf\n",x1);
}
printf("是否继续(Y/N)?\n");
scanf(" %c", &ch); // %c前面必需加空格,参见《c prime plus》的空白符问题
} while ('y'==ch || 'Y'==ch); //要考虑到消除键盘输入的大小写区别
return 0;
}
/*
在VC++6.0中的输出结果为:
————————————
请输入一元二次方程的3个系数
a = 1
b = 2
c = 1
此一元二次方程有一个实数解 x = -1.000000
是否继续(Y/N)?
y
请输入一元二次方程的3个系数
a = 1
b = 2
c = 3
此一元二次方程无实数解
是否继续(Y/N)?
y
请输入一元二次方程的3个系数
a = 1
b = 5
c = 6
此一元二次方程有两个实数解 x1 = -2.000000, x2 = -3.000000
是否继续(Y/N)?
y
请输入一元二次方程的3个系数
a = 0
b = 2
c = 5
这是一元一次方程,解为x = -2.500000
是否继续(Y/N)?
n
Press any key to continue
————————————
*/
时间:2011年8月22日9:15:14
功能:输入一元二次方程的3个系数,判断解的个数,并求出解
目的:改善之前学过的一元二次方程代码,掌握do...while的用法
附注:受好友laznrbfe指点,增加对a=0时的判断
*/
# include <stdio.h>
# include <math.h>
int main(void)
{
double a,b,c;
double delta;
double x1,x2;
char ch;
do //do...while主要用于人机交互
{
printf("请输入一元二次方程的3个系数\n");
printf("a = ");
scanf("%lf", &a);
printf("b = ");
scanf("%lf", &b);
printf("c = ");
scanf("%lf", &c);
if(a != 0)
{
delta = b*b - 4*a*c;
if (delta > 0)
{
x1 = (-b + sqrt(delta)) / 2*a;
x2 = (-b - sqrt(delta)) / 2*a;
printf("此一元二次方程有两个实数解 x1 = %lf, x2 = %lf\n", x1,x2);
}
else if (0 == delta)
{
x1 = (-b + sqrt(delta)) / 2*a;
printf("此一元二次方程有一个实数解 x = %lf\n", x1);
}
else
printf("此一元二次方程无实数解\n");
}
else
{
x1 = -c / b;
printf("这是一元一次方程,解为x = %lf\n",x1);
}
printf("是否继续(Y/N)?\n");
scanf(" %c", &ch); // %c前面必需加空格,参见《c prime plus》的空白符问题
} while ('y'==ch || 'Y'==ch); //要考虑到消除键盘输入的大小写区别
return 0;
}
/*
在VC++6.0中的输出结果为:
————————————
请输入一元二次方程的3个系数
a = 1
b = 2
c = 1
此一元二次方程有一个实数解 x = -1.000000
是否继续(Y/N)?
y
请输入一元二次方程的3个系数
a = 1
b = 2
c = 3
此一元二次方程无实数解
是否继续(Y/N)?
y
请输入一元二次方程的3个系数
a = 1
b = 5
c = 6
此一元二次方程有两个实数解 x1 = -2.000000, x2 = -3.000000
是否继续(Y/N)?
y
请输入一元二次方程的3个系数
a = 0
b = 2
c = 5
这是一元一次方程,解为x = -2.500000
是否继续(Y/N)?
n
Press any key to continue
————————————
*/