| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3392 人关注过本帖
标题:谁给我解析一下下面的代码for(j=0,sum[i]=0;j<=i;j++)中为什么j<=i 而不是j ...
只看楼主 加入收藏
shenggeyanwu
Rank: 2
等 级:论坛游民
帖 子:26
专家分:11
注 册:2017-1-25
结帖率:83.33%
收藏
已结贴  问题点数:20 回复次数:8 
谁给我解析一下下面的代码for(j=0,sum[i]=0;j<=i;j++)中为什么j<=i 而不是j<SIZE呢?
/*编写一个程序?创建两个8元素的double数组?使用一个循环来让用户键入第一个
数组的8个元素的值。程序把第二个数组的元素设置为第一个数组元素的累积和。例如?第
二个数组的第4个元素应该等于第一个数组的前4个元素的和?第二个数组的第5个元素应
该等于第一个数组的前5个元素的和?使用嵌套循环可以做到这一点。不过利用第二个数组
的第5个元素等于第二个数组的第4个元素加上第一个数组的第5个元素这一事实?可以避
免嵌套而只使用单个循环来完成这个任务?。最后?使用一个循环来显示两个数组中的内容?
第一个数组在一行中显示?而第二个数组中的每个元素在第一个数组的对应元素之下进行显
示。*/

#include<stdio.h>
#include<stdlib.h>
#define SIZE 8
int main(void)
{
    double num[SIZE],sum[SIZE];
    int i,j;
    printf("Ente %d numbers:",SIZE);
    for(i=0;i<SIZE;i++)
    {
        scanf("%lf",&num[i]);      //输入数据给数组num的元素赋值
        for(j=0,sum[i]=0;j<=i;j++) //为什么j<=i ?
            sum[i] += num[j];      //给数组sum的所有元素赋值
    }
    for(i=0;i<SIZE;i++)
        printf("%-8.2lf",num[i]); //打印数组num的所有元素
    printf("\n");
    for(i=0;i<SIZE;i++)
        printf("%-8.2lf",sum[i]); //打印数组sum的所有元素
    printf("\n");
    system("pause");
    return(0);
}

[此贴子已经被作者于2017-2-2 18:28编辑过]

搜索更多相关主题的帖子: double 用户 元素 
2017-02-02 18:24
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:4 
第二个数组中的元素等于第一个数组元素下标条件累加和。
程序代码:
#include<stdio.h>
#include<stdlib.h>
#define SIZE 8
int main(void) 
{
    double num[SIZE],sum[SIZE]; 
    int i,j; 
    printf("Ente %d numbers:",SIZE); 
    for(i=0;i<SIZE;i++) 
    { 
        scanf("%lf",&num[i]);      //输入数据给数组num的元素赋值
        sum[i] = num[i];
        if(i >= 1)
        {
            sum[i] = sum[i-1]+num[i];   //利用第二个数组的第5个元素等于第二个数组的第4个元素加上第一个数组的第5个元素这一事实
        }
    } 
    for(i=0;i<SIZE;i++) 
        printf("%-8.2lf",num[i]); //打印数组num的所有元素
    printf("\n"); 
    for(i=0;i<SIZE;i++) 
        printf("%-8.2lf",sum[i]); //打印数组sum的所有元素
    printf("\n");
    system("pause");
    return(0); 
} 

早知做人那么辛苦!  当初不应该下凡
2017-02-02 19:21
qdcs
Rank: 6Rank: 6
等 级:侠之大者
威 望:5
帖 子:171
专家分:458
注 册:2016-12-22
收藏
得分:16 
回复 楼主 shenggeyanwu
size是8是不变的,i是逐渐变大的;

我是硬件工程师
2017-02-02 21:40
shenggeyanwu
Rank: 2
等 级:论坛游民
帖 子:26
专家分:11
注 册:2017-1-25
收藏
得分:0 
回复 2楼 炎天
我是个初学者,菜鸟的,看不明白啊。
2017-02-03 11:26
shenggeyanwu
Rank: 2
等 级:论坛游民
帖 子:26
专家分:11
注 册:2017-1-25
收藏
得分:0 
回复 3楼 qdcs
云里雾里,不太明白。
2017-02-03 11:27
qdcs
Rank: 6Rank: 6
等 级:侠之大者
威 望:5
帖 子:171
专家分:458
注 册:2016-12-22
收藏
得分:0 
#define SIZE 8 是定义size为8即遇到size就是8的意思。
i在第一个for循环中从0变大到7共循环8次。
第二个for循环 for(j=0,sum[i]=0;j<=i;j++) j从0变大到i-1,依次是
0
0,1
0,1,2
0,1,2,3
0,1,2,3,4
..........5
0..........6
//为什么j<=i ? 因为for(j=0,sum[i]=0;j<=i;j++)第一次循环时i为0,j=0,会让循环退出。第二次循环时i为1,j为0. 第三次循环i为2,j为0,和j为1各自循环使sum1递加
依次直到最后i为7,j分别为0到6各自循环共7次


我是硬件工程师
2017-02-04 14:05
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:0 
回复 4楼 shenggeyanwu
哪里看不明白? 还是得自己多琢磨

早知做人那么辛苦!  当初不应该下凡
2017-02-04 14:20
shenggeyanwu
Rank: 2
等 级:论坛游民
帖 子:26
专家分:11
注 册:2017-1-25
收藏
得分:0 
回复 6楼 qdcs
谢谢!你解释很耐心,很详细,对于像我这样的菜鸟有帮助。
2017-02-05 22:51
shenggeyanwu
Rank: 2
等 级:论坛游民
帖 子:26
专家分:11
注 册:2017-1-25
收藏
得分:0 
回复 2楼 炎天
你是专家级的高手,有很高的理论知识,解释的很精练,但是像我这样的菜鸟跟你差距太大,看不懂高深的理论,希望能通俗一点。谢谢!
2017-02-05 22:59
快速回复:谁给我解析一下下面的代码for(j=0,sum[i]=0;j<=i;j++)中为什么j<=i 而 ...
数据加载中...
 
   



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

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