鱼C论坛

 找回密码
 立即注册
查看: 2266|回复: 2

[已解决]定义一个含有30个偶数的数组并安顺每五个元素求一次平均值放到另一个数组中

[复制链接]
发表于 2019-5-24 01:03:12 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 bin554385863 于 2019-5-24 03:10 编辑
  1. /*定义一个含有30个偶数的数组并安顺每五个元素求一次平均值放到另一个数组中*/
  2. #include <stdio.h>
  3. #define N 30
  4. void main()
  5. {
  6.     int arr[N], barr[N / 5];
  7.     printf("原数组arr\n");
  8.     for (size_t i = 0; i < N; i++)
  9.     {
  10.         arr[i] = 2 * i;
  11.         printf("arr[%d] = %d\n", i, arr[i]);
  12.     }
  13.     printf("\n");
  14.     printf("每五个元素算其平均值并放在数组Barr中\n");
  15.     for (size_t j = 0; j < (N / 5); j++)
  16.     {
  17.         for (size_t i = 5 * j; i < 5 * (j + 1); i++)
  18.         {
  19.             barr[i] = (arr[i] + arr[i+1] + arr[i + 2] + arr[i + 3] + arr[i + 4])/5;
  20.         }
  21.         printf("barr[%d] = %3d   ", j, barr[j]);
  22.     }
  23.     printf("\n");
  24. }
复制代码

======================================================================
E:\Administrator\Documents\My C>cmd /C "c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.23.1\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-sviflrg3.3no --stdout=Microsoft-MIEngine-Out-jjmld3tj.toa --stderr=Microsoft-MIEngine-Error-glz3n5lo.s1p --pid=Microsoft-MIEngine-Pid-ohdis3en.u0s --dbgExe=E:\MinGW\bin\gdb.exe --interpreter=mi "
原数组arr
arr[0] = 0
arr[1] = 2
arr[2] = 4
arr[3] = 6
arr[4] = 8
arr[5] = 10
arr[6] = 12
arr[7] = 14
arr[8] = 16
arr[9] = 18
arr[10] = 20
arr[11] = 22
arr[12] = 24
arr[13] = 26
arr[14] = 28
arr[15] = 30
arr[16] = 32
arr[17] = 34
arr[18] = 36
arr[19] = 38
arr[20] = 40
arr[21] = 42
arr[22] = 44
arr[23] = 46
arr[24] = 48
arr[25] = 50
arr[26] = 52
arr[27] = 54
arr[28] = 56
arr[29] = 58

每五个元素算其平均值并放在数组Barr中
barr[0] =  4   barr[1] =  6   barr[2] =  8   barr[3] =  10   barr[4] =  12   barr[5] =  14

E:\Administrator\Documents\My C>
=============================================================================
很奇怪,为什么最后的数组不正确,
最佳答案
2019-5-24 08:32:52
求平均数的时候不需要两个循环,一次循环就可以了。

修改的代码如下:
  1. #include <stdio.h>
  2. #define N 30
  3. int main()
  4. {
  5.     int arr[N], barr[N / 5];
  6.     printf("原数组arr\n");
  7.     for (size_t i = 0; i < N; i++)
  8.     {
  9.         arr[i] = 2 * i;
  10.         printf("arr[%d] = %d\n", i, arr[i]);
  11.     }
  12.     printf("\n");
  13.     printf("每五个元素算其平均值并放在数组Barr中\n");
  14.     for (size_t j = 0; j < (N / 5); j++)
  15.     {
  16.         // 在这里不需要第二个循环了
  17.         barr[j] = (arr[j*5] + arr[j*5+1] + arr[j*5 + 2] + arr[j*5 + 3] + arr[j*5 + 4])/5;

  18.         printf("barr[%d] = %d   ", j, barr[j]);
  19.     }
  20.     printf("\n");
  21.    
  22.     return 0;
  23. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-5-24 08:32:52 | 显示全部楼层    本楼为最佳答案   
求平均数的时候不需要两个循环,一次循环就可以了。

修改的代码如下:
  1. #include <stdio.h>
  2. #define N 30
  3. int main()
  4. {
  5.     int arr[N], barr[N / 5];
  6.     printf("原数组arr\n");
  7.     for (size_t i = 0; i < N; i++)
  8.     {
  9.         arr[i] = 2 * i;
  10.         printf("arr[%d] = %d\n", i, arr[i]);
  11.     }
  12.     printf("\n");
  13.     printf("每五个元素算其平均值并放在数组Barr中\n");
  14.     for (size_t j = 0; j < (N / 5); j++)
  15.     {
  16.         // 在这里不需要第二个循环了
  17.         barr[j] = (arr[j*5] + arr[j*5+1] + arr[j*5 + 2] + arr[j*5 + 3] + arr[j*5 + 4])/5;

  18.         printf("barr[%d] = %d   ", j, barr[j]);
  19.     }
  20.     printf("\n");
  21.    
  22.     return 0;
  23. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-24 13:00:18 | 显示全部楼层
shuofxz 发表于 2019-5-24 08:32
求平均数的时候不需要两个循环,一次循环就可以了。

修改的代码如下:

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-1 16:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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