调试问题
#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;也不行。 截图证明它 本帖最后由 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) ;
}
运行结果是正确的呀,有什么问题,干嘛要调试?
你是说打断点出现的吧。关于变量m在运行到“int l,m,n,sum=0;”时值就是1的问题(只不过系统给了它个初值而已,不影响结果滴),是因为你每次运行程序时,相当于给m开辟空间,而这个空间有可能使用过,遗留下某个值。所以为了程序的严谨性,我们在int时通常给他带个初值,例如int m=0;
记得采纳哦!!!{:10_256:}
页:
[1]