C习题集53-63

本文涉及的产品
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
简介: C习题集53-63

53.翻转直角三角形图案


题目描述:


       KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的翻转直角三角形图案。


输入描述:

多组输入,一个整数(2~20),
表示翻转直角三角形直角边的长度,即“*”的数量,
也表示输出行数。
输入示例:5


输出描述:

针对每行输入,输出用“*”组成的对应长度的翻转直角三角形
,每个“*”后面有一个空格。
输出示例:
        * * * * *
        * * * *
        * * *
        * *
        *


解析:


      1.多组输入

       2.每两个*中间有空格

       3.控制好一行输出的内容


代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
  int n = 0;
  while (~scanf("%d", &n))
  {
    int i = 0;
    //行数
    for (i = 0; i < n; i++)
    {
      int j = 0;
      //每行的内容
      for (j = n; j > i; j--)
      {
        printf("* ");
      }
      printf("\n");
    }
  }
  return 0;
}


54.带空格的直角三角形图案


题目描述:


       KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的带空格直角三角形图案。


输入描述:

多组输入,一个整数(2~20),
表示直角三角形直角边的长度,即“*”的数量,
也表示输出行数。
输入示例:5


输出描述:

针对每行输入,输出用“*”组成的对应长度的直角三角形,
每个“*”后面有一个空格。
输出示例:
                * 
              * * 
            * * * 
          * * * * 
        * * * * *


解析:


       本题第二中写法是经过画图发现,我们发现空格位置的i和j的坐标加起来一定小于n-1,于是可以利用本规则解决题目。



代码:

方法一
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
  int n = 0;
  while ((scanf("%d", &n))!=EOF)
  {
    int i = 0;
    //行数
    for (i = 0; i < n; i++)
    {
      int j = 0;
      //每行空格的内容
      for (j = n - 1; j > i; j--)
      {
        printf("  ");
      }
      //每行*的内容
      for (j = 0; j <= i; j++)
      {
        printf("* ");
      }
      printf("\n");
    }
  }
  return 0;
}
方法二
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
  int n = 0;
  while ((scanf("%d", &n)) != EOF)
  {
    int i = 0;
    for (i = 0; i < n; i++)
    {
      int j = 0;
      for (j = 0; j < n; j++)
      {
        if (i + j < n - 1)
          printf("  ");
        else
          printf("* ");
      }
      printf("\n");
    }
  }
  return 0;
}


55.翻转金字塔图案


题目描述:


       KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的翻转金字塔图案。


输入描述:

多组输入,一个整数(2~20),
表示翻转金字塔边的长度,即“*”的数量,
也表示输出行数。
输入示例:5


输出描述:

针对每行输入,输出用“*”组成的金字塔,
每个“*”后面有一个空格。
输出示例:
        * * * * * 
         * * * * 
          * * * 
           * * 
            * 


解析:


       1.多组输入

       2.控制好行数,控制好每一行前面的空格数


代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
  int n = 0;
  while ((scanf("%d", &n)) != EOF)
  {
    int i = 0;
    for (i = 0; i < n; i++)
    {
      int j = 0;
      //打印一行的内容
      //先打印空格
      for (j = 0; j < i; j++)
      {
        printf(" ");
      }
            //再打印空格
      for (j = 0; j < n - i; j++)
      {
        printf("* ");
      }
      printf("\n");
    }
  }
  return 0;
}


56.菱形图案


题目描述:


       KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的菱形图案。


输入描述:

多组输入,一个整数(2~20)。
输入示例:3


输出描述:

针对每行输入,输出用“*”组成的菱形,
每个“*”后面有一个空格。
输出示例:
           * 
          * * 
         * * * 
        * * * * 
         * * * 
          * * 
           * 


解析:


       1.首先把菱形的打印分为上下两个部分

       2.上下分别控制好行数和空格的个数

       3.多组输入


代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
  int n = 0;
  while ((scanf("%d", &n)) != EOF)
  {
    //根据n的值打印菱形
    int i = 0;
    //上部分
    for (i = 0; i < n; i++)
    {
      int j = 0;
      for (j = 0; j < n - i; j++)
      {
        printf(" ");
      }
      for (j = 0; j <= i; j++)
      {
        printf("* ");
      }
      printf("\n");
    }
    //下部分
    for (i = 0; i < n + 1; i++)
    {
      int j = 0;
      for (j = 0; j < i; j++)
      {
        printf(" ");
      }
      for (j = 0; j < n + 1 - i; j++)
      {
        printf("* ");
      }
      printf("\n");
    }
  }
  return 0;
}


57.K形图案


题目描述:


       KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的K形图案。


输入描述:

多组输入,一个整数(2~20)。
输入示例:3


输出描述:

针对每行输入,输出用“*”组成的K形,
每个“*”后面有一个空格。
输出示例:
        * * * * 
        * * * 
        * * 
        * 
        * * 
        * * * 
        * * * *


解析:


       1.多组输入

       2.每一行打印完,后面还有空格


代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
  int n = 0;
  while ((scanf("%d", &n)) != EOF)
  {
    //根据n的值打印K形
    int i = 0;
    //上部分
    for (i = 0; i < n; i++)
    {
      int j = 0;
      for (j = 0; j < n + 1 - i; j++)
      {
        printf("* ");
      }
      for (j = 0; j < i; j++)
      {
        printf(" ");
      }
      printf("\n");
    }
    //下部分
    for (i = 0; i < n + 1; i++)
    {
      int j = 0;
      for (j = 0; j <= i; j++)
      {
        printf("* ");
      }
      for (j = 0; j < n - i; j++)
      {
        printf(" ");
      }
      printf("\n");
    }
  }
  return 0;
}


