logo资料库

C语言打印字符图形.doc

第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
资料共4页,全文预览结束
打印字符图形 例 1 用 for 循环编程画出下列图形: M MM MMM MMMM MMMMM MMMMMM MMMMMMM MMMMMMMM MMMMMMMMM MMMMMMMMMM 分析:该图形一共有 10 行,每一行增加一个字符,所以,应循环 10 次,每次输出一行, 其循环模式为: for( i=1;i<=10;i++){ 输出第 i 行 换行 } “输出第 i 行”是在 for 循环中的一个小循环。每次执行“输出第 i 行”,其长度都是 不一样的,但长度的变化正好与循环变量 i 同步,故可以依赖于 i。注意到第 i 行的 M 字符 数与 i 的关系。 i 1 2 3 4 M 数 1 2 3 4 行 1 2 3 4 … 10 所以,可以得到“输出第 i 行”的循环为: for(j=1;j<=i;j++) 10 10 printf(“%c”,’M’) 完整的程序如下: #include main(){ int i,j; for(i=1;i<=10;i++){ for(j=1;j<=i;j++) printf("%c",'M'); printf("\n"); } } 说明:对付这种字符图形,一般用两重循环,外循环遍历所有行,内循环遍历行中每 个字符。 例 2 输出下列图形: MMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMM MMMMMMMMMMMMM MMM M MMMMMMMMMMM MMMMMMMMM MMMMMMM MMMMM
分析:该图形一共有 10 行,这次要考虑每行中,先输出若干个空格,所以,其外循环 为: for( i=1;i<=10;i++){ 输出若干个空格 输出若干 M 换行 空格数 } 下面列出在第 i 行,其空格数,M 数与 i 的关系为: 行 i 1 2 3 4 … 10 即第 i 行的空格数为 i-1 个,M 个数为 21-2i。即在第 i 行输出空格和输出 M 字符的内 M 数 19 17 15 13 0 1 2 3 9 1 循环分别为: for(j=1;j<=i-1;j++) printf(“ ”); for(k=1;k<=21-2i;k++) printf(“%c”,’M’); 合起来,构成一个完整程序如下: #include main() { int i,j,k; for(i=1;i<=10;i++) { for(j=1;j<=i-1;j++) printf(" "); for(k=1;k<=21-2*i;k++) printf("%c",'M'); printf("\n"); } } 例 3 输出下列图形: A ABC ABCDE ABCDEFG ABCDEFGHI ABCDEFGHIJK ABCDEFGHIJKLM ABCDEFGHIJKLMNO ABCDEFGHIJKLMNOPQ ABCDEFGHIJKLMNOPQRS 分析:该图形一共有 10 行,这次要考虑每行中,先输出若干个空格,所以,其外循环 为: for( i=1;i<=10;i++){ 输出若干个空格 输出若干字符 换行
} 如果要输出 A 起头依序的 n(n<27)个字母,可以为: for(ch='A';ch<'A'+n;++ch) printf("%c",ch); 空格数 下面分析每一行中的空格数与字符数与第 i 行之间的关系着手: 行 i 1 2 3 4 … 10 即第 i 行的空格数据为 10-i 个,字符数为 2i-1。因此,输出空格数和字符数的内循环 字符数 1 3 5 7 9 8 7 6 0 19 分别为: for(j=1;j<=10-i;++j) /*输出空格数*/ printf(" "); for(ch='A';ch<'A'+2*i-1;++ch) printf("%c",ch); 合起来,构成一个完整程序如下: #include main() { int i,j; char ch; for(i=1;i<=10;i++) { for(j=1;j<=10-i;++j) /*输出空格数*/ printf(" "); for(ch='A';ch<'A'+2*i-1;++ch) /*输出字符*/ printf("%c",ch); printf("\n"); } } 例 4 输出下列图形: * *** ***** ******* ***** *** * 上面的图形可以分成两部分: (1) * *** ***** ******* 与例 3 的分析一样,输出空格数和字符数的内循环分别为: for(j=1;j<=4-i;++j) /*输出空格数*/ printf(" "); for(k=1;k<=2*i-1;++k) /*输出“*”号*/ printf("*");
(2) ***** *** * 与例 2 的分析一样,输出空格数和字符数的内循环分别为: for(j=1;j<=i;++j) /*输出空格数*/ printf(" "); for(k=1;k<=7-2*i;++k) /*输出“*”号*/ printf("*"); 合起来,构成一个完整程序如下: #include main() { int i,j,k; for(i=1;i<=4;i++) { for(j=1;j<=4-i;++j) /*输出空格数*/ printf(" "); for(k=1;k<=2*i-1;++k) /*输出“*”号*/ printf("*"); printf("\n"); } for(i=1;i<=3;i++) { for(j=1;j<=i;++j) /*输出空格数*/ printf(" "); for(k=1;k<=7-2*i;++k) /*输出“*”号*/ printf("*"); printf("\n"); } }
分享到:
收藏