zoukankan      html  css  js  c++  java
  • c++打印实心菱形,空心三角形,十字星,空心正方形,实心平行四边形

    今天翻资料的时候,无意间发现了一个文件,是刚接触编程的时候用c++写的一段程序,我称之为"图形打印机",想着把所有图形都打印出来,后来发现其实每种图形的代码都是一个思路,就不想做重复劳动了。今天翻到了就把它记下来做个纪念吧。

    #include<stdio.h>
    #include<stdlib.h>
    
    //功能选择界面
    void menu();
    
    //使用声明
    void Statement();
    
    //打印实心菱形
    int Solid_diamond();
    
    //打印空心三角形
    int Hollow_triangle();
    
    //打印十字形 
    int Cross();
    
    //打印空心正方形 
    int Hollow_square();
    
    //打印实心平行四边形
    int Solid_parallelogram();
    
    //主函数 
    main(void)
    {
      int n;
      printf("			欢迎体验1.0版本图形打印机
    
    
    ");
      while(1)
      {
        menu();
        printf("Please select a funcyion:");
        scanf("%d",&n);
        switch(n)
        {
          case 1:Statement();break;
          case 2:Solid_diamond();break;
          case 3:Hollow_triangle();break;
          case 4:Cross();break;
          case 5:Hollow_square();break;
          case 6:Solid_parallelogram();break;
          case 0:exit(0);break;
        }
        if(n<0||n>6)
          printf("			---Input Error!---
    
    
    ");
      }
    }
    
    
    //声明界面
    void Statement()
    {
      printf("
    
    
    ");
      printf("1---Because the interface is too small,so,please enter a number less than 20
    ");
      printf(" (因为界面太小,所以请输入小于20的数以便观察)
    ");
      printf("2---The current version only supports the English language
    ");
      printf(" (因为目前水平有限,所以只支持英文模式)
    ");
      printf("3---If you find problem,please contact me in time,tkank you
    ");
      printf(" (如果你在使用过程中发现问题,请及时联系我,谢谢)
    
    
    ");
    }
    
     
    
    //菜单界面 
    void menu()
    {
      printf("
    
    
    ");
      printf("			1---Statement(使用声明)
    ");
      printf("			2---Solid diamond(实心菱形)
    ");
      printf("			3---Hollow triangle(空心三角形)
    ");
      printf("			4---Cross(十字形)
    ");
      printf("			5---Hollow_square(空心正方形)
    ");
      printf("			6---Solid_parallelogram(实心平行四边形)
    ");
      printf("			0---Exit the program(退出程序)
    
    
    ");
      printf("Important:《Only support English》
    
    
    ");
    }
    
     
    
     
    
    //实心菱形 
    int Solid_diamond()
    {
      int i,j,n;
      char m;
      printf("Please enter the order number(请输入阶数):");
      scanf("%d",&n);
      fflush(stdin);//清空缓存区 
      printf("Please enter the character(请输入字符):");
      scanf("%c",&m);
      if(n<=0)
      printf("			Input Error!
    ");
      for(i=1;i<=n;i++)
      {
        for(j=1;j<=n-i;j++)
        printf(" ");
        for(j=1;j<=2*i-1;j++)
        printf("%c",m);
        printf("
    ");
      }
      /*首先打n-1个空格后面接星号,随后空格逐渐减少,星号以2*1形式增加,
      只打印了左边部分的空格 ,右边空格未打印。
      打印出最大阶数*/
      for(i=1;i<=n-1;i++)
      {
        for(j=1;j<=i;j++)
        printf(" ");
        for(j=1;j<2*(n-i);j++)
        printf("%c",m);
        printf("
    ");
      }
      //仿照上式,逆序打印,只是要注意要比上式少一阶
    }
    
     
    
    //空心三角形 
    int Hollow_triangle()
    {
      int i,j,n; 
      char m;
      printf("Please enter the order number(请输入阶数):"); 
      scanf("%d",&n); 
      fflush(stdin);//清空缓存区 
      printf("Please enter the character(请输入字符):");
      scanf("%c",&m);
      if(n<=0)
      printf("			Input Error!
    ");
      for(i=1;i<n+1;i++) 
      { 
        for(j=1;j<2*n;j++) 
        { 
        if(j==n-i+1||j==i+n-1||i==n&&j%2==1) 
          printf("%c",m);
        //j=n-i+1打印左边符号;j=n+i-1打印右边符号;i=n&&j%2==1打印最后一层星号 
        else 
          printf(" "); //除星号外其余全为空格 
        } 
        printf("
    "); 
      } 
    }
    
     
    
    //十字形 
    int Cross()
    {
      int i,j,n;
      char m;
      printf("Please enter the order odd number(请输入奇数阶数):"); 
      scanf("%d",&n); 
      fflush(stdin);//清空缓存区 
      printf("Please enter the character(请输入字符):");
      scanf("%c",&m);
      if(n<=0)
      printf("			Input Error!
    ");
      for(i=1;i<=n;i++)
      {
        for(j=1;j<=n;j++)
        {
          if(j==n||i==(n+1)/2)
          /*按正常情况这是错的,应该是(j==(n+1)/2||i==(n+1)/2),但是由于界面
          的问题 ,为了美观,我选择扩大横排的间距,把竖排的字符打印得更靠后*/ 
          printf("%c ",m);
          else
            printf(" ");
        }
        printf("
    ");
      }
    }
    
      
    
    //空心正方形 
    int Hollow_square()
    {
      int i,j,n;
      char m;
      printf("Please enter the order number(请输入阶数):"); 
      scanf("%d",&n); 
      fflush(stdin);//清空缓存区 
      printf("Please enter the character(请输入字符):");
      scanf("%c",&m);
      if(n<=0)
      printf("			Input Error!
    ");
      for(i=1;i<=n;i++)
      {
        for(j=1;j<=n-1;j++)
        if(i==1||j==1||i==n)
          printf(" %c",m);    
        else
          printf(" ");
        printf(" %c
    ",m);
      }
    }
    
     
    
    //实心平行四边形 
    int Solid_parallelogram()
    {
      int i,j,k,n;
      char m;
      printf("Please enter the order number(请输入阶数):"); 
      scanf("%d",&n); 
      fflush(stdin);//清空缓存区 
      printf("Please enter the character(请输入字符):");
      scanf("%c",&m);
      if(n<=0)
        printf("			Input Error!
    ");
      for(i=1;i<=n;i++)
      {
        for(j=1;j<=n-i;j++)
        printf(" ");
        for(k=1;k<=n;k++)
          printf("%c",m);
        printf("
    ");
      }
    }
  • 相关阅读:
    Docker 容器间的单向连接
    使用 mysql 的 Docker 镜像
    Dockerfile 自动制作 Docker 镜像(三)—— 镜像的分层与 Dockerfile 的优化
    Dockerfile 自动制作 Docker 镜像(一)—— 基本命令
    在 Docker 的 CentOS7 镜像 中安装 mysql
    手动制作Docker镜像
    Docker容器基本命令注意点
    Linux基础15-Linux库函数
    Linux基础14-makefile
    Linux基础13-GDB调试
  • 原文地址:https://www.cnblogs.com/tenfly/p/11455687.html
Copyright © 2011-2022 走看看