敲代码
二元一次方程的求解的代码是什么就是应该怎么利用c语言求解二元一次方程 #include<stdio.h>
#include<math.h>
#include<stdlib.h>
void solution(double a,double b,double c,double *l,double *p,double *q);
int main()
{
double a,b,c,p,q,l;
printf("请输入二元一次方程的系数a,b,c:\n");
do
{
scanf("%lf %lf %lf",&a,&b,&c);
}
while((a==0)|| (b*b-4*a*c)<0);
solution(a,b,c,&l,&p,&q);
if(l==1)
printf("方程的解为:%.2f%.2f",p,q);
else printf("方程的只有一个解为:%.2f",p);
}
void solution(double a,double b,double c,double *l,double *p,double *q)
{
double flag = b*b-4*a*c;
if(flag == 0 )
{
*p= -b/(2*a);
*q= *p;
*l= 0;
}
else
{
*p= (-b/(2*a))/(4*a*c);
*q= *p;
*l = 1;
}
}
#include <stdio.h>
typedef struct Equation {
int a, b, c;
}Equation;
typedef struct Pair {
float x, y;
}Pair;
/*
| a b |
| c d |
*/
int delta(int a, int b, int c, int d) {
return a * d - c * b;
}
Pair solution(Equation E1, Equation E2) {
float x = delta(E1.c, E1.b, E2.c, E2.b) / delta(E1.a, E1.b, E2.a, E2.b);
float y = delta(E1.a, E1.c, E2.a, E2.c) / delta(E1.a, E1.b, E2.a, E2.b);
Pair pair = { x, y };
return pair;
}
int main(void) {
Equation
E1 = { 1, -1, 5 }, // x - y = 5
E2 = { 2, 1, 4 }; // 2x + y = 4
Pair ans = solution(E1, E2); // x = 3, y = -2
printf("x = %.2f, y = %.2f\n", ans.x, ans.y);
return 0;
} 傻眼貓咪 发表于 2022-10-29 19:44
有没有简单一点的 wuheqian 发表于 2022-10-29 19:15
有没有简单一点的 0unique0 发表于 2022-10-30 08:08
有没有简单一点的
我的方法应该蛮简单的了,你可以试试从图片中理解我的代码:
#include<stdio.h>
#include<math.h>
int main(){
int a,b,c;
printf("请输入:");
scanf("%d%d%d",&a,&b,&c);
double delta,x1,x2,m,n;
delta=b*b-4*a*c;
if(delta>0){
x1=(-b+sqrt(delta))/(2*a);
x2=(-b-sqrt(delta))/(2*a);
printf("原方程的的解为x1=%f,x2=%f\n",x1,x2);
}
if(delta==0){
x1=(-b)/(2*a);
x2=x1;
printf("原方程的的解为x1=%f,x2=%f\n",x1,x2);
}
if(delta<0){
m=(-b)/(2*a);
n=sqrt(-delta)/(2*a);
printf("原方程的的解为:x1=%8.4f+%8.4fi ; x2=%8.4f-%8.4fi\n ",m,n,m,n);
}
return 0;
}
(以上内容来自cnblogs,原文链接https://www.cnblogs.com/cylf/p/10595121.html)
这个比上面的都最优吧,行号很少 高山 发表于 2022-11-4 20:16
(以上内容来自cnblogs,原文链接https://www.cnblogs.com/cylf/p/10595121.html)
这个比上面的都最优 ...
你认为的最优就是行数最少吗?
来,看看这个代码怎么样?只有3行
是不是最优?是吧?
sh-5.1$ cat main.c
#include<stdio.h>
#include<math.h>
int main(){ int a,b,c; printf("请输入:"); scanf("%d%d%d",&a,&b,&c); double delta,x1,x2,m,n; delta=b*b-4*a*c; if(delta>0){ x1=(-b+sqrt(delta))/(2*a); x2=(-b-sqrt(delta))/(2*a); printf("原方程的的解为x1=%f,x2=%f\n",x1,x2); } if(delta==0){ x1=(-b)/(2*a); x2=x1; printf("原方程的的解为x1=%f,x2=%f\n",x1,x2); } if(delta<0){ m=(-b)/(2*a); n=sqrt(-delta)/(2*a); printf("原方程的的解为:x1=%8.4f+%8.4fi ; x2=%8.4f-%8.4fi\n ",m,n,m,n); } return 0; }
sh-5.1$ wc main.c
332 499 main.c
sh-5.1$
人造人 发表于 2022-11-4 20:20
你认为的最优就是行数最少吗?
来,看看这个代码怎么样?只有3行
是不是最优?是吧?
你不要放大招啊……
我只是想赚点最佳答案 高山 发表于 2022-11-4 20:21
你不要放大招啊……
我只是想赚点最佳答案
C的预处理器指令不能放在一行
手动声明用到的东西,然后
一行!
^_^
int printf(const char *__format, ...); int scanf(const char *__format, ...); double sqrt(double __x); int main(){ int a,b,c; printf("请输入:"); scanf("%d%d%d",&a,&b,&c); double delta,x1,x2,m,n; delta=b*b-4*a*c; if(delta>0){ x1=(-b+sqrt(delta))/(2*a); x2=(-b-sqrt(delta))/(2*a); printf("原方程的的解为x1=%f,x2=%f\n",x1,x2); } if(delta==0){ x1=(-b)/(2*a); x2=x1; printf("原方程的的解为x1=%f,x2=%f\n",x1,x2); } if(delta<0){ m=(-b)/(2*a); n=sqrt(-delta)/(2*a); printf("原方程的的解为:x1=%8.4f+%8.4fi ; x2=%8.4f-%8.4fi\n ",m,n,m,n); } return 0; }
小甲鱼教我写的
#include<stdio.h>
#include<math.h>
int main(void)
{
double a,b,c,disc,x1,x2,p,q; // x1 x2 是解
printf("input a,b,c\n");
scanf("%lf %lf %lf",&a,&b,&c);
disc = b*b-4*a*c;
p = -b/(2*a);
q = sqrt(disc)/(2*a);
x1 = p+q;
x2 = p-q;
printf("\nx1 = %5.2lf\nx2 = %5.2lf\n",x1,x2);
return 0;
}
高山 发表于 2022-11-4 20:21
你不要放大招啊……
我只是想赚点最佳答案
之前回复你的,审核通过了
gogo57913 发表于 2022-11-5 00:23
小甲鱼教我写的
这是一元二次方程啊,这个书上教了
页:
[1]