西安医疗器械有限公司:这个程序运行的结果为什么不是99表?

来源:百度文库 编辑:高考问答 时间:2024/05/04 12:09:38
#include<stdio.h>
main()
{ int i,j,m;
for(j=1;j<10;j++)
{ for(i=1;i<10;i++)
{m=i*j;
printf("%d*%d=%d ",i,j,m);
if(i/j==1) printf("\n\n");
/* break;*/
}
}
}

用你的思维方式去看,当你break的时候是为了跳出内层的for循环,而去执行外层for循环,这时j++是没有进行的,所以会出现不是99表的问题。如你的思路,做判断时不用i<=j,而用i<10,并且用到break语句:

#include<stdio.h>
main()
{ int i,j,m;
for(j=1;j<10;j++)
{ i=1;
do
{m=i*j;
printf("%d*%d=%d ",i,j,m);
if(i/j==1)
{printf("\n\n");
break;
}
else
i++;
}
while(i<10);
}
}

这样break出去的就会执行j++了

再给你个简单点的,只用了for循环,这样也能达到同样的效果

main()
{ int i,j,m;
for(j=1;j<10;j++)
{ for(i=1;i<=j;i++)
{m=i*j;
printf("%d*%d=%d ",i,j,m);
}
printf("\n");
}
}

条条大道通罗马!何必取难舍易?

把if语句放到printf语句上面,应该就可以了
只是调换一下位置