实现一个乘法口诀表的打印,可输入阶数。
乘法口诀表的实现和打印金字塔原理一样,都是使用双重循环,再控制好换行就ok了。
正三角打印:
#include<stdio.h>
int main()
{
int i, j, n;//n为输入的乘阶数。
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
for (j = 1; j <=i; j++)
{
printf("%d*%d=%d\t", i, j, i*j);
if (i == j)
{
printf("\n");//当输出到n*n的时候,换行!
}//endl if
}//endl for(j)
}//endl for(i)
return 0;
}
打印结果:
倒三角打印:
int main()
{
int n;
scanf("%d", &n);
for (int i = 1; i<=n; i++)
{
for (int k = 1; k < i; k++)//打印空格,第i行打印i-1个空格。
{
printf("\t");
}
for (int j = i; j <=n; j++)
{
printf("%d*%d=%d\t", j, i, i*j);
}
printf("\n");//换行
}
return 0;
}
打印结果:
当测试数据大于10时,后面的打印会有些凌乱,因此我们在打印时控制输出格式
int main()
{
int i, j;
int n;
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
for (j = 1; j <= i; j++)
{
printf("%2d*%-2d=%-3d ", i, j, i*j);
//i,j最大可以是两位数,其i*j是三位并靠左打印输出
}
printf("\n");
}
system("pause");
return 0;
}
最后,将打印功能包装为函数
void print(int num)
{
int i, j;
for (i = 1; i <= num; i++)
{
for (j = 1; j <= i; j++)
{
printf("%2d*%-2d=%02d ", i, j, i*j);
//控制格式根据数据大小调整,%02d,在一位数前面补0输出
}
printf("\n");
}
}
int main()
{
int n;
scanf("%d", &n);
print(n);
system("pause");
return 0;
}