你的第一个判断if(a=0)不对,应该是if(a==0),这样就行了,我刚才试了,没问题了,有什么不懂的我们可以交流,我其实也是个初学者,我在学习单片机呢....呵呵
#includestdio.h
#includemath.h
void main()
{
float a,b,c;
printf("please input:a,b,c");
scanf("%f%f%f",a,b,c);
k1=b*b;
printf("the input is error\n");
return;
}
else
给点}赞助!
设计思路如下:
①.、问题描述:
给定一个二元一次方程组,形如:
a * x + b * y = c;
d * x + e * y = f;
x,y代表未知数,a, b, c, d, e, f为参数.
求解x,y.
二元一次方程组是由两个含有两个未知数的方程组成的,要求解,就要把二元转化为一元.由二元一次方程组的解法思想知,要把二元转化为一元.
实现的功能代码如下:
扩展资料:
C语言解求二元一次方程:(顺序消元法)
"消元"是解二元一次方程的基本思路.所谓"消元"就是减少未知数的个数,使多元方程最终转化为一元方程再解出未知数.这种将方程组中的未知数个数由多化少,逐一解决的想法,叫做消元思想.
实现代码如下:
因为在求解过程中只有数之间的运算,而没有整个式子的运算,所以呢这种方法被广泛地用于计算机中.
#include?stdio.h
#include?stdlib.h
int?main(int?argc,?char?const?*argv[])
int?a,?b;?
printf("请输入一次方程的系数a和b(以逗号隔开):");
scanf("%d,%d",?a,?b);
if?(a?==?0);?//分母为0,无解
char?ch?=?b?0?'-'?:?'+';
printf("%dx%c%d=0的根是:x=",?a,?ch,?abs(b));?
printf("%d\n",?-b?/?a);
return?0;
首先叫法错误,是一元二次方程求根,而不是二元一次方程求根.
其次,判别式小于0时,只能说没有实数解,不能说无解.
最主要的,if后面只能有一个语句,如果需要多个,必须用花括号括起来,组成复合语句.你就是犯了这个错误.把你的程序修改如下,应该可以了.你试试看.
#include stdio.h
#include math.h
main()
printf("请输入三个系数:\n");
if (q0)
if (q=0)
printf("方程实数解!\n");
假设的情况:
输入没有错误;
x 总是在前面,y 总是在后面;
不存在某个变量系数为 0 的情况(即总是二元方程);
不考虑小数,其实考虑小数也简单,你可以自己思考如何实现.
首先,使用 scanf() 将回车之前的整个字符串扫描进来,放进 str 变量中;
之后,分别以 x y = 为界,找到它们分隔的三个字符串,即从 str 的第一位开始循环,当遇到 'x' 时,停止并将之前的所有字符存到 x 的系数字符串 xStr 中,再从 x 之后开始寻找,遇到 'y' 时将找到的 'x' 与 'y' 之间的字符存到 y 的系数字符串 yStr 中,再向后从 '=' 开始直到结束,存为结果字符串 sumStr.
这样,我们得到的三个字符串都具有相同的格式,一定可以通过某种方式将其转换为一个数字,使用同一个函数就可以做到.
对于某个字符串来说,它可能是以负号 '-' 开头,也可能以正号开头 '+',也可能没有符号,也可能为空,分别考虑:以负号开头的,将其作为负数,以正号开头或没有符号的,将其作为正数;为空的字符串将其视为 1.
截取符号之后,如果没有剩余字符了,将其视为 1,再与符号相乘,就是最终结果.
如果还有剩余,那么之后的字符都是纯数字了(不考虑小数),从字符串的最后一位往前开始循环,下标记为 i(从0开始一直到最前面的数字位数),每一位字符记为 ch,则 n=(int)(ch-'0') 就是当前字符所代表的数字,用 n*pow(10, i) 就得到了当前数字的实际值,把所有的乘积都加起来,就得到了总的系数的绝对值,再乘以符号,就得到了系数值.
以上就是土嘎嘎小编为大家整理的c语言二元一次函数求解相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!