卓耿里昂


私信TA

用户名:zgliang

访问量:2101

签 名:

极致产生美

等  级
排  名 10090
经  验 1113
参赛次数 0
文章发表 3
年  龄 0
在职情况 学生
学  校 上海应用技术大学
专  业

  自我简介:

解题思路:具体看注释;

将图形分为三部分,开头,中间,还有主体,主体分为单双处理;

分别进行打印,

#include<stdio.h>
int n,len,a=1;
void title()//开头的两行,结尾的两行
{
	for (int i = 0; i < 2; i++) {
		for (int q = 1; q <= len; q++)
		{
			if (a % 2 == 0)  	(q == 3 || q == len - 2) ? printf("$") : printf(".");
			else				(q == 1 || q == 2 || q == len || q == len - 1) ? printf(".") : printf("$");
		}
		a++;
		printf("\n");
	}   a = 2;//当第一次运行结束时,对title进行调换;
}
void center(int q)
{
	int y = (q == 0 ? n : -1);//用于判断输出顺序,当q==0.顺序输出,反之~~~
	int a = (q == 0 ? 1 : 2);//用于判断单双,当q从0开始时,先输出单再双,反之~~~
	do {
		for (int i = 0; i < 2; i++)
		{
			for (int j = 0; j < len - 2 * (q + 1); j++)
			{
				if (a % 2 != 0)//单
				{
				if (j < q)  printf("$.");
				if (j == q||j== len - 3 * (q + 1))  printf("$$");
				if (j > q && j < len - 2 * (q + 1) - q - 1)   (j == q + 2 ||j== len - 3 * (q + 1)-2) ? printf(".") : printf("$");
				if (j > len - 3 * (q + 1))   printf(".$");
				}
			else {
				if (j <= q )   printf("$.");
				if (j > q && j < len - 2 * (q + 1) - q - 1)   (j == q + 3 || j == len - 3 * (q + 1) - 3)?  printf("$") : printf(".");
				if (j>=len - 3 * (q + 1))  printf(".$");
				}
			}
			printf("\n");
			a++;
		}
	y == n ? q++ : q--;
	} while (q != y);
}
void main()
{
	scanf("%d", &n);
	len = 5 + 4 * n;
	title(); 
	center(0);
	for (int q = 0; q < 2 * n + 1; q++)
		if (q < n)    printf("$.");
		else if(q==n)   printf("$$$$$");
		else         printf(".$");
		printf("\n");
	center(n-1);
	title();
}

打印主体部分有些难理解,要下点功夫!

 

0.0分

0 人评分

  评论区

  • «
  • »