C语言程序设计 文本作图ppt课件.ppt
C语言程序设计-文本作图,主讲:张建青,几点约定,在文本作图中,我们约定以下内容1、i-代表行2、j-代表列3、s-代表空格4、文本作图中的难点和重点在于寻找i、j、s之间的关系式和处理输出项目的表达式上,前者主要就是用i的表达式来表示j和s,后者主要是用i,j构成表达式,如果能顺利完成这两个目标,那么这类题型就不再是问题。,文本作图题程序的一般框架,文本作图题的程序一般有一个固定的框架,或者说程序设计的思路、模板。,for( ) for( ) printf(“ ”); for( ) printf(“*”); printf(“n”);,/*第一个循环代表行的变化*/,/*第二个循环代表每行开头的空格变化*/,/*第三个循环代表列的变化,或者说每行输出的内容*/,注 意,我们在这里给出一般框架只是为了初学方便些,并不意味着所有文本作图题都一定要依照这个框架,不要让这个框架限制我们的思维,文本作图的最终目标就是将图形输出,不管什么方法。,文本作图题型分类,一、矩形二、平行四边形三、直角三角形四、等腰三角形五、菱形六、其他图形,一、矩形,样图:,*,程序:,#include main() int i ,j; for(i=1;i=3;i+) for(j=1;j=5;j+) printf(“*”); printf(“n”); ,二、平行四边形,样图1:,* * *,分析:,程序:,#include main() int i ,j ,s; for(i=1;i=3;i+) for(s=1;s=i-1;s+) printf(“ ”); for(j=1;j=5;j+) printf(“*”); printf(“n”); ,样图2:,* *,程序:,#include #define M 3#define N 5main() int i ,j ,s; for(i=1;i=M;i+) for(s=1;s=6-2*i;s+) printf(“ ”); for(j=1;j=N;j+) printf(“*”); printf(“n”); ,二、平行四边形,三、直角三角形,样图1:,* * *,程序:,#include main() int i ,j; for(i=1;i=3;i+) for(j=1;j=2*i-1;j+) printf(“*”); printf(“n”); ,三、直角三角形,样图2:,* * * * *,程序:,#include main() int i ,j ,s; for(i=1;i=3;i+) for(s=1;s=5-i;s+) printf(“ ”); for(j=1;j=i;j+) printf(“*”); printf(“n”); ,四、等腰三角形,样图1:,*,程序:,#include main() int i ,j ,s; for(i=1;i=3;i+) for(s=1;s=3-i;s+) printf(“ ”); for(j=1;j=2*i-1;j+) printf(“*”); printf(“n”); ,四、等腰三角形,样图2:,*,程序:,#include main() int i ,j ,s; for(i=1;i=3;i+) for(s=1;s=i-1;s+) printf(“ ”); for(j=1;j=7-2*i;j+) printf(“*”); printf(“n”); ,五、菱形,样图:,*,程序:,#include #include main() int i ,j ,s; for(i=-2;i=2;i+) for(s=1;s=abs(i);s+) printf(“ ”); for(j=1;j=5-2*abs(i);j+) printf(“*”); printf(“n”); ,五、菱形变形图形,样图:,AAAAAAAAABBBB,程序1:,#include #include main() int i ,j ,s; for(i=-2;i=2;i+) for(s=1;s=abs(i);s+) printf(“ ”); for(j=1;j=5-2*abs(i);j+) printf(“%c”,(i+3)/4+65); printf(“n”); ,第2种解法,样图:,AAAAAAAAABBBB,程序2:,#include #include main() int i ,j ,s ,t; for(i=-2;i0) t=66; else t=65; for(j=1;j=5-2*abs(i);j+) printf(“%c”,t); printf(“n”); ,六、其他图形,程序:,#include #include main() int i ,j ,s; for(i=-3;i=3;i+) for(s=1;s=6-2*abs(i);s+) printf(“ ”); for(j=1;j=4-abs(i);j+) printf(“* ”); printf(“n”); ,样图,(每行的*之间空两格),练习题,*,第一题,第二题,1121123211211,答案,#include main() int i,j,s; for(i=1;i=6;i+) for(s=1;s=3-(i+1)/2;s+) printf( ); for(j=1;j=(i+1)/2)*2-1;j+) printf(*); printf(n); ,#include #include main() int i,j,s,t; for(i=-2;i=2;i+) for(s=1;s=abs(i);s+) printf( ); for(j=1;j=5-2*abs(i);j+) t=3-abs(i); printf(%d,t-abs(j-t); printf(n); ,第一题,第二题,