鱼C论坛

 找回密码
 立即注册
查看: 3797|回复: 12

[已解决]敲代码

[复制链接]
发表于 2022-10-29 19:12:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
二元一次方程的求解的代码是什么
就是应该怎么利用c语言求解二元一次方程
最佳答案
2022-11-4 20:16:02
  1. #include<stdio.h>
  2. #include<math.h>
  3. int main(){
  4.   int a,b,c;
  5.   printf("请输入:");
  6.   scanf("%d%d%d",&a,&b,&c);
  7.   double delta,x1,x2,m,n;
  8.   delta=b*b-4*a*c;
  9.   if(delta>0){
  10.     x1=(-b+sqrt(delta))/(2*a);
  11.     x2=(-b-sqrt(delta))/(2*a);
  12.     printf("原方程的的解为x1=%f,x2=%f\n",x1,x2);
  13.   }
  14.    if(delta==0){
  15.     x1=(-b)/(2*a);
  16.     x2=x1;
  17.     printf("原方程的的解为x1=%f,x2=%f\n",x1,x2);
  18.   }
  19.    
  20. if(delta<0){
  21.     m=(-b)/(2*a);
  22.     n=sqrt(-delta)/(2*a);
  23.     printf("原方程的的解为:x1=%8.4f+%8.4fi ; x2=%8.4f-%8.4fi\n ",m,n,m,n);
  24.   }
  25.    
  26.   return 0;
  27. }
复制代码

