鱼C论坛

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

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

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

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

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

x
本帖最后由 bin554385863 于 2019-5-24 03:10 编辑
/*定义一个含有30个偶数的数组并安顺每五个元素求一次平均值放到另一个数组中*/
#include <stdio.h>
#define N 30
void main()
{
    int arr[N], barr[N / 5];
    printf("原数组arr\n");
    for (size_t i = 0; i < N; i++)
    {
        arr[i] = 2 * i;
        printf("arr[%d] = %d\n", i, arr[i]);
    }
    printf("\n");
    printf("每五个元素算其平均值并放在数组Barr中\n");
    for (size_t j = 0; j < (N / 5); j++)
    {
        for (size_t i = 5 * j; i < 5 * (j + 1); i++)
        {
            barr[i] = (arr[i] + arr[i+1] + arr[i + 2] + arr[i + 3] + arr[i + 4])/5;
        }
        printf("barr[%d] = %3d   ", j, barr[j]);
    }
    printf("\n");
}
======================================================================
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
求平均数的时候不需要两个循环,一次循环就可以了。

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

        printf("barr[%d] = %d   ", j, barr[j]);
    }
    printf("\n");
    
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

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

        printf("barr[%d] = %d   ", j, barr[j]);
    }
    printf("\n");
    
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

修改的代码如下:

多谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-3 19:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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