欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

c++打印实心菱形,空心三角形,十字星,空心正方形,实心平行四边形

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

今天翻资料的时候,无意间发现了一个文件,是刚接触编程的时候用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("\t\t\t欢迎体验1.0版本图形打印机\n\n\n");
  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("\t\t\t---input error!---\n\n\n");
  }
}


//声明界面
void statement()
{
  printf("\n\n\n");
  printf("1---because the interface is too small,so,please enter a number less than 20\n");
  printf(" (因为界面太小,所以请输入小于20的数以便观察)\n");
  printf("2---the current version only supports the english language\n");
  printf(" (因为目前水平有限,所以只支持英文模式)\n");
  printf("3---if you find problem,please contact me in time,tkank you\n");
  printf(" (如果你在使用过程中发现问题,请及时联系我,谢谢)\n\n\n");
}

 

//菜单界面
void menu()
{
  printf("\n\n\n");
  printf("\t\t\t1---statement(使用声明)\n");
  printf("\t\t\t2---solid diamond(实心菱形)\n");
  printf("\t\t\t3---hollow triangle(空心三角形)\n");
  printf("\t\t\t4---cross(十字形)\n");
  printf("\t\t\t5---hollow_square(空心正方形)\n");
  printf("\t\t\t6---solid_parallelogram(实心平行四边形)\n");
  printf("\t\t\t0---exit the program(退出程序)\n\n\n");
  printf("important:《only support english》\n\n\n");
}

 

 

//实心菱形
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("\t\t\tinput error!\n");
  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");
  }
  /*首先打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("\n");
  }
  //仿照上式,逆序打印,只是要注意要比上式少一阶
}

 

//空心三角形
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("\t\t\tinput error!\n");
  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("\n");
  }
}

 

//十字形
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("\t\t\tinput error!\n");
  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("\n");
  }
}

  

//空心正方形
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("\t\t\tinput error!\n");
  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\n",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("\t\t\tinput error!\n");
  for(i=1;i<=n;i++)
  {
    for(j=1;j<=n-i;j++)
    printf(" ");
    for(k=1;k<=n;k++)
      printf("%c",m);
    printf("\n");
  }
}