今天翻资料的时候,无意间发现了一个文件,是刚接触编程的时候用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()
  {
    menu();
    printf("Please select a funcyion:");
    scanf("%d",&n);
    switch(n)
    {
      case :Statement();break;
      case :Solid_diamond();break;
      case :Hollow_triangle();break;
      case :Cross();break;
      case :Hollow_square();break;
      case :Solid_parallelogram();break;
      case :exit();break;
    }
    if(n<||n>)
      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<=)
  printf("\t\t\tInput Error!\n");
  for(i=;i<=n;i++)
  {
    for(j=;j<=n-i;j++)
    printf(" ");
    for(j=;j<=*i-;j++)
    printf("%c",m);
    printf("\n");
  }
  /*首先打n-1个空格后面接星号,随后空格逐渐减少,星号以2*1形式增加,
  只打印了左边部分的空格 ,右边空格未打印。
  打印出最大阶数*/
  for(i=;i<=n-;i++)
  {
    for(j=;j<=i;j++)
    printf(" ");
    for(j=;j<*(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<=)
  printf("\t\t\tInput Error!\n");
  for(i=;i<n+;i++)
  {
    for(j=;j<*n;j++)
    {
    if(j==n-i+||j==i+n-||i==n&&j%==)
      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<=)
  printf("\t\t\tInput Error!\n");
  for(i=;i<=n;i++)
  {
    for(j=;j<=n;j++)
    {
      if(j==n||i==(n+)/)
      /*按正常情况这是错的,应该是(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<=)
  printf("\t\t\tInput Error!\n");
  for(i=;i<=n;i++)
  {
    for(j=;j<=n-;j++)
    if(i==||j==||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<=)
    printf("\t\t\tInput Error!\n");
  for(i=;i<=n;i++)
  {
    for(j=;j<=n-i;j++)
    printf(" ");
    for(k=;k<=n;k++)
      printf("%c",m);
    printf("\n");
  }
}

c++打印实心菱形,空心三角形,十字星,空心正方形,实心平行四边形的更多相关文章

  1. java中打印实心菱形以及空心菱形的方法

    一.打印效果 二.实现代码汇总 为了方便初学者对代码的理解,建议熟练t1到t5为各种三角的打印,然后再进行菱形的打印实现. package circulationDemo; import java.u ...

  2. Java 写三角形 空心三角形 菱形 空心菱形

    闲来无事,练习了一下Java基础中的循环语句.练习循环语句,当然少不了,用*打印出来三角形.空心三角形.菱形等这样的几何图形. 粗心大意,失误两次: 一.三角形 遇到一些小问题: 二.金字塔 由于三角 ...

  3. 纯 CSS 实现实心三角形和空心三角形

    一.实心三角形 1.代码 .div-angles{ width:; height:; border-style: solid; border-width:30px; border-color: tra ...

  4. 纯CSS制作空心三角形和实心三角形及其实现原理

    纯CSS制作空心三角形和实心三角形及其实现原理 在一次项目中需要使用到空心三角形,我瞬间懵逼了.查阅了一些资料加上自己的分析思考,终于是达到了效果,个人感觉制作三角形是使用频率很高的,因此记录下来,供 ...

  5. html5 css写出一个实心三角形和空心三角行

    原理:css中的border属性的特殊性. 实心三角形: html5: <div id="mydiv"></div> css: #mydiv{ height ...

  6. hdu 2091 空心三角形

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2091 空心三角形 Description 把一个字符三角形掏空,就能节省材料成本,减轻重量,但关键是为 ...

  7. hdoj 2091 空心三角形

    空心三角形 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  8. CSS画一个三角形,CSS绘制空心三角形,CSS实现箭头

     壹 ❀ 引 这两天因为项目工作较少,闲下来去看了GitHub上关于面试题日更收录的文章,毕竟明年有新的打算.在CSS收录中有一题是 用css创建一个三角形,并简述原理 .当然对于我来说画一个三角形是 ...

  9. css 三角形空心三角形的简单实现

    <style> #talkbubble { width: 120px; height: 80px; position: relative; -moz-border-radius: 10px ...

随机推荐

  1. 微信小程序到底把什么定义为风险内容?

    目录 起因 经过和结果 附录: 起因 之前做一个群相册的小程序,因为涉及到图片和评论等内容的发布分享.因此,微信后台要求有一定的内容安全检测能力. 但是,我用别家的内容检测用的好好的,在国庆前被微信警 ...

  2. MySQL数据物理备份之lvm快照

    使用lvm快照实现物理备份 优点: 几乎是热备(创建快照前把表上锁,创建完后立即释放) 支持所有存储引擎 备份速度快 无需使用昂贵的商业软件(它是操作系统级别的) 缺点: 可能需要跨部门协调(使用操作 ...

  3. matplotlib 自带的几种美化样式

    1.用 matplotlib.pyplot.style.avaliable 可查看 matplotlib 自带的美化样式如下: ['bmh', 'classic', 'dark_background' ...

  4. Fiddler抓包设置

    介绍 Fiddler 在 PC 端和移动端,模拟器抓取数据包 Fiddler抓取PC端数据包: 这里 Fiddler 抓取网页客户端的数据包时,其原理就是在 客户端/浏览器 和 服务器端 之间,加上了 ...

  5. 等了半年的AMD锐龙3000系列台式机处理器今天终于上市开卖了!

    第三代AMD锐龙台式机处理器参数:

  6. VMware下安装Ubuntu虚拟机

    ubuntu系统是以桌面应用为主的.当下最火的linux操作系统,具有实用的界面,并且完全免费. 在Ubuntu的 Linux 世界里,已经不再只是简陋的界面+命令行,而是一款华丽时尚且无比实用的操作 ...

  7. bzoj2187 fraction&&hdu3637 Find a Fraction——类欧几里得

    bzoj2187 多组询问,每次给出 $a, b, c, d$,求满足 $\frac{a}{b}  < \frac{p}{q} < \frac{c}{d}$ 的所有二元组 $(p, q)$ ...

  8. dfs與bfs常用模板

    基本遍歷: //dfs void dfs(int x) { v[x]=1; for(int i=head[x];i;i=next[i]) { int y=ver[i]; if(v[y]) contin ...

  9. 窗体的keyPreview属性

    如果把窗体的keyPreview属性设置为true,那么窗体将比其内的控件优先获得键盘事件的激活权.比如Form1和其内的文本框Text1都准备响应keyPress事件,那么以下代码将首先激活窗体的k ...

  10. centos虚拟机扩展磁盘空间(经历无数坑,血一样总结,史上最全)

    第一步 在vmware中将虚拟机关机后,鼠标右键设置,直接点击扩展加自己想要扩展的数量就可以了,这个比较简单不多说. 2 第二步 设置后进系统查看空间大小变化,实际并没有什么变化,我用的命令是df - ...