注册 登录
编程论坛 C语言论坛

程序运行结果为什么是12

一壶瀑布 发布于 2019-10-04 15:28, 1956 次点击
#include<stdio.h>
int main()
{
    int num[3][3][3]={
        
            {
        {1,2,3},
        {1,2,3},
        {1,2,3}
            },
            {
        {1,2,3},
        {1,2,3},
        {1,2,3}
   
            },
            {
        {1,2,3},
        {1,2,3},
        {1,2,3}
   
                }   
   
        };
int i,j,k;
int sum=0;

for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
for(k=0;k<3;k++)   
    {

if(i==j==k)
sum+=num[i][j][k];


}
}
}
printf("%d ",sum);



return 0;
}程序运行结果为什么是12
6 回复
#2
自学的数学2019-10-04 17:48
你希望是多少呢?
#3
c小白23332019-10-04 20:52
兄弟
你这程序看着就不想读分析
更别说回答你问题了
注意基本的括号对齐 的一些规则啊
懂得尊重别人 别人才想帮你
#4
bcbbcclbbc2019-10-04 21:17
回复 楼主 一壶瀑布
if语句应该有点问题
if(i==j==k)

这个先后顺序(结合性)要弄清楚,然后就是逻辑运算结果只有1与0;
如果要判断三个数相等,得换个路子。
可以加个printf查看运行结果,更清楚的了解程序运行了那些你不需要的步骤。
{

if(i==j==k)
sum+=num[i][j][k];
printf("%d,%d,%d",i,j,k);
printf("\n");

}
#5
一壶瀑布2019-10-06 11:19
回复 2楼 自学的数学
希望是六  改一下if(i==j&&j==k)就是了  但我想知道它是怎么算出来的
#6
自学的数学2019-10-06 15:32
程序代码:
#include<stdio.h>
int main()
{
    int num[3][3][3]={
         { {1,2,3},{1,2,3},{1,2,3}  },
          {{1,2,3},{1,2,3},{1,2,3}  },
          {{1,2,3},{1,2,3},{1,2,3}  }   
       };
    int i,j,k;
    int sum=0;
    for(i=0;i<3;i++)
      {
        for(j=0;j<3;j++)
          {
             for(k=0;k<3;k++)   
               {
                  if( (i==j)&&(i==k)&&(j==k) )
                    sum+=num[i][j][k];
               }
         }
      }
  printf("%d ",sum);
  return 0;
}
#7
沈和2019-10-07 09:11
你可以分析i==j==k的逻辑,然后观察sum累加的具体目标。

一、首先看i == j 为真的情况,有三种组合
i,j 都是0
i,j 都是1
i,j 都是2

(i==j)==k相当于1==k,这时被累加的目标是
num[0][0][1] // 2
num[1][1][1] // 2
num[2][2][1] // 2


二、i == j为假的情况,有9-3=6种情况。
i=0, j=1
i=0, j=2
i=1, i=0
i=1, j=2
i=2, j=0
i=2, j=1

(i==j)==k相当于0==k,被累加的目标是
num[0][1][0] // 1
...
num[2][1][0] // 1

综上,被累加的结果是
(2+2+2) + (1+1+1+1+1+1) = 12

附:以后题主自己分析。


1