我要做诗人

来源:互联网 发布:dj音乐制作软件下载 编辑:程序博客网 时间:2024/04/27 16:27

题目:

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

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

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

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

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

6ABCDEFGHIJKLMNOPQRSTUVWXYZA G M S YB H N T ZC I O UD J P VE K Q WF 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语句搞定。

原创粉丝点击