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("\n");
}
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("\n");
}
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("\n");
}
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("\n");
}
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("\n");
}
return 0;
}
总结
- for的多重循环最主要的就是弄清楚i,j,循环次数(那个整数)之间的关系,弄清之后,要考虑的就只有内循环如何嵌套和是否使用if了。