#include<stdio.h>#include<string.h>#include<math.h>void welcome();void zfx();void cfx();void sjx();void jzt();void xjzt(int x,int y,int z);int getScanfValue(char *x ,int y);   /*输入合法性检查函数*/void welcome() {int c,s;char scanft[30];printf("请选择你想要绘制的图形,并输入其对应的数值\n\n");printf("[1]正方形\n[2]长方形\n[3]三角形\n[4]金字塔\n");fflush(stdin);while(1){while(1){printf("请选择要绘制的图形:");gets(scanft);s=strlen(scanft);c=getScanfValue(scanft,s);if(c!=(-10))break;}if(c>0&&c<5)break;printf("选择错误,请重新选择!\n");}switch (c) {case 1:printf("您将绘制的是正方形\n");zfx();break;case 2:printf("您将绘制的是长方形\n");cfx();break;case 3:printf("您将绘制的是等腰直角三角形\n");sjx();break;case 4:printf("您将绘制的是金字塔\n");jzt();break;default :welcome();}}void zfx()/*绘制正方形*/{int s;char scanft[30];int ch;int m,n;int length,thickness;/*图形属性*/char c[100][100];char a = '#',b = ' ';/*字符类型*/fflush(stdin);while(1){while(1){printf("请输入边长:");gets(scanft);s=strlen(scanft);length=getScanfValue(scanft,s);if(length!=-(10))break;}while(1){printf("请输入厚度:");gets(scanft);s=strlen(scanft);thickness=getScanfValue(scanft,s);if(thickness!=-10)break;}if (thickness<=0.5 * length&&thickness>0&&length>0)/*对输入值进行判断,过滤部分非法输入*/break;printf("输入错误,请重新输入!\n");}for (m = 1; m <= length; m++) {for (n = 1; n <= length; n++)if (m > thickness && m <= length - thickness && n > thickness && n <= length - thickness)/*输出空格,空格处于(边长-厚度)之间,即对正方形进行挖空处理*/c[m][n] = b;elsec[m][n] = a;}printf("开始绘制图形:   \n\n");for (m = 1; m <= length; m++) {for (n = 1; n <= length; n++)printf("%c", c[m][n]);printf("\n");}printf("\n--图形绘制成功!\n");printf("请选择重新绘制或者退回主界面!:");printf("\n[1]重新绘制\n[2]返回主界面重新选择\n");fflush(stdin);while(1){while(1){printf("请选择要继续进行的操作:");gets(scanft);s=strlen(scanft);ch=getScanfValue(scanft,s);if(ch!=(-10))break;}if(ch>0&&ch<3)break;printf("选择错误,请重新选择!\n");}switch (ch) {case 1:printf("您将重新绘制正方形\n");zfx();break;case 2:welcome();break;}}void cfx()/*绘制长方形,代码原理同上*/{int ch;int s;char scanft[30];int length,width,thickness;int m,n;char c[100][100];char a = '#',b = ' ';while(1){fflush(stdin);while(1){printf("请输入长度:");gets(scanft);s=strlen(scanft);length=getScanfValue(scanft,s);if(length!=-(10))break;}while(1){printf("请输入宽度:");gets(scanft);s=strlen(scanft);width=getScanfValue(scanft,s);if(width!=-(10))break;}while(1){printf("请输入厚度:");gets(scanft);s=strlen(scanft);thickness=getScanfValue(scanft,s);if(thickness!=-10)break;}if (length != width && thickness <= 0.5 * length && thickness <=0.5 * width&&length>0&&width>0&&thickness>0)break;printf("输入错误,请重新输入!\n");}for (m = 1; m <= width; m++) {for (n = 1; n <= length; n++)if (m > thickness && m <= width - thickness && n > thickness && n <= length - thickness)c[m][n] = b;elsec[m][n] = a;}printf("开始绘制图形:   \n\n");for (m = 1; m <= width; m++) {for (n = 1; n <= length; n++)printf("%c", c[m][n]);printf("\n");}printf("\n--图形绘制成功!\n");printf("请选择重新绘制或者退回主界面!:");printf("\n[1]重新绘制\n[2]返回主界面重新选择\n");fflush(stdin);while(1){while(1){printf("请选择要继续进行的操作:");gets(scanft);s=strlen(scanft);ch=getScanfValue(scanft,s);if(ch!=(-10))break;}if(ch>0&&ch<3)break;printf("选择错误,请重新选择!\n");}switch (ch) {case 1:printf("您将重新绘制长方形\n");cfx();break;case 2:welcome();break;}}void sjx()/*绘制等腰直角三角形*/{int ch;int s;char scanft[30];int length,thickness;                 /*图形属性*/int m,n;                    /*画图属性*/char c[100][100];char a = '#',b = ' ';                   /*字符类型*/fflush(stdin);while(1){while(1){printf("请输入直角边长:");gets(scanft);s=strlen(scanft);length=getScanfValue(scanft,s);if(length!=-(10))break;}while(1){printf("请输入厚度:");gets(scanft);s=strlen(scanft);thickness=getScanfValue(scanft,s);if(thickness!=-10)break;}if (thickness < 0.5 * length + 1&&length>0&&thickness>0)break;printf("输入错误,请重新输入!\n");}for (m = 1; m <= length; m++) {for (n = 1; n <= m; n++)if (m > 2 * thickness && m <= length - thickness /*对空格所处的行进行判断*/&& n > thickness && n <= m - thickness/*对空格所处的列进行判断*/)c[m][n] = b;elsec[m][n] = a;}printf("开始绘制图形:   \n\n");for (m = 1; m <= length; m++) {for (n = 1; n <= m; n++)printf("%c", c[m][n]);printf("\n");}printf("\n--图形绘制成功!\n");printf("请选择重新绘制或者退回主界面!:");printf("\n[1]重新绘制\n[2]返回主界面重新选择\n");fflush(stdin);while(1){while(1){printf("请选择要继续进行的操作:");gets(scanft);s=strlen(scanft);ch=getScanfValue(scanft,s);if(ch!=(-10))break;}if(ch>0&&ch<3)break;printf("选择错误,请重新选择!\n");}switch (ch) {case 1:printf("您将重新绘制等腰直角三角形\n");sjx();break;case 2:welcome();break;}}void jzt(){ /*多层金字塔的叠加输出*/int i;int s;char scanft[30];int a,c,ch;while(1){while(1){printf("请输入每层的高度:");gets(scanft);s=strlen(scanft);a=getScanfValue(scanft,s);if(a!=-(10))break;}while(1){printf("请输入所要打印的层数:");gets(scanft);s=strlen(scanft);c=getScanfValue(scanft,s);if(c!=-10)break;}if (a>0&&c>0)/*对输入值进行判断,过滤部分非法输入*/break;printf("输入错误,请重新输入!\n");}printf("开始绘制图形:   \n");for(i=1;i<=c;i++){xjzt(a,i,c-i);/*(c-a)为层数前空格的反序输出,即每层小金字塔数量与每层前的空格数量互相作用,此消彼长*/printf("\n");} /*调用每层金字塔,并将高度,层数传导至xjzt();*/printf("\n--图形绘制成功!\n");printf("请选择重新绘制或者退回主界面!:");printf("\n[1]重新绘制\n[2]返回主界面重新选择\n");fflush(stdin);while(1){while(1){printf("请选择要继续进行的操作:");gets(scanft);s=strlen(scanft);ch=getScanfValue(scanft,s);if(ch!=(-10))break;}if(ch>0&&ch<3)break;printf("选择错误,请重新选择!\n");}switch (ch) {case 1:printf("您将重新绘制金字塔\n");jzt();break;case 2:welcome();break;}}void xjzt(int x,int y,int z){char a='/';char b='\\';char c='-';int m,n,t;int i,j,k,p,q;m=x,n=y,t=z;for(i=m-1;i>=0;i--){for(j=0;j<m*t;j++){printf(" ");}/*每层金字塔前输出对应的空格*/for(k=n;k>0;k--){for(p=(2*m-1);p>=0;p--){if(p==i)printf("%c",b);else if(p==(2*m-1-i))printf("%c",a);elseprintf(" ");}}/*输出每层对应的金字塔组成元素,按行输出,每行输出相应层数的金字塔个数对应的符号数量与位置*/printf("\n");}for(q=0;q<m*t;q++){printf(" ");}for(i=0;i<m*n;i++){printf("%c%c",c,c);}/*每层输出后,底部输出底纹,组成一个完整的金字塔*/}int getScanfValue(char *scanft ,int t){int i;int counter=0;int num=0,scanftn;int power;for(i=0;i<t;i++){if(scanft[i]>47&&scanft[i]<58){counter=i;}else if(((scanft[i]>31&&scanft[i]<48))||((scanft[i]>57&&scanft[i]<65))||((scanft[i]>90&&scanft[i]<97))||((scanft[i]>122&&scanft[i]<128))||(scanft[i]>128)||(scanft[i]<0)){printf("输入的值中含有特殊符号字符,请重新输入!\n");i=100;counter=100;}else if((scanft[i]>64&&scanft[i]<91)||(scanft[i]>96&&scanft[i]<123)){printf("输入的值中含有大小写字母,请重新输入!\n");i=100;counter=100;}else{printf("输入错误,请重新输入!\n");i=100;counter=100;}}if(counter==t-1){power=t-1;for(i=0;i<t;i++){scanftn=scanft[i]-48;num=num+scanftn*pow(10,power);power--;}return num;}else{return -10;}}int main() {printf("\n**************欢迎进入字符图形自动绘制系统!************************\n\n\n\n");welcome();return 0;}/*copyright@xzx*/

