今天翻资料的时候,无意间发现了一个文件,是刚接触编程的时候用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(" "); } }