填充立方体

2024-01-02 22:39:32

填充立方体(10分)
[命题人 : 外部导入]
时间限制 : 1.000 sec 内存限制 : 128 MB

题目描述

期中考试小南设计的填数游戏非常有意思,于是老师要小南再设计一个新的填数游戏用于期末考试。就是用“*”画出一个立方体,并将立方体图形的三面分别按照规律填上大写字母“A”“Z”字母、小写字母“a”“z”和数字“1”~“9”。填充的过程按照字母和数字的顺序从上到下从左至右进行。
立方体的边长n定为多少好呢?小南让老师给出一个句子,将句子的长度len和句子中单词的个数m的最大公约数设定为立方体的边长n。例如:当老师给出的句子为“you like these things sun stars and moon”时,句子长度len为40,单词个数m为8,最大公约数为8。因此立方体的边长n为8,对应的图形为:

注意,当n为1时,对应的立方体图形为一个星号*。同时,老师要求小南将句子中的单词颠倒顺序输出,即输出“moon and stars sun things these like you”,你能帮小南编程实现吗?
输入
多个样例。 每个样例包含一个由字母组成的句子,句子的首尾没有多余的空格,长度不超过200,句子中的单词之间用一个空格分开。
输出
每个样例首先输出一个颠倒单词顺序的句子,然后按照填充要求输出一个正确的立方体图形。样例输出结果之间用一个空行分开。
样例输入 Copy
I do
you like these things sun stars and moon
you love csu
样例输出 Copy
do I
**


**

moon and stars sun things these like you
********
ABCDEF*
GHIJKL1*
MNOPQR23*
STUVWX456*
YZABCD7891*
EFGHIJ23456*
*789123
abcdef45678

ghijkl9123

mnopqr456

stuvwx78

yzabcd9

efghij


csu love you


A*
*1
a


int findGCD(int a, int b)
{
	int ans = 0;
	while (ans = a % b)
	{
		a = b;
		b = ans;
	}
	return b;
}
#include<stdio.h>
#include<string.h>
int main(void)
{
	
	while (1)
	{   char arr[1000][1000] = { 0 };
	    int i, len = 0;
		for (i = 0; i < 100; i++)
		{
			if (scanf("%s", arr[i]) == EOF)
			{
				return 0;
			};
			len += strlen(arr[i]);
			char ch = getchar();
			if (ch == '\n')
			{
				break;
			}
			len++;
		}
		for (int m = i; m> 0; m--)
		{
			printf("%s ", arr[m]);
		}
		printf("%s\n", arr[0]);
		int n = findGCD(len, i + 1);
		if (n == 1)
		{
			printf("*\n\n");
			continue;
		}
		//rhe first row
		for (int i = 1; i <= n - 1; i++)
		{
			printf(" ");
		}
		for (int i = 1; i <= n; i++)
		{
			printf("*");
		}
		printf("\n");

		char daxie = 'A';
		int integer = 1;
		for (int i = n - 2; i >= 1; i--)
		{
			for (int m = 1; m <= i; m++)
			{
				printf(" ");
			}
			printf("*");
			for (int m = 1; m <= n - 2; m++)
			{
				if (daxie == 'Z'+1)
					daxie = 'A';
				printf("%c", daxie++);
			}
			printf("*");
			for (int m = 1; m <= n - 2 - i; m++)
			{
				if (integer == 10)
					integer = 1;
				printf("%d", integer);
				integer++;
			}
			printf("*\n");
		}

		for (int i = 1; i <= n; i++)
		{
			printf("*");
		}
		for (int i = 1; i <= n - 2; i++)
		{
			if (integer == 10)
				integer = 1;
			printf("%d", integer);
			integer++;
		}
		printf("*\n");
		
		char xiaoxie = 'a';
		for (int i = n - 3; i >= 0; i--)
		{
			printf("*");
			for (int m = 1; m <= n - 2; m++)
			{
				if (xiaoxie == 'z' + 1)
					xiaoxie = 'a';
				printf("%c", xiaoxie++);
			}
			printf("*");
			for (int m = 1; m <= i; m++)
			{
				if (integer == 10)
					integer = 1;
				printf("%d", integer);
				integer++;
			}
			printf("*\n");
		}

		for (int i = 1; i <= n; i++)
		{
			printf("*");
		}
		printf("\n\n");
	}

	return 0;
}

文章来源:https://blog.csdn.net/2301_80096362/article/details/135350565
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。