关于输入环状图形的三种方法

来源:本站
导读:目前正在解读《关于输入环状图形的三种方法》的相关信息,《关于输入环状图形的三种方法》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《关于输入环状图形的三种方法》的详细说明。
简介:关于输入环状图形的三种方法,我找到了两种不同形式的思路,一种是以输出行数为标准,一种是以圈数为标准,各有优点,而且对编辑类似图形有启发.

输出如下图形:

A A A A A A A A A A A A A

A B B B B B B B B B B B A

A B C C C C C C C C C B A

A B C D D D D D D D C B A

A B C D E E E E E D C B A

A B C D E F F F E D C B A

A B C D E F G F E D C B A

A B C D E F F F E D C B A

A B C D E E E E E D C B A

A B C D D D D D D D C B A

A B C C C C C C C C C B A

A B B B B B B B B B B B A

A A A A A A A A A A A A A

我找到了两种不同形式的思路,一种是以输出行数为标准,一种是以圈数为标准,各有优点,而且对编辑类似图形有启发.

第一种,以输出行数为标准,用户输入想输出的行数,利用该位置是否已被占和是否为边界位置进行双重判定,满足条件则将该位置存入数组,最后输出数组.源代码如下:

#include<stdio.h>

#include<stdlib.h>

int main (void)

{

FILE *fp;

int i, sum, total, row, line;/*sum表示总的圈数*/

char ch;

char count[80][80];

puts("Enter the total of row: ");

scanf("%d",&total);

for(row=1; row<=total; row++)

for(line=1; line<=total; line++)

count[row][line]=0 ;

if(total%2 == 0)/*根据输入数据的奇偶性,确定圈数*/

sum=total/2;

else

sum=total/2+1;

for(ch=65,i=1; i<=sum; i++,ch++)/*sum表示总的圈数*/

for(row=1; row<=total; row++)

for(line=1; line<=total; line++)

if (0 == count[row][line])/*该位置是否已被占*/

if( row == i || row ==(total-i+1) || line == i || line == (total-i+1) )/*是否为边界位置*/

count[row][line]=ch;

if ( (fp=fopen("sdas.txt","w")) == NULL)

{

fprintf(stderr,"nError opening file n");

exit(1);

}

for(row=1; row<=total; row++)/*输出数组(即图案)*/

{

for(line=1; line<=total; line++)

{

fprintf(fp, "%c ", count[row][line]);

fprintf(stdout, "%c ", count[row][line]);

}

fprintf(fp, "n");

fprintf(stdout, "n");

}

system("pause");

return 0;

}

第二种,以输出圈数为标准,用户输入想输出的圈数,利用循环语句分别输出上下左右四条边,注重每个圈往里缩一个位置.源代码如下:(注:头文件和输出语句相同)

int main (void)

{

FILE *fp;

int i, total, row, line;

char ch;

char count[80][80];

puts("Enter the total of rings: ");

scanf("%d",&total);

ch=65;

for( i=1; i<=total; i++)/*利用循环语句分别输出上下左右四条边,注重每个圈往里缩一个位置*/

{

for(row=i, line=i; line<=2*total-i; line++)

count[row][line]=ch;

for(row=2*total-i, line=i; line<=2*total-i; line++)

count[row][line]=ch;

for(row=i, line=i; row<=2*total-i; row++)

count[row][line]=ch;

for(line=2*total-i, row=i; row<=2*total-i; row++)

count[row][line]=ch;

ch++;

}

第三种,综合前两种的优点,综合利用循环语句和判定语句输出上下左右四条边,注重每个圈往里缩一个位置.

源代码如下:(注:多数和第二种相同,只输出改编部分)

for( i=1; i<=total; i++)/*利用判定语句输出上下左右四条边,注重每个圈往里缩一个位置*/

{

for(row=i; row<=2*total-i; row++)

for(line=i; line<=2*total-i; line++)

if(row == i || row == 2*total-i || line == i || line == 2*total-i)

count[row][line]=ch;

ch++;

}

呵呵,一点心得,和各位网友分享,假如你能从中得到一点启发,将是我莫大的骄傲!

提醒:《关于输入环状图形的三种方法》最后刷新时间 2024-03-14 01:01:02,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《关于输入环状图形的三种方法》该内容的真实性请自行鉴别。