资源描述:
《基于字符图案的打印》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、基于字符*图案的打印李怀鹏200523501515051-5机电学院(一)题目要求: * * *** *** ***** ***** ******* **************** ********* ******* ******* ***** ***** *** *** * * 分析上述图案,提取基于图案的生成关键参数,而后进行编程。对于不同的参数值,生成的图案的形状是一致的。设计要求: 可直接输出到屏幕上或标准输出设备上
2、; 也可通过运算保存在内存空间中,然后再进行显示;内存使用上,可采用数组,也可使用指针,或其他方式。 图案大小,最大基于当前设备的输出大小。 上面的图案只是其中的一个,在设计成功后,应考虑其通用性,即事先给出任何一个图案,应用给出的程序都能完成多行多列的输出。具体要求: 图案:是一个矩形区域,可将其放入一个图案文件中; 提供操作:可设置行列多个图案的显示;对于图案可进行简单的变换,如水平、垂直反转,可绕中心点做90,180,270,360度旋转,根据各种变换后的图案生成新的图案。(二)系统分析画出以*
3、组成的向上与向下的正三角形(paint,paint1),只需一个双重循环就行了。 画向左与向右的正三角形(paint2,paint3),需要两个双重循环。画菱形(panint4)也需要两个双重循环。定义全局变量size,控制图形大小一致。比较麻烦的是复制菱形,这需要用到gotoxy()这个函数。将paint4改一下,设置全局变量locx,locy在原来每次的换行,改成光标移至下一行的适当位置。设置前景色、背景色。(三)源代码#include"stdio.h"#include"stdlib.h"/*定义四个全局变量
4、,分别控制输出状态、光标位置及图形大小*/intsta,locx,locy,size;/*定义两个全局变量,分别控制复制次数、能否复制*/intc=1,cancopy=0;/*画正三角形*/voidcpaint(intn){inti,j,k;for(i=1;i<=n;i++){for(j=1;j<=n-i;j++){printf("");}for(k=1;k<=2*i-1;k++){printf("*");}printf("");}}voidpaint(intn){voidsubtitle();voiddoe
5、r();subtitle();cpaint(size);sta=0;c=1;cancopy=0;doer();}/*翻转*/voidcpaint1(intn){inti,j,k;for(i=1;i<=n;i++){for(j=1;j<=i-1;j++){printf("");}for(k=1;k<=2*(n-i+1)-1;k++){printf("*");}printf("");}}voidpaint1(intn){voidsubtitle();voiddoer();subtitle();cpaint1(si
6、ze);sta=1;c=1;cancopy=0;doer();}/*右转*/voidcpaint2(intn){inti,j,k;for(i=1;i<=n;i++){for(j=1;j<=i;j++){printf("*");}printf("");}for(i=n-1;i>=1;i--){for(k=1;k<=i;k++){printf("*");}printf("");}}voidpaint2(intn){voidsubtitle();voiddoer();subtitle();cpaint2(siz
7、e);sta=2;c=1;cancopy=0;doer();}/*左转*/voidcpaint3(intn){inti,j,k;for(i=1;i<=n;i++){for(j=1;j<=n-i;j++){printf("");}for(k=1;k<=i;k++){printf("*");}printf("");}for(i=n-1;i>=1;i--){for(j=1;j<=n-i;j++){printf("");}for(k=1;k<=i;k++){printf("*");}printf("");}}vo
8、idpaint3(intn){voidsubtitle();voiddoer();subtitle();cpaint3(size);sta=3;c=1;cancopy=0;doer();}/*合并后的菱形*/voidcpaint4(intn){inti,j,k;for(i=1;i<=n;i++){for(j=1;j<=n-i;j++){printf("");}for(k=