标题:程序运行结果为什么是12
只看楼主
一壶瀑布
Rank: 1
等 级:新手上路
威 望:2
帖 子:14
专家分:0
注 册:2019-6-16
结帖率:66.67%
已结贴  问题点数:20 回复次数:6 
程序运行结果为什么是12
#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
搜索更多相关主题的帖子: sum 结果 运行 for int 
2019-10-04 15:28
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
得分:5 
你希望是多少呢?
2019-10-04 17:48
c小白2333
Rank: 5Rank: 5
来 自:中国
等 级:贵宾
威 望:11
帖 子:121
专家分:367
注 册:2019-6-17
得分:5 
兄弟
你这程序看着就不想读分析
更别说回答你问题了
注意基本的括号对齐 的一些规则啊
懂得尊重别人 别人才想帮你

宝剑锋从磨砺出,梅花香自苦寒来。
2019-10-04 20:52
bcbbcclbbc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:194
专家分:528
注 册:2019-8-15
得分:5 
回复 楼主 一壶瀑布
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");

}
2019-10-04 21:17
一壶瀑布
Rank: 1
等 级:新手上路
威 望:2
帖 子:14
专家分:0
注 册:2019-6-16
得分:0 
回复 2楼 自学的数学
希望是六  改一下if(i==j&&j==k)就是了  但我想知道它是怎么算出来的
2019-10-06 11:19
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
得分:0 
程序代码:
#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;
}
2019-10-06 15:32
沈和
Rank: 2
等 级:论坛游民
威 望:5
帖 子:22
专家分:81
注 册:2019-8-26
得分:5 
你可以分析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

附:以后题主自己分析。


2019-10-07 09:11



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-497103-1-1.html




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

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