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("\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");
  }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM