#问题求解与编程# 实验1 B 一元二次方程问题
2018-06-12 23:33
225 查看
4000
————————————————————————————————————————————————————以上为原题,这是自下学期开课以来我们进行的第一次真正的编程练习,一元二次方程,看上去不难,但是还是卡了我一下,问题主要还是处在对计算机判断求得的解是否为零的方式,没有真正明白。判断解为零的方式。此外,应当注意乘除法的精度问题以及int double类等最基本的运算求解方式。
此处为AC代码,没有什么思考的难度,此外,还是要注意输入输出。
阅读更多
一元二次方程问题
时间限制: 1000ms 内存限制: 128M
描述类似以下这种形式的方程称一元二次方程:a*x^2+b*x+c=0现在给出a,b,c,求出方程的两个解。
输入输入有多组数据,每组数据占一行,输入三个整数a,b,c。(-100<=a,b,c<=100,a不等于0)
输出每组输出占一行,对应每组输入输出结果,具体格式参见样例,x1为结果较大的数,x2为结果较小的数(如果两个解相同,需一同输出,参见样例),结果保留两位小数。
样例输入11 -1 -6样例输出1
x1=3.00, x2=-2.00样例输入2
1 -2 1样例输出2
x1=1.00, x2=1.00样例输入3
1 2 3样例输出3
No solution!样例输入4
-1 0 0样例输出4
x1=0.00, x2=0.00样例输入5
1 2 -4样例输出5
x1=1.24, x2=-3.24提示本题为多组数据,请参考以下输入格式:while (scanf("%d %d %d", &a, &b, &c) != EOF) { //...}可以通过sqrt函数来开根号,注意该函数的头文件是math.h。大家注意一下,x1=-0.00, x2=-0.00出现这样的情况是错误的,必须输出x1=0.00, x2=0.00还要判断根的大小!大家可以用这样的方法判断:if(fabs(x1)<1e-6) x1=0;if(fabs(x2)<1e-6) x2=0; (1e-6 就相当于 10^-6,fabs函数是绝对值函数,例如x=-3;fabs(x)的值为3),做乘除法的时候也得记得用 *1.0,例如5*1.0/3,大家注意一下精度问题!!!
————————————————————————————————————————————————————以上为原题,这是自下学期开课以来我们进行的第一次真正的编程练习,一元二次方程,看上去不难,但是还是卡了我一下,问题主要还是处在对计算机判断求得的解是否为零的方式,没有真正明白。判断解为零的方式。此外,应当注意乘除法的精度问题以及int double类等最基本的运算求解方式。
此处为AC代码,没有什么思考的难度,此外,还是要注意输入输出。
#include <stdio.h> #include <stdlib.h> #include <math.h> #define Delta b*b-4*a*c int main() { int a,b,c; double x1,x2,temp; while(scanf("%d %d %d", &a, &b, &c)!=EOF){ if (Delta >= 0) { x1=(-b+sqrt((double)Delta))/(2*(double)a); x2=(-b-sqrt((double)Delta))/(2*(double)a); if(x1<x2) {temp=x1;x1=x2;x2=temp;} if(fabs(x1)<1e-6) x1=0;if(fabs(x2)<1e-6) x2=0; printf("x1=%.2lf, x2=%.2lf\n", x1,x2); } else { printf("No solution!\n"); } } return 0; }此处为标程代码。
#include<cstdio> #include<cmath> float max(float a,float b){return a-b>1e-6?a:b;} float min(float a,float b){return a-b<1e-6?a:b;} int main() { //freopen("data.in","r",stdin); int a,b,c; while(scanf("%d%d%d",&a,&b,&c)!=EOF) { int t=b*b-4*a*c; if(t<0) { printf("No solution!\n"); continue; } float sq=sqrt(t*1.0); float x1=(-1.0*b+sq)*1.0/(2.0*a); float x2=(-1.0*b-sq)*1.0/(2.0*a); if(fabs(x1)<1e-6) x1=0; if(fabs(x2)<1e-6) x2=0; printf("x1=%.2f, x2=%.2f\n",max(x1,x2),min(x1,x2)); } return 0; }
阅读更多
相关文章推荐
- 编程小练~一元二次方程求解问题
- 求解Windows编程代码问题(未声明 怎么定义)
- C++实验——一元二次方程问题
- 用C求解一元二次方程的解,遇到的问题及解决办法 分类: C语言 2012-03-13 00:26 3094人阅读 评论(0) 收藏
- 一个一元二次方程求解编程引申的两个知识点(abs和fabs的区别以及浮点数比较相等)
- 【Machine Learning实验2】 Logistic Regression求解classification问题
- 用C求解一元二次方程的解,遇到的问题及解决办法
- R学习之统计实验(十)--新乒乓问题(R语言编程)-----数模
- Python实现Json结构对比的小工具兼谈编程求解问题
- 用C求解一元二次方程的解,遇到的问题及解决办法
- 数据结构实验报告三:教材3.10Josephus(约瑟夫环)问题、多项式乘法问题的求解
- 利用状态机编程思想求解统计英文句子中单词个数问题
- Python编程与问题求解
- Edit Distance问题在两种编程范式下的求解
- 用动态规划法求解生物信息学中DNA序列比对的问题 (交叉学科应用实验)
- svm理论与实验之6: 线性分类器的求解(续集) — 问题的转化
- 网络编程问题求解
- svm理论与实验之6: 线性分类器的求解(续集) — 问题的转化
- R学习之统计实验(五)--赶火车问题(R语言编程)-----数模
- R学习之统计实验(八)--统计次数概率问题(R语言编程)-----数模