cccCCGB 发表于 2019-7-15 16:00:56

调试问题

#include <stdio.h>
#include <math.h>
void main()
{
        int l,m,n,sum=0;
        for(l=1;l<=4;l++)
        {
                for(m=1;m<=4;m++)
                {
                        for(n=1;n<=4;n++)
                        {
                                if(n==l||n==m||m==l)
                                {
                               }
                                else
                                {
                                        sum=sum+1;
                                        printf("%d%d%d\n",l,m,n);
                                }
                        }
                }
        }
        printf("共有%d个数满足条件",sum);
}
上述代码调试过程中,变量m在运行到“int l,m,n,sum=0;”时值就是1了,这是为什么?即使添加m=0;也不行。

Krant5 发表于 2019-7-15 16:02:12

截图证明它

jackz007 发表于 2019-7-15 16:31:08

本帖最后由 jackz007 于 2019-7-15 16:32 编辑

    代码应该这样写:
#include <stdio.h>
main(void)
{
      int l , m , n , sum = 0                                          ;
      for(l = 1 ; l <= 4 ; l ++) {
                for(m = 1 ; m <= 4 ; m ++) {
                        for(n = 1 ; n <= 4 ; n ++) {
                              if(n != l && n != m && m != l) {
                                        sum ++                           ;
                                        printf("%d %d %d\n" , l , m , n) ;
                              }
                        }
                }
      }
      printf("共有%d个数满足条件" , sum)                               ;
}


      运行结果是正确的呀,有什么问题,干嘛要调试?

AmosAlbert 发表于 2019-7-16 17:31:25

你是说打断点出现的吧。关于变量m在运行到“int l,m,n,sum=0;”时值就是1的问题(只不过系统给了它个初值而已,不影响结果滴),是因为你每次运行程序时,相当于给m开辟空间,而这个空间有可能使用过,遗留下某个值。所以为了程序的严谨性,我们在int时通常给他带个初值,例如int m=0;

记得采纳哦!!!{:10_256:}
页: [1]
查看完整版本: 调试问题