自动生成矩形,三角形,金字塔

字符图形自动生成(C语言)相关推荐

  1. c语言创建可视化窗口,一种基于可视化界面绘制图形自动生成C语言代码软件的设计与实现...

    第 35 卷第 9 期 计算机应用与软件 Vol. 35 No. 9 2018 年 9 月 Computer Applications and Software Sep. 2018 一种基于可视化界面 ...

  2. Wix 安装部署教程(十六) -- 自动生成多语言文件

    Wix 安装部署教程(十六) -- 自动生成多语言文件 原文:Wix 安装部署教程(十六) -- 自动生成多语言文件 因为持续集成需要,所有项目编译完之后生成一个多语言的安装包.之前生成mst文件都是 ...

  3. 利用Flex自动生成C语言词法分析器

    利用Flex自动生成C语言词法分析器 Flex介绍 C语言词法规则 具体实现 源代码 测试代码 实验结果 Flex介绍   1975年Mike Lesk和实习生Eric Schmidt设计并实现了一个 ...

  4. Matlab的Simulink【连续模型离散化】代码自动生成C语言(简明教程)

    本文详细介绍了simulink连续模型离散化,代码生成以及最终运行到VS2010环境的详细过程,希望对大家有帮助. 第一步 打开模型 首先我们要确保模型仿真是正确的,即能够正常仿真. 第二步 将输入和 ...

  5. nodejs html多语言切换,利用 nodejs 自动生成 Android 语言包实现应用内切换多语言的方案...

    Android 默认的多语言支持 在 Android 工程的 res 目录下,通过定义对应的语言文件夹名称就可以实现多语言支持 // 手动切换语言 Resources resources = getR ...

  6. python生成字符图形_python生成汉字图片字库

    最近做文档识别方面的项目,做汉字识别需要建立字库,在网上找了各种OCR,感觉都不好,这方面的技术应该比较成熟了,OCR的软件很多,但没有找到几篇有含金量量的论文,也没有看到哪位大牛公开字库,我用pyg ...

  7. 画表格自动生成html语言,HTML——绘制表格-Go语言中文社区

    在 HTML 的语法中,在表格中一般通过3个标签来构建,分别为表格标签.行标签和单元格标签.其中表格标签为 ,表格的其他各种属性都要写在表格的开始标签之间才有效. 1.设置表格标题 在表格中可以通过 ...

  8. Dataset之图片数据增强:设计自动生成(高级封装之命令行解析实现)汽车车牌图片算法(cv2+PIL+argparse)根据随机指定七个字符自动生成逼真车牌图片数据集(带各种噪声效果)

    Dataset之图片数据增强:设计自动生成(高级封装之命令行解析实现)汽车车牌图片算法(cv2+PIL+argparse)根据随机指定七个字符自动生成逼真车牌图片数据集(带各种噪声效果) 导读 设计自 ...

  9. 命题公式的主合取范式C语言,命题公式主范式的自动生成与形式输出.pdf

    收稿日期 2006 04 19 作者简介 张会凌 1954 男 甘肃成县人 甘肃联合大学数学与信息学院副教授 主要从事微分几何与计算机方面 的研究 文章编号 1672 691X 2006 05 004 ...

  10. 【R语言】可视化:ggplot代码的自动生成

    [R语言]可视化:ggplot代码的自动生成 前言: 准备 1. 设置 Settings 2. 面板和背景 Panel & Backgroud 3. 坐标轴 Axis 4. 标题与标签 Tit ...

