C语言求助,题目有图,希望过程详细一些? 。。。。

56.请写出以下程序的运行结果。(5分)#include"stdio.h"voidmain(){inti;inta[8][8]={20,30,32,50,52,68,52... 56.请写出以下程序的运行结果。(5分)#include"stdio.h"voidmain(){inti;inta[8][8]={20,30,32,50,52,68,52,88,72,78,61,89,1,4,101,24,11,14,97,83}for(i=0;i<6;i++}printf("%d",a[i++][1+i]);} 展开
 我来答
上海长英
2021-03-17 · 上海长英,自动化电气设计,软件编程。
上海长英
采纳数:1072 获赞数:22871

向TA提问 私信TA
展开全部

第一:对二维数组进行剖析 

    int a[8][8] 是一个两维数组:a[行数][列数] 就是8行,8列,

    int a[8][8]={20,30,32,50,52,68,52,88,  72,78,61,89,1,4,101,24,  11,14,97,83};

    int a[8][8]={{20,30,32,50,52,68,52,88}, {72,78,61,89,1,4,101,24},{11,14,97,83}};

    上面两行 等效,第0、1行被完 完整初始化,第2行 部分初始化,没有被初始化的元素默认值为0.

第二:程序执行过程 剖析

#include<stdio.h>

void main(void)

{

     int i;

    int a[8][8]={20,30,32,50,52,68,52,88,  72,78,61,89,1,4,101,24,  11,14,97,83};

     for(i=0;i<6;i++)

     {

      printf("%d",a[i++][1+i]);

     }

}

   1). 第一次执行  

       首先执行 for(i=0;i<6;i++) ,i=0,判断i<6 结果为TRUE 然后执行下面一行 

       printf("%d",a[i++][1+i]) 时i=0  , 输出的是 a[0][1]=30(0行,1列)

        执行 printf("%d",a[i++][1+i]) 后i++,i=1

        最后执行 for(i=0;i<6;i++)  中的i++,i=2

   2)第二次循环

        首先执行   for(i=0;i<6;i++) ,中的i<6 结果为TRUE(此时i=2)

          printf("%d",a[i++][1+i]) 时 输出的是a[2][3]=83 (2行,3列)

           输出完毕后 再 执行完毕 i++,i=3

          最后执行 for(i=0;i<6;i++)  中的i++,i=4

  3)第三次循环

        首先执行   for(i=0;i<6;i++) 中的i<6 结果为TRUE(此时i=4)

         printf("%d",a[i++][1+i]) 时 输出的是a[4][5]=0 (4行,5列)

         输出完毕后 再 执行 i++,i=5

        最后执行 for(i=0;i<6;i++)  中的i++,i=6

  4)第四次循环

          首先执行   for(i=0;i<6;i++) 中的i<6 结果为FALSE(此时i=6)

          循环结束

所以最终的输出结果为:30830

测试 验证结果

KlarkKenter
2021-03-17 · TA获得超过1681个赞
知道小有建树答主
回答量:1540
采纳率:0%
帮助的人:358万
展开全部

首先了解清楚初始化后的数组:

然后,

for循环第一次i=0时,输出a[0][1]即30,此时除了循环内i++外,[i++]也对i自增了1,所以i变成自增2。注意a[i++][1+i]和a[i][1+i]输出结果一样的;

for循环第二次i=2时,输出a[2][3]即83,然后i+2;

for循环第三次i=4时,输出a[4][5]为0,然后i+2;

此时i=6不满足i<6所以退出循环。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
听不清啊
高粉答主

2021-03-16 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部
#include <stdio.h>
int main()
{ int i;
int a[8][8]= {20,30,32,50,52,68,52,88,72,78,61,89,1,4,101,24,11,14,97,83};
for(i=0; i<6; i++)
printf("%d",a[i++][1+i]);
return 0;
}
这个程序运行后的输出是:
3200

就是把a[0][2]、a[2][4]、a[4][6]三个数字连接到一起。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
狂奔的鱼塘
2021-03-17 · 超过13用户采纳过TA的回答
知道答主
回答量:53
采纳率:58%
帮助的人:15.6万
展开全部
a是个二维数组,一共8*8 = 64个元素。题中这种赋值方式会先赋值前面的,剩下的默认为0。
a[0]={20,30,32,50,52,68,52,88};
a[1]={72,78,61,89,1,4,101,24};

a[2]={11,14,97,83,0,0,0,0};

a[3]={0,0,0,0,0,0,0,0};
……
a[7]={0,0,0,0,0,0,0,0};

其次 a[i++][1+i]中,会先进行取下标'[]'运算,再进行i++运算

即,printf("%d",a[i++][1+i]) 可以分为两条语句
printf("%d",a[i][1+i]);
i++;
相当于for循环的step是 每次i = i+2;
i=0时打印 a[0][1] = 30
i=2时打印a[2][3] = 83
i=4时打印a[4][5] = 0
最终结果是30830
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式