| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2663 人关注过本帖
标题:求大虾给我详细通俗地解释一下:下面嵌套循环的i为什么可以在不同数组和不同 ...
只看楼主 加入收藏
shenggeyanwu
Rank: 2
等 级:论坛游民
帖 子:26
专家分:11
注 册:2017-1-25
收藏
得分:0 
回复 9楼 wp231957
仅仅8个数我也能猜出来,逐个计算也能算出来,但是我想弄明白其中的原理,就是原代码中红色字体部分。
2017-02-14 16:09
shenggeyanwu
Rank: 2
等 级:论坛游民
帖 子:26
专家分:11
注 册:2017-1-25
收藏
得分:0 
回复 10楼 zbjzbj
那么,为什么sum[i]+=num[j];是正确的,而sum[j]+=num[i]就不行呢?
2017-02-14 16:16
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用shenggeyanwu在2017-2-14 16:09:45的发言:

仅仅8个数我也能猜出来,逐个计算也能算出来,但是我想弄明白其中的原理,就是原代码中红色字体部分。
如果是你 你如何实现这个功能呢

1
对角标为0--0 的进行累加
1 2
对角标为0--1 的进行累加
1 2 3
对角标为0--2 的进行累加
1 2 3 4
对角标为0--3 的进行累加

不明白你为什么纠结j i sum num  的变换   外循环执行外循环的功能  内循环执行内循环的功能
各司其职  你非要交换  搞不懂你在想神马

DO IT YOURSELF !
2017-02-14 17:23
shenggeyanwu
Rank: 2
等 级:论坛游民
帖 子:26
专家分:11
注 册:2017-1-25
收藏
得分:0 
回复 13楼 wp231957
内循环语句为sum[i] += num[j]; 的话运行结果就符合题目的要求(即第二数组的元素是第一数组元素的累积和,例如第二数组的第4个元素等于第一数组的前4个元素的总和),如果换成sum[j]+=num[i];的话运行结果就不符合题目的要求,我想明白其中的原理,求赐教。
2017-02-14 18:27
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
回复 14楼 shenggeyanwu
程序代码:
#include <stdio.h>

int main(void)
{
    int num[5]={1,2,3,4,5};
    int sum[5]={0};
    int i,j;
    for(i=0;i<5;i++)
    {
        for(j=0;j<=i;j++)
        {
            sum[i]+=num[j];
            printf("sum[%d] =%2d \n",i,sum[i]);
        }
        printf("第 %d 重外循环结束\n" ,i+1 );
    }
    return 0;
}

/*
sum[0] = 1
第 1 重外循环结束
sum[1] = 1
sum[1] = 3
第 2 重外循环结束
sum[2] = 1
sum[2] = 3
sum[2] = 6
第 3 重外循环结束
sum[3] = 1
sum[3] = 3
sum[3] = 6
sum[3] =10
第 4 重外循环结束
sum[4] = 1
sum[4] = 3
sum[4] = 6
sum[4] =10
sum[4] =15
第 5 重外循环结束
*/




#include <stdio.h>

int main(void)
{
    int num[5]={1,2,3,4,5};
    int sum[5]={0};
    int i,j;
    for(i=0;i<5;i++)
    {
        for(j=0;j<=i;j++)
        {
            sum[j]+=num[i];
            printf("sum[%d] =%2d \n",j,sum[j]);
        }
        printf("第 %d 重外循环结束\n" ,i+1 );
    }
    return 0;
}

/*
sum[0] = 1
第 1 重外循环结束
sum[0] = 3
sum[1] = 2
第 2 重外循环结束
sum[0] = 6
sum[1] = 5
sum[2] = 3
第 3 重外循环结束
sum[0] =10
sum[1] = 9
sum[2] = 7
sum[3] = 4
第 4 重外循环结束
sum[0] =15
sum[1] =14
sum[2] =12
sum[3] = 9
sum[4] = 5
第 5 重外循环结束
*/
自己看看先

DO IT YOURSELF !
2017-02-15 18:13
shenggeyanwu
Rank: 2
等 级:论坛游民
帖 子:26
专家分:11
注 册:2017-1-25
收藏
得分:0 
回复 15楼 wp231957
你真够耐心,我由衷地感谢您!希望以后得到您更多的指点,只是分数已经派发了,以后我会一直挺你。
2017-02-15 21:33
快速回复:求大虾给我详细通俗地解释一下:下面嵌套循环的i为什么可以在不同数组 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017655 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved