我要做诗人

题目:

              老师问小明:“古人,最厉害的是什么?”

             小明回答说:“当然是写诗啊!”

             老师继续说道:”那你会不会写诗啊?“

             小明回答说:“我会抄,可是我不会写!”

 于是老师就交代小明说,你给我把英文单词抄成古文的形式,我先给你26个字母,你给我抄一下看看。小明就一股脑的抄了下来。突然发现万一字母个数太多了怎么办?但还是先把26个字母抄给了老师看看。

6
ABCDEFGHIJKLMNOPQRSTUVWXYZ
A G M S Y
B H N T Z
C I O U
D J P V
E K Q W
F L R X

输入:

     输入一个正整数n,之后就是一行输入N个字符(N不超过1000)。

    (我们保证n*n>N.)

输出:

     格式同上,转化为古文模式,让小明称为一名合格的诗人!


坑主要在空格的输出。注意点就好了。


代码如下:

   

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;

struct node
{
	int sum;
	char temp[100];
}a[1000];

int main()
{
    int n;
	cin>>n;
	char k[1005];
	memset(a,0,sizeof(a));   //初始化
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			a[i].temp[j] = ' ';   //初始化字符。
		}
	}
	getchar();
	gets(k); 
	for(int i=0;i<strlen(k);i++)
	{
		a[i%n].temp[a[i%n].sum++]=k[i];	//将i的位置的字符,放在第i%n的行,第sum的位置上面。
	}
    for(int i=0;i<n;i++)
    {
    	int ff=0;
    	for(int j=0;j<n;j++)
    	{
    		if(ff++!=0)
    		cout<<' ';
		cout<<a[i].temp[j]; //依次输出第i行的,n个字符。 
    	}
    	cout<<endl;
    }
    return 0;
}

处理空格的问题:
        在循环初始化的循环中,时间太多了。
(1)如果单用例的。可以考虑在结构体里面初始化。
           char temp[100] = ' ';
(2)多用咧的时候,在循环中,处理空格,可以看每一行的sum的数目,如果sum==n则不管,不然就用空格去替补输出达到n个字符。用一个if...else语句搞定。

posted @ 2017-06-07 00:05  让你一生残梦  阅读(184)  评论(0编辑  收藏  举报