题目:
老师问小明:“古人,最厉害的是什么?”
小明回答说:“当然是写诗啊!”
老师继续说道:”那你会不会写诗啊?“
小明回答说:“我会抄,可是我不会写!”
于是老师就交代小明说,你给我把英文单词抄成古文的形式,我先给你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语句搞定。