C语言实现九九乘法表(四种情况)

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;
}

若有错误,欢迎指正!

  • 38
    点赞
  • 145
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值