乘法口诀表
Description
还记得以前小学时的九九乘法口诀吧。现在要求你编写程序打印出乘法口诀。 不过现在的乘法口诀表跟以前稍微有点区别,我告诉你一个数字n( 1 <= n <= 9),你要给我打出相应的nn乘法口诀表。
Input
输入小于10的正整数n
Output
输出nxn乘法口诀表。 每个乘法口诀表中的除最后一个乘式外,其它乘式占6列,不足6列的在后面补空格(printf("%d*%d=%-2d “…));最后一个乘式按实际数据输出,且最后无空格(printf(”%d*%d=%d\n"…))。同一行2个乘式之间有一个空格。
Sample Input
1
2
6
Sample Output
1*1=1
1 * 1=1
1 * 2=2 2 * 2=4
1 * 1=1
1 * 2=2 2 * 2=4
1 * 3=3 2 * 3=6 3 * 3=9
1 * 4=4 2 * 4=8 3 * 4=12 4 * 4=16
1 * 5=5 2 * 5=10 3 * 5=15 4 * 5=20 5 * 5=25
1 * 6=6 2 * 6=12 3 * 6=18 4 * 6=24 5 * 6=30 6 * 6=36
本题有许多易错点,一是如何运用题目中给出的 (printf("%d*%d=%-2d “…)) 和
(printf(”%d*%d=%d\n"…)) ;二是如何进行第i行到第i个是换行并且没有空格 ;三是按照题目给出的格式1 * 7=7, 2 * 7,14 ,3 * 7=21 ;可以看出前一个乘数由1递增,后一个乘数为i在第i行不变
#include <stdio.h>
int main()
{
int i,j,n,k=0;
scanf("%d",&n);
for(i=1;i<=n;i++)//一共n行,进行n组判断
{
k++;//这里的k用于j%k的判断,确保题目要求的最后一个数换行且无空格
for(j=1;j<=i;j++)//第i行的i个数的判定输出
{
if(j%k!=0) //这里如果写k%j!=0会出问题,因为k大,i每次从1开始递增,会不断换行,而如果是j%k,由于k>=j,只有第j个才会满足最后一个进行换行的判定条件
printf("%d*%d=%-2d ",j,i,i*j);
else printf("%d*%d=%d\n",j,i,i*j);
}
}
return 0;
}