(以上内容来自cnblogs,原文链接https://www.cnblogs.com/cylf/p/10595121.html
这个比上面的都最优吧,行号很少
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-10-29 19:15:36 | 显示全部楼层
  1. #include<stdio.h>
  2. #include<math.h>
  3. #include<stdlib.h>
  4. void solution(double a,double b,double c,double *l,double *p,double *q);
  5. int main()
  6. {
  7.         double a,b,c,p,q,l;
  8.         printf("请输入二元一次方程的系数a,b,c:\n");
  9.         do
  10.         {
  11.                 scanf("%lf %lf %lf",&a,&b,&c);
  12.         }
  13.         while((a==0)|| (b*b-4*a*c)<0);
  14.         solution(a,b,c,&l,&p,&q);
  15.         if(l==1)
  16.                 printf("方程的解为:%.2f%.2f",p,q);
  17.         else printf("方程的只有一个解为:%.2f",p);
  18. }
  19. void solution(double a,double b,double c,double *l,double *p,double *q)
  20. {
  21.         double flag = b*b-4*a*c;
  22.         if(flag == 0 )
  23.         {
  24.                 *p= -b/(2*a);
  25.                 *q= *p;
  26.                 *l= 0;
  27.         }
  28.         else
  29.         {
  30.                 *p= (-b/(2*a))/(4*a*c);
  31.                 *q= *p;
  32.                 *l = 1;
  33.         }
  34.        
  35. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-29 19:44:10 | 显示全部楼层
  1. #include <stdio.h>

  2. typedef struct Equation {
  3.         int a, b, c;
  4. }Equation;

  5. typedef struct Pair {
  6.         float x, y;
  7. }Pair;

  8. /*
  9. | a b |
  10. | c d |
  11. */
  12. int delta(int a, int b, int c, int d) {
  13.         return a * d - c * b;
  14. }

  15. Pair solution(Equation E1, Equation E2) {
  16.         float x = delta(E1.c, E1.b, E2.c, E2.b) / delta(E1.a, E1.b, E2.a, E2.b);
  17.         float y = delta(E1.a, E1.c, E2.a, E2.c) / delta(E1.a, E1.b, E2.a, E2.b);
  18.         Pair pair = { x, y };
  19.         return pair;
  20. }

  21. int main(void) {
  22.         Equation
  23.                 E1 = { 1, -1, 5 }, // x - y = 5
  24.                 E2 = { 2, 1, 4 }; // 2x + y = 4

  25.         Pair ans = solution(E1, E2); // x = 3, y = -2

  26.         printf("x = %.2f, y = %.2f\n", ans.x, ans.y);
  27.         return 0;
  28. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-30 08:08:04 | 显示全部楼层

有没有简单一点的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-30 08:08:42 | 显示全部楼层

有没有简单一点的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-30 08:14:39 | 显示全部楼层
0unique0 发表于 2022-10-30 08:08
有没有简单一点的

我的方法应该蛮简单的了,你可以试试从图片中理解我的代码:
解法.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-4 20:16:02 | 显示全部楼层    本楼为最佳答案   
  1. #include<stdio.h>
  2. #include<math.h>
  3. int main(){
  4.   int a,b,c;
  5.   printf("请输入:");
  6.   scanf("%d%d%d",&a,&b,&c);
  7.   double delta,x1,x2,m,n;
  8.   delta=b*b-4*a*c;
  9.   if(delta>0){
  10.     x1=(-b+sqrt(delta))/(2*a);
  11.     x2=(-b-sqrt(delta))/(2*a);
  12.     printf("原方程的的解为x1=%f,x2=%f\n",x1,x2);
  13.   }
  14.    if(delta==0){
  15.     x1=(-b)/(2*a);
  16.     x2=x1;
  17.     printf("原方程的的解为x1=%f,x2=%f\n",x1,x2);
  18.   }
  19.    
  20. if(delta<0){
  21.     m=(-b)/(2*a);
  22.     n=sqrt(-delta)/(2*a);
  23.     printf("原方程的的解为:x1=%8.4f+%8.4fi ; x2=%8.4f-%8.4fi\n ",m,n,m,n);
  24.   }
  25.    
  26.   return 0;
  27. }
复制代码

(以上内容来自cnblogs,原文链接https://www.cnblogs.com/cylf/p/10595121.html
这个比上面的都最优吧,行号很少
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-4 20:20:51 | 显示全部楼层
高山 发表于 2022-11-4 20:16
(以上内容来自cnblogs,原文链接https://www.cnblogs.com/cylf/p/10595121.html)
这个比上面的都最优 ...

你认为的最优就是行数最少吗?
来,看看这个代码怎么样?只有3行
是不是最优?是吧?

  1. sh-5.1$ cat main.c
  2. #include<stdio.h>
  3. #include<math.h>
  4. 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; }
  5. sh-5.1$ wc main.c
  6.   3  32 499 main.c
  7. sh-5.1$
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-4 20:21:56 | 显示全部楼层
人造人 发表于 2022-11-4 20:20
你认为的最优就是行数最少吗?
来,看看这个代码怎么样?只有3行
是不是最优?是吧?

你不要放大招啊……
我只是想赚点最佳答案

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
人造人 + 5 + 5 + 3 鱼C有你更精彩^_^

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-4 20:47:01 | 显示全部楼层
高山 发表于 2022-11-4 20:21
你不要放大招啊……
我只是想赚点最佳答案

C的预处理器指令不能放在一行
手动声明用到的东西,然后
一行!
^_^

  1. 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; }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-5 00:23:06 | 显示全部楼层
小甲鱼教我写的

  1. #include<stdio.h>
  2. #include<math.h>

  3. int main(void)
  4. {
  5.         double a,b,c,disc,x1,x2,p,q;   // x1 x2 是解
  6.         printf("input a,b,c\n");
  7.         scanf("%lf %lf %lf",&a,&b,&c);
  8.        
  9.         disc = b*b-4*a*c;   
  10.         p = -b/(2*a);
  11.         q = sqrt(disc)/(2*a);
  12.         x1 = p+q;
  13.         x2 = p-q;
  14.         printf("\nx1 = %5.2lf\nx2 = %5.2lf\n",x1,x2);
  15.        
  16.         return 0;
  17. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-5 20:33:18 | 显示全部楼层
高山 发表于 2022-11-4 20:21
你不要放大招啊……
我只是想赚点最佳答案

之前回复你的,审核通过了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-11 21:54:19 | 显示全部楼层

这是一元二次方程啊,这个书上教了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-23 13:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表