C语言实现九九乘法表(四种情况)
本文所用思想是在9行9列方形乘法表的基础上“切割”得到左上、右上、左下、右下四种形态的九九乘法表,最后使用switch-case语句对四种形态的九九乘法表进行整理以完善程序。
首先,我们嵌套两个for循环语句得到一个方形的九九乘法表。
#include<stdio.h>
int main()
{
int i,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=9;j++)
{
printf("%d*%d=%2d ",i,j,i*j);
if(j==9)
{
printf("\n");
}
}
}
return 0;
}
得到的九九乘法表方形块如下:
下一步,我们对方形块进行“切割”,这里我们以左下乘法表为示例。
由图我们可以添加两条约束:
1.左下乘法表打印斜边的边界条件为i等于j(本文打印顺序为i×j),即当i>=j时,乘法式显示,当i<j时,乘法式表示为7个空格。
2.换行条件为j==9;
#include<stdio.h>
int main()
{
int i,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=9;j++)
{
if(i>=j)
{
printf("%d*%d=%2d ",i,j,i*j);
if(j==9)
{
printf("\n");
}
}
else
{
printf(" ");
if(j==9)
{
printf("\n");
}
}
}
}
return 0;
}
同理,我们可以得到右上乘法表。
但是当我们想要切割左上和右下乘法表时,可以发现缺少了部分乘法公式。
为解决这个问题,我们可以换一张初始乘法表。
改变换行条件为j==1时,即可仿照前两个乘法表的方法获取左上和右下乘法表。
在此基础上,我们可以实现对于四种情况乘法表的选择输出。自然地,我们想到了switch-case语句。
目标:
1.实现选择输出不同情况的乘法表;
2.一次输出可以选择继续输出或结束运行;
实现如下:
#include<stdio.h>
int main()
{
int i,j,a,flag=1;
while(flag)
{
printf("please input the number:\ntop_left-->1\ntop_right-->2\nbottom_left-->3\nbottom_right-->4\nexit-->5\n");
scanf("%d",&a);
getchar();
switch(a)
{
case 1:
for(i=1;i<=9;i++)
{
for(j=1;j<=9;j++)
{
if((i+j)<=10)
{
printf("%d*%d=%2d ",i,j,i*j);
if(j==9)
{
printf("\n");
}
}
else
{
printf(" ");
if(j==9)
{
printf("\n");
}
}
}
}
break;
case 2:
for(i=1;i<=9;i++)
{
for(j=1;j<=9;j++)
{
if(j>=i)
{
printf("%d*%d=%2d ",i,j,i*j);
if(j==9)
{
printf("\n");
}
}
else
{
printf(" ");
}
}
}
break;
case 3:
for(i=1;i<=9;i++)
{
for(j=1;j<=9;j++)
{
if(i>=j)
{
printf("%d*%d=%2d ",i,j,i*j);
if(j==9)
{
printf("\n");
}
}
else
{
printf(" ");
if(j==9)
{
printf("\n");
}
}
}
}
break;
case 4:
for(i=1;i<=9;i++)
{
for(j=1;j<=9;j++)
{
if(i+j>=10)
{
printf("%d*%d=%2d ",i,j,i*j);
if(j==9)
{
printf("\n");
}
}
else
{
printf(" ");
}
}
}
break;
case 5:
flag=0;
break;
default:
printf("please control the input value between 1 and 5!!!\n");
}
}
return 0;
}
若有错误,欢迎指正!