这个程序的第二个for循环那该怎样分析

#include<stdio.h>

int main()
{ int i,j,a[10];
a[0]=1;
for(i=0;i<5;i++)
for(j=i;j<5;j++)
a[j]=a[i]+1;
for(i=1;i<5;i++)
printf("%4d",a[i]);
return 0;
}

解析见注释

int main()
{
    int i, j, a[10];
    a[0] = 1;
    for (i = 0; i < 5; i++)
        for (j = i; j < 5; j++)
        {
            //i=0,j从0开始,第一位a[0]=a[0]+1=1+1=2,后续4位都是2+1=3
            //i=1,j从1开始,a[1]+1=4,后续3位每一位都是a[1]+1=5
            //i=2,j从2开始,a[2]+1=6,后续2位每一位都是a[2]+1=7
            //i=3,j从3开始,a[3]+1=8,后续1位每一位都是a[3]+1=9
            //i=4,j从4开始,后续1位是a[4]+1=10
            //2 4 6 8 10
            a[j] = a[i] + 1;
        }
    for (i = 1; i < 5; i++)
        printf("%4d", a[i]);
    return 0;
}

你可以在VS编译器下按F10进入调试,每次按下F10程序都会走一步,在右侧的参数观察窗口逐步查看数据的变化

img

如果对你有帮助,还请点个采纳,万分感谢!

就是遍历改变数组,打印出过程就知道了

img

如有帮助请采纳谢谢

逐句注释理解如下:

//定义头文件
#include<stdio.h>
//主函数
int main()
{
//定义i,j用于循环遍历 
int i,j,a[10];//定义a[10]数组用于存储
a[0]=1;//将首地址元素赋值为1
//i 外层循环
for(i=0;i<5;i++)
for(j=i;j<5;j++)//j 内层循环
a[j]=a[i]+1;//比如i=0时 a[j] = a[0] + 1 = 1 + 1 = 2 因为j=i j=0 所以a[0] = 2 a[1]、a[2]、a[3]、a[4]都为3

//循环输出变化后的数组元素
for(i=1;i<5;i++)
printf("%4d",a[i]);//设置域宽为4 输出a[i]
return 0;//返回0 代表程序结束
}

以上仅供参考,如有任何疑问,可以评论回复,看到即回。
希望对题主有所帮助!可以的话,点个采纳!

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632