构建菱形018.04.10

 

然而我们学C语言上面不能满足于网上所给的代码,否则将会失去核心竞争力。

#include <stdio.h>
int main(void)
{
  int i,j;
  for (i=0;i<7;i++)
    for (j=0;j<7;j++)
      {
        if(3>i+j)
         printf(" ");
        else if(3==i+j)
         printf("*");
        else if(6==j)
          printf("\n");
      }
}

 

 

我尝试先将\n与*分离#include <stdio.h>但是我还想将大于号去掉以便于不用穿插这么多大于号小于号。

#include <stdio.h>
int main(void)
{
  int i,j;
  for (i=0;i<7;i++)
    for (j=0;j<7;j++)
      {
        if(3!=i+j&&6!=j)
         printf(" ");
        else if(3==i+j)
         printf("*");
        else if(6==j)
          printf("\n");
      }
}

一切显得顺理成章,于是。

 

 

 

#include <stdio.h>
int main(void)
{
  int i,j;
  for (i=0;i<8;i++)
    for (j=0;j<8;j++)
      {
        if(3!=i+j&&3!=j-i&&7!=j)
         printf(" ");
        else if(3==i+j)
         printf("*");
        else if(3==j-i)  //在这我是防止j=6,i=3时下边一个输出下一行被覆盖,然而多出来一行一列,最后一个星号窝在角落
         printf("*");
        else if(7==j)
          printf("\n");
      }
}

这个多出来的很烦。

 

 

#include <stdio.h>
int main(void)
{
  int i,j;
  for (i=0;i<7;i++)
    for (j=0;j<7;j++)
      {
        if(3!=i+j&&3!=j-i&&6!=j)
         printf(" ");
        else if(3==i+j) 
         printf("*");
        else if(3==j-i)//事实上(3,6)这个位置已经被这条if所覆盖,下一条if也不会输出下一行了。
         printf("*");
        else if(6==j)
          printf("\n");
      }
}

这就顺眼多了。但是它不会输出下一行。

 

 

剩下来的两条线分别是j=i-3与i+j=9,同理,在输出空的条件上要加入3!=i-j与9!=i+j.重要的一点是(3,6)后面不输出下一行就打不出来了。

 int i,j;
  for (i=0;i<7;i++)
    for (j=0;j<7;j++)
      {
        if(3!=i+j&&3!=j-i&&6!=j&&3!=i-j&&9!=i+j)
         printf(" ");
        else if (3==i+j)//菱形左上角
         printf("*");
        else if (3==j-i)//菱形右上角   打到3,6时不能输出下一行
         printf("*");
        else if (3==i-j)//菱形左下角
         printf("*");
        else if (9==i+j)//菱形右下角
         printf("*");
        else if(6==j)
          printf("\n");
      }
}这逼样能见人?????也许当时父母生我的时候就是做错了一个姿势/(ㄒoㄒ)/~~

                这个问题是出在(3,6)上的,只需将(3,6)这个点提出来,并在其他语句之前执行(3,6)这个点时的操作就行了。

这是成品

这是改变顺序后的代码(不用提出(3,6))点。

#include <stdio.h>
int main(void)
{
  int i,j;
  for (i=0;i<7;i++)
    for (j=0;j<8;j++)
      {
        if(3!=i+j&&3!=j-i&&7!=j&&3!=i-j&&9!=i+j)
         printf(" ");
        else if(7==j)
          printf("\n");      
        else if (3==i+j)//菱形左上角
         printf("*");        
        else if (3==j-i)//菱形右上角
         printf("*");
        else if (3==i-j)//菱形左下角
         printf("*");
        else if (9==i+j)//菱形右下角
         printf("*");
       
      }
}  

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值