| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3182 人关注过本帖
标题:初学C语言,一个语句放在不同位置,为什么结果不一样?
只看楼主 加入收藏
yehuabao
Rank: 2
等 级:论坛游民
帖 子:45
专家分:87
注 册:2017-8-3
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:11 
初学C语言,一个语句放在不同位置,为什么结果不一样?

初学C语言,一个语句放在不同位置,为什么结果不一样?
程序代码:
# include <stdio.h>

int main (void)
{
    int i, j, k , n = 0;
    printf ("\n");
    for (i = 1;i < 5;i ++)         /* 以下为三重循环*/
        for (j = 1;j < 5;j ++)
            for (k = 1;k < 5;k ++)
            {
                if (i != k && i != j && j != k ) /* 确保i、j、k三位互不相同*/
                    n = n+1;   /* 计算有多少个这样的数字*/
                    printf ("%d%d%d\n",i,j,k);
            }
                              
             printf ("总共有%d个符合条件的数字",n);
                
            return 0 ;
}



换了一下位置如下

程序代码:
# include <stdio.h>

int main (void)
{
    int i, j, k , n = 0;
    printf ("\n");
    for (i = 1;i < 5;i ++)         /* 以下为三重循环*/
        for (j = 1;j < 5;j ++)
            for (k = 1;k < 5;k ++)
            {
                if (i != k && i != j && j != k ) /* 确保i、j、k三位互不相同*/
                   
                    printf ("%d%d%d\n",i,j,k);
                    
                     n = n+1;   /* 计算有多少个这样的数字*/
                            
            }

                                    
             printf ("总共有%d个符合条件的数字",n);
                
            return 0 ;
}



求解。


搜索更多相关主题的帖子: 位置 int printf for 数字 
2017-08-04 11:27
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:0 
if (i != k && i != j && j != k ) /* 确保i、j、k三位互不相同*/
    n = n+1;   /* 计算有多少个这样的数字*/
printf ("%d%d%d\n",i,j,k);

if (i != k && i != j && j != k ) /* 确保i、j、k三位互不相同*/
    printf ("%d%d%d\n",i,j,k);
n = n+1;   /* 计算有多少个这样的数字*/
                           
2017-08-04 11:30
yehuabao
Rank: 2
等 级:论坛游民
帖 子:45
专家分:87
注 册:2017-8-3
收藏
得分:0 
以下是引用吹水佬在2017-8-4 11:30:20的发言:

if (i != k && i != j && j != k ) /* 确保i、j、k三位互不相同*/
    n = n+1;   /* 计算有多少个这样的数字*/
printf ("%d%d%d\n",i,j,k);

if (i != k && i != j && j != k ) /* 确保i、j、k三位互不相同*/
    printf ("%d%d%d\n",i,j,k);
n = n+1;   /* 计算有多少个这样的数字*/
                           

换了,就是因为结果不一样,看不懂,请说详细一点。谢谢。
2017-08-04 11:39
GBH1
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:5
帖 子:112
专家分:510
注 册:2017-6-13
收藏
得分:5 
如果你用花括弧将printf ("%d%d%d\n",i,j,k; n = n+1; 这两句扩起来就结果一样了
不一样的原因:
第一种方案:只是符合ijk互斥是n才递增,而打印语句会打印ijk所有的值,不管ijk是否互斥
第二种方案:打印所有符合ijk互斥的值,而递增语句则会一直递增,不管ijk值是否符合条件。
2017-08-04 11:56
yehuabao
Rank: 2
等 级:论坛游民
帖 子:45
专家分:87
注 册:2017-8-3
收藏
得分:0 
以下是引用GBH1在2017-8-4 11:56:54的发言:

如果你用花括弧将printf ("%d%d%d\n",i,j,k; n = n+1; 这两句扩起来就结果一样了
不一样的原因:
第一种方案:只是符合ijk互斥是n才递增,而打印语句会打印ijk所有的值,不管ijk是否互斥
第二种方案:打印所有符合ijk互斥的值,而递增语句则会一直递增,不管ijk值是否符合条件。

谢谢,你这么一说,我就明白了。
2017-08-04 12:48
潇湘夜雨001
Rank: 2
等 级:论坛游民
帖 子:14
专家分:28
注 册:2017-4-22
收藏
得分:3 
回复 楼主 yehuabao
三楼解释的不错,主要是if后只能认一个语句;如果你把if后的两个语句用大括号括起来,结果应当是一样的;再编程风格不太好,感觉代码很乱!
2017-08-04 14:50
黄金叶
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-8-4
收藏
得分:0 
新人求教,,,用啥软件学习c语言操作
2017-08-04 16:34
yehuabao
Rank: 2
等 级:论坛游民
帖 子:45
专家分:87
注 册:2017-8-3
收藏
得分:0 
以下是引用潇湘夜雨001在2017-8-4 14:50:04的发言:

三楼解释的不错,主要是if后只能认一个语句;如果你把if后的两个语句用大括号括起来,结果应当是一样的;再编程风格不太好,感觉代码很乱!



谢谢。第一次写程序,有点乱,还请前辈们多多指教啊。
2017-08-04 17:06
yehuabao
Rank: 2
等 级:论坛游民
帖 子:45
专家分:87
注 册:2017-8-3
收藏
得分:0 
以下是引用黄金叶在2017-8-4 16:34:27的发言:

新人求教,,,用啥软件学习c语言操作

我也是新人,我用的是VC6.0,希望可以给你做一个参考。
2017-08-04 17:17
黄金叶
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-8-4
收藏
得分:0 
回复 8楼 yehuabao
谢谢啊  大兄弟。
2017-08-05 13:04
快速回复:初学C语言,一个语句放在不同位置,为什么结果不一样?
数据加载中...
 
   



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

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