Hzu挑战自我


私信TA

用户名:gxhzxyjsj

访问量:98834

签 名:

2024终究会过去,期待2025!

等  级
排  名 8
经  验 27865
参赛次数 67
文章发表 157
年  龄 0
在职情况 教师
学  校 贺州学院
专  业 软件工程

  自我简介:

弱鸡一个,继续努力!

解题思路:看下图(3层的图形),可以看出规律。最中间的是一个十字架。外层由3个封闭的框围起来。

一个框可以分成以下部分:上下两边,左右两边,左上角,右上角,左下角,右下角。

按照这个思路一层层写程序即可。

1.png




参考代码:

#include <stdio.h>
#include <string.h>
char s[250][250];
int main()
{ 
	int i,j,k,n;
	int m;
	memset(s,'.',sizeof(s));  //全部赋值为. 
	scanf("%d",&n);
	m=4*n+5;   //n层对应的行数和列数 
	k=2; i=0; 
	while(n--)  //n层 
	{
		for(j=k;j<m-k;j++)
		{ 
			s[i][j]=s[m-1-i][j]='$'; //上下两边 
			s[j][i]=s[j][m-1-i]='$'; //左右两边 
		}
		s[k][k]=s[k][k-1]=s[k-1][k]='$'; //左上角
		s[k][m-1-k]=s[k][m-1-(k-1)]=s[k-1][m-1-k]='$'; //右上角 
		s[m-1-k][k]=s[m-1-k][k-1]=s[m-1-(k-1)][k]='$'; //左下角 
		s[m-1-k][m-1-k]=s[m-1-k][m-1-(k-1)]=s[m-1-(k-1)][m-1-k]='$'; //右下角 		
		k=k+2;
		i=i+2;	
	}
	i=j=m/2;
	for(k=1;k<=2;k++)  //中间的十字架 
	{
		s[i][j]='$';
		s[i-k][j]=s[i+k][j]='$';
		s[i][j-k]=s[i][j+k]='$';
	} 
	for(i=0;i<m;i++)  //输出整个图形 
	{
		for(j=0;j<m;j++)
			printf("%c",s[i][j]);
		printf("\n");
	}
	return 0;
}


 

0.0分

2 人评分

  评论区

思路一样!!O(∩_∩)O哈哈~
2019-04-25 17:55:01
  • «
  • 1
  • »