C语言-打印字符图形

C语言-打印字符图形


2024年4月16日发(作者:)

打印字符图形

例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 M数

1 1 1

2 2 2

3 3 3

4 4 4

10 10 10

所以,可以得到“输出第i行”的循环为:

for(j=1;j<=i;j++)

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

MMMMMMMMMMM

MMMMMMMMM

MMMMMMM

MMMMM

MMM

M

分析:该图形一共有10行,这次要考虑每行中,先输出若干个空格,所以,其外循

环为:

for( i=1;i<=10;i++){

输出若干个空格

输出若干M

换行

}

下面列出在第i行,其空格数,M数与i的关系为:

行i 空格数 M数

1 0 19

2 1 17

3 2 15

4 3 13

10 9 1

即第i行的空格数为i-1个,M个数为21-2i。即在第i行输出空格和输出M字符的

内循环分别为:

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 9 1

2 8 3

3 7 5

4 6 7

10 0 19

即第i行的空格数据为10-i个,字符数为2i-1。因此,输出空格数和字符数的内循环

分别为:

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");

}

}


发布者:admin,转转请注明出处:http://www.yc00.com/web/1713245953a2211126.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信