鱼C论坛

 找回密码
 立即注册
查看: 407|回复: 1

这个函数在传参的时候传错了吗?

[复制链接]
发表于 2023-11-22 09:12:47 | 显示全部楼层 |阅读模式

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

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

x
我想传递的是一个数组,其中chucun和chucun1貌似错误
  1. int chucun0[2];

  2. int yuefen(int fenzi, int fenmu)//较简便的一个约分函数,功能并不完全
  3. {
  4.         double fenmujisuan;
  5.         int i;
  6.         int z;
  7.         int y;
  8.         int x;
  9.         int fenmuchucun[999];
  10.         int fenzichucun[999];
  11.         int jiancha[999];

  12.         fenmujisuan = fenmu / fenzi;
  13.         if (fenmujisuan == (int)fenmujisuan)
  14.         {
  15.                 fenzi = fenzi / fenmujisuan;
  16.                 fenmu = fenmu / fenmujisuan;
  17.                 goto end;
  18.         }
  19.         for (i = 1, z = 0;i <= (fenmu / 2); i++)//区分分母是否为质数
  20.         {
  21.                 if (fenmu % i == 0)
  22.                 {
  23.                         fenmuchucun[z] = i;
  24.                         z++;
  25.                 }
  26.         }
  27.         for (i = 1, z = 0;i <= (fenzi / 2); i++)//区分分子是否为质数
  28.         {
  29.                 if (fenzi % i == 0)
  30.                 {
  31.                         fenzichucun[z] = i;
  32.                         z++;
  33.                 }
  34.         }
  35.         for (i = 0, x = 0;i <= z;i++)
  36.         {
  37.                 for (y = 0;y <= z;y++)
  38.                 {
  39.                         if (fenmuchucun[i] == fenzichucun[y])
  40.                         {
  41.                                 jiancha[x] = fenmuchucun;
  42.                                 x++;
  43.                         }
  44.                 }
  45.         }
  46.         if(x==0)
  47.         {
  48.                 goto end;
  49.         }
  50.         fenzi = fenzi / jiancha[x - 1];
  51.         fenmu = fenmu / jiancha[x - 1];
  52. end:
  53.         //printf("%d/%d", fenzi, fenmu);
  54.         chucun0[0] = fenzi;
  55.         chucun0[1] = fenmu;
  56.         return(*chucun0);
  57. }

  58. int tongfen_jia(int fenzi1, int fenmu1, int fenzi2, int fenmu2)
  59. {
  60.         int fenzi3;
  61.         int fenzi4;
  62.         int fenzi;
  63.         int fenmu;
  64.         fenmu = fenmu1 * fenmu2;
  65.         fenzi3 = fenzi1 * fenmu2;
  66.         fenzi4 = fenzi2 * fenmu1;
  67.         fenzi = fenzi3 + fenzi4;
  68.         return(yuefen(fenzi, fenmu));
  69. }

  70. int tongfen_jian(int fenzi1, int fenmu1, int fenzi2, int fenmu2)
  71. {
  72.         int fenzi3;
  73.         int fenzi4;
  74.         int fenzi;
  75.         int fenmu;
  76.         fenmu = fenmu1 * fenmu2;
  77.         fenzi3 = fenzi1 * fenmu2;
  78.         fenzi4 = fenzi2 * fenmu1;
  79.         if (fenzi3 > fenzi4)
  80.         {
  81.                 fenzi = fenzi3 - fenzi4;
  82.         }
  83.         else
  84.         {
  85.                 fenzi = fenzi4 - fenzi3;
  86.         }
  87.         return(yuefen(fenzi, fenmu));
  88. }
  89. double jisuan(int* xuanze)
  90. {
  91.        
  92.         int yangbenkongjian = 1;
  93.         int switch1;
  94.         int fenzi[5] = { 0 };
  95.         int fenmu[5] = { 1,1,1,1,1 };
  96.         double gailv[5] = { 0 };
  97.         int chucun[2];
  98.         int chucun1[2];
  99. //************这里要做的是检测知道的数量然后对不同情况进行计算*//////////////////////////
  100.         //**********这里有想到一个更简单的办法,但是需要点技术力*///////
  101.         if ((xuanze[1] && xuanze[2] && xuanze[3]) == 1)
  102.         {
  103.                 printf("输入你知道的P(A)的概率的分子和分母,格式为分子/分母\n");
  104.                 scanf_s("%d/%d", &fenzi[0], &fenmu[0]);
  105.                 gailv[0] = (double)fenzi[0] / fenmu[0];
  106.                 printf("输入你知道的P(B)的概率的分子和分母,格式为分子/分母\n");
  107.                 scanf_s("%d/%d", &fenzi[1], &fenmu[1]);
  108.                 gailv[1] = (double)fenzi[1] / fenmu[1];
  109.                 printf("输入你知道的P(A-B)的概率的分子和分母,格式为分子/分母\n");
  110.                 scanf_s("%d/%d", &fenzi[2], &fenmu[2]);
  111.                 gailv[2] = (double)fenzi[2] / fenmu[2];
  112.                 gailv[4] = gailv[0] - gailv[2];//P(AB)
  113.                 gailv[3] = gailv[0] + gailv[1] - gailv[4];//P(A+B)
  114.                 printf("P(A)的概率为 %d/%d,小数化为 %0.3f %%\n", fenzi[0], fenmu[0], gailv[0]);
  115.                 printf("P(B)的概率为 %d/%d,小数化为 %0.3f %%\n", fenzi[1], fenmu[1], gailv[1]);
  116.                 printf("P(A-B)的概率为 %d/%d,小数化为 %0.3f %%\n", fenzi[2], fenmu[2], gailv[2]);
  117.                 *chucun = tongfen_jian(fenzi[0], fenmu[0], fenzi[2], fenmu[2]);
  118.                 printf("P(AB)的概率为 %d/%d ,小数化为 %0.3f %%\n", chucun[0], chucun[1], gailv[4]);//P(AB)
  119.                 *chucun = tongfen_jia(fenzi[0], fenmu[0], fenzi[1], fenmu[1]);
  120.                 *chucun1 = tongfen_jian(chucun[0], chucun[1], fenzi[4], fenmu[4]);
  121.                 printf("P(A+B)的概率为 %d/%d ,小数化为 %0.3f %%\n", chucun1[0], chucun1[1], gailv[3]);//P(A+B)
  122.         }
  123. }
  124. void main()
  125. {
  126.         int fenzi1 = 0;
  127.         int fenmu1 = 1;
  128.         int fenzi2 = 0;
  129.         int fenmu2 = 1;
  130.         int xuanze[5] = { -1 };
  131.         for (;;)
  132.         {
  133.                 int switch1 = 0;
  134.                 printf("输入1进行模拟实验,输入2进入概率计算。\n");
  135.                 scanf_s("%d", &switch1);
  136.                 if (switch1 == 1)
  137.                 {
  138.                         moni();
  139.                 }
  140.                 else
  141.                 {
  142.                         printf("选择已知的数据。\n");
  143.                         printf("1.P(A) 2.P(B) 3.P(A-B) 4.P(A+B) 5.P(AB)\n");
  144.                         printf("已知则输入1,未知则输入-1即可。例如:1,-1,1,-1,1\n");
  145.                         scanf_s("%d,%d,%d,%d,%d", &xuanze[0], &xuanze[1], &xuanze[2], &xuanze[3], &xuanze[4]);
  146.                         jisuan(xuanze);
  147.                 }
  148.         }
  149. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-22 09:12:52 | 显示全部楼层
这段代码存在一些问题。首先,数组 chucun 和 chucun1 没有被正确声明,应该使用 int chucun[2] 和 int chucun1[2] 来声明这两个数组。其次,在函数 jisuan 中, chucun 和 chucun1 被错误地赋值,应该使用 chucun[0] 和 chucun[1] 来赋值。

此外,代码中存在一些不规范的写法,比如使用 goto 语句和未初始化的变量。建议对代码进行重构和优化,以提高可读性和可维护性。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-21 23:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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