58.箭形图案


题目描述:


       KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的箭形图案。


输入描述:

本题多组输入,每行一个整数(2~20)。
输入示例:3


输出描述:

针对每行输入,输出用“*”组成的箭形。
输出示例:
              *
            **
          ***
        ****
          ***
            **
              *


解析:


       1.多组输入

       2.每一行前面是空格,后面是*


代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
  int n = 0;
  while ((scanf("%d", &n)) != EOF)
  {
    //根据n的值打印箭形
    int i = 0;
    //上部分
    for (i = 0; i < n; i++)
    {
      int j = 0;
      for (j = 0; j < 2 * (n - i); j++)
      {
        printf(" ");
      }
      for (j = 0; j <= i; j++)
      {
        printf("*");
      }
      printf("\n");
    }
    //下部分
    for (i = 0; i < n + 1; i++)
    {
      int j = 0;
      for (j = 0; j <= 2 * i; j++)
      {
        printf(" ");
      }
      for (j = 0; j < n + 1 - i; j++)
      {
        printf("*");
      }
      printf("\n");
    }
  }
  return 0;
}


59.反斜线图案


题目描述:


      KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的反斜线形图案。


输入描述:

多组输入,一个整数(2~20),
表示输出的行数,
也表示组成反斜线的“*”的数量。
输入示例:5


输出描述:

针对每行输入,输出用“*”组成的反斜线。
输出示例:
        *    
         *   
          *  
           * 
            *


解析:


       1.多组输入

       2.本题的规则是当i==j时,只打印*


代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
  int n = 0;
  while (~scanf("%d", &n))
  {
    int i = 0;
    for (i = 0; i < n; i++)
    {
      int j = 0;
      for (j = 0; j < n; j++)
      {
        if (i == j)
          printf("*");
        else
          printf(" ");
      }
      printf("\n");
    }
  }
  return 0;
}


60.正斜线图案


题目描述:


       KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的正斜线形图案。


输入描述:

多组输入,一个整数(2~20),
表示输出的行数,
也表示组成正斜线的“*”的数量。
输入示例:3


输出描述:

针对每行输入,输出用“*”组成的正斜线。
输出示例:
           *
          * 
         *  


解析:


       1.多组输入

       2.本题的规则是当i+j==1时,只打印*


代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
  int n = 0;
  while (~scanf("%d", &n))
  {
    int i = 0;
    for (i = 0; i < n; i++)
    {
      int j = 0;
      for (j = 0; j < n; j++)
      {
        if (i + j == n-1)
          printf("*");
        else
          printf(" ");
      }
      printf("\n");
    }
  }
  return 0;
}


61.X形图案


题目描述:


       KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的X形图案。


输入描述:

多组输入,一个整数(2~20),
表示输出的行数,
也表示组成“X”的反斜线和正斜线的长度。
输入示例:5


输出描述:

针对每行输入,输出用“*”组成的X形图案。
输出示例:
        *   *
         * * 
          *  
         * * 
        *   *


解析:


       1.多组输入

       2.本题的规则是当i+j==1或者i==j时,只打印*


代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
  int n = 0;
  while (~scanf("%d", &n))
  {
    int i = 0;
    for (i = 0; i < n; i++)
    {
      int j = 0;
      for (j = 0; j < n; j++)
      {
        if ((i + j == n - 1) || (i == j))
          printf("*");
        else
          printf(" ");
      }
      printf("\n");
    }
  }
  return 0;
}


62.空心正方形图案


题目描述:


       KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的“空心”正方形图案。


输入描述:

多组输入,一个整数(3~20),
表示输出的行数,
也表示组成正方形边的“*”的数量。
输入示例:5


输出描述:

针对每行输入,输出用“*”组成的“空心”正方形,
每个“*”后面有一个空格。
输出示例:
        * * * * * 
        *       * 
        *       * 
        *       * 
        * * * * * 


解析:  


       1.多组输入

       2.本题的规则是当i==0或者i==n-1或者j==0或者j==n-1时,只打印*和空格


代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
  int n = 0;
  while (~scanf("%d", &n))
  {
    int i = 0;
    for (i = 0; i < n; i++)
    {
      int j = 0;
      for (j = 0; j < n; j++)
      {
        if ((i == 0 || i == n - 1) || (j == 0 || j == n - 1))
          printf("* ");
        else
          printf("  ");
      }
      printf("\n");
    }
  }
  return 0;
}


63.空心三角形图案


题目描述:


       KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的“空心”三角形图案。


输入描述:

多组输入,一个整数(3~20),
表示输出的行数,
也表示组成三角形边的“*”的数量。
输入示例:5


输出描述:

针对每行输入,输出用“*”组成的“空心”三角形,
每个“*”后面有一个空格。
输出示例:
        *         
        * *       
        *   *     
        *     *   
        * * * * *


解析:


       1.多组输入

       2.本题的规则是当i==n-1或者j==0或者i==j时,只打印*和空格


代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
  int n = 0;
  while (~scanf("%d", &n))
  {
    int i = 0;
    for (i = 0; i < n; i++)
    {
      int j = 0;
      for (j = 0; j < n; j++)
      {
        if ((i == n - 1) || (j == 0) || (j == i))
          printf("* ");
        else
          printf("  ");
      }
      printf("\n");
    }
  }
  return 0;
}
相关文章
|
Go
【SICP练习】146 练习4.2
版权声明:转载请联系本人,感谢配合!本站地址:http://blog.csdn.net/nomasp https://blog.csdn.net/NoMasp/article/details/44729521 练习4-2 原文 Exercise 4.
671 0
|
数据安全/隐私保护
|
关系型数据库 vr&ar
下一篇
无影云桌面