最新文章

  1. AVR 又一个网址推荐
  2. 翻译器DIY它———算在英文文本中的单词数,字符和行数
  3. 深度 | 容器规模化落地企业的最佳途径
  4. Python__数据结构与算法——图
  5. 关于python的单线程和多线程
  6. flutter输入框TextField中文本textAlign对齐分析篇
  7. 获取系统当前时间(多语言版)
  8. RBF(径向基)神经网络
  9. python编辑器是什么_python开发用什么编辑器
  10. 韦东山linux学习之ubuntu 9.10 软件源 问题
  11. 【ORACLE】字符串操作 B字符串时A的一部分
  12. 电脑上查看自己连接的WIFI密码
  13. java中math是什么意思,java中的Math种
  14. 操作系统 实时调度
  15. 怎样保护个人信息安全建议?
  16. ieee 802.3学习笔记-MII
  17. GNN手写字体识别java_深度之眼Paper带读笔记GNN.09.GGNN
  18. 独立性权重指标怎么计算?
  19. 技术赋能数字经济释放巨大潜力
  20. linux7网口起不来,centos7 双网口绑定

热门文章

  1. 编写程序模拟用户输入手机号码、邮箱号码、座机号码,验证格式是否正确并给出提示,直到格式输入正确为止
  2. 关于windows11麦克风声音小的一个bug
  3. VTK_Learning_频域处理_快速傅里叶变换及其反变换
  4. JavaScript中 new 一个对象过程详解
  5. 他们说用计算机伴奏,用Cubase/Nuendo来消除人声提取伴奏 | 飞来音电脑音乐技术...
  6. CoolEdit制作伴奏方法 去除人声
  7. cookie的工作原理
  8. 在MAC OSX系统中删除、添加、恢复、管理launchpad的STEAM游戏图标
  9. Scade Suite开发 ARINC 661 (2)Scade Suite基本操作
  10. MySQL面试题常见知识点总结