九九乘法表的输出(for循环总结)
1.左下三角型
此为最简单的一种,只需控制好多重循环与输出空格数即可
#include<stdio.h> int main() { int i,j,sum; for(i=1;i<=9;i++) { for(j=1;j<=i;j++) { printf("%d*%2d=%2d ",i,j,sum=i*j); } printf(" "); } return 0; }
2.右上三角形
观察输出样式我们可知:
- i,j所控制的乘数,均为从小到大的排列顺序,因此我们均应用i++,j++的形式
- 观察第二列起的空格我们发现,原处的整式均被空格代替于是我们可以得知,在此处应用if语句对j内循环做一个判断(!此处我犯了一个错误,认为可以在for循环中将条件判断改为for(j=1;(j>=i)&&(j<=9);j++),但如果以此判断,循环在第二遍时就会停止。
#include<stdio.h> int main() { int i,j,sum,z; for(i=1;i<=9;i++) { for(j=1;j<=9;j++) { if(j<i) { printf(" "); } else printf("%d*%2d=%2d ",i,j,sum=i*j); } printf(" "); } return 0; }
3. 输出左上三角形
此处只需控制好i,j之间的关系既可
#include<stdio.h> int main() { int i,j,sum,z; for(i=9;i>0;i--) { for(j=1;j<=i;j++) { printf("%d*%2d=%2d ",i,j,sum=i*j); } printf(" "); } return 0; }
4.输出右下三角形
- 此处有两种输出方式,一种为用空格代替整式,另一种为用空格和j作为内循环
- 只需控制好i,j,整数之间的关系即可
#include<stdio.h> int main() { int i,j,sum,z; for(i=1;i<=9;i++) { for(j=1;j<=9;j++) { if(j>9-i) { printf("%d*%2d=%2d ",i,j,sum=i*j); } else printf(" "); } printf(" "); } return 0; }
这里错啦!!!第二行开始输出的就不是乘法表了,所以这里只有下面那一种办法!
#include<stdio.h> int main() { int i,j,sum,z; for(i=1;i<=9;i++) { for(z=9;z>i;z--) printf(" "); for(j=1;j<=i;j++) { printf("%d*%2d=%2d ",i,j,sum=i*j); } printf(" "); } return 0; }
总结
- for的多重循环最主要的就是弄清楚i,j,循环次数(那个整数)之间的关系,弄清之后,要考虑的就只有内循环如何嵌套和是否使用if了。