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