HJ0427分隔输出
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                HJ0427分隔输出
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                要求:第一個數N為字符串的數量,第二個以后為連續輸入的字符串。字符串之間用空格隔開。若字符串長度大于等于8,則每八個為一組,之間用空格隔開,切割后余下部分不滿八個則用0補位;字符串長度小于8,則后補零,補滿八個為止。升序輸出。
 輸入:2 abc 123456789
 輸出:12345678 90000000 abc00000
思路:
 1.將字符串放入N行的二維數組,每個字符串占有一行。
 2.獲取每一個字符串的長度。
 3.然后根據每行的第一個排序。(這個排序似乎理解的不對,是不是應該按字母表順序排?)
 4.通過對列坐標的求余實現每八個一循環,滿8(求余結果為0)則補空格,不滿8則補零,補到求余結果為0開始。
考試的時候用的一維數組。
 還要處理最后一個空格后面的內容。
 頗為繁瑣。
 簡直智障。
 下次一定。
#include<stdio.h>
#include<string.h>int N;
int len;
char new[8],store[100][1000] = {0},in[10000],input;
int i=0,j=0,k=0,flag=0;
int length[100];int max(int a,int b)
{return  a>b?a:b;}int main()
{scanf("%d ",&N);while(1)//輸入數據{if(input != '\n'){scanf("%c",&input);in[i] = input; i++;}elsebreak;        }for(i=0;i<N;i++)//分組{for(k =flag;(in[k] != ' ')&&(in[k] != '\n');k++){store[i][j] = in[k];j++;}j=0;k++;//跳過空格flag = k;for(i= 0;i<N;i++)//計算每行的長度{for(j = 0;store[i][j]!=0;j++){len++;            }       length[i] = len; len =0;}for(i = 0;i < N-1;++i)//排序{for(j=1;j<N;j++){if(store[j-1][0] > store[j][0]){for(k = 0;k<max(length[j-1],length[j]);k++){char asb = store[j-1][k];store[j-1][k] = store[j][k];                 store[j][k] = asb;                 }   int asb2 = length[j-1];length[j-1] = length[j];length[j] = asb2;}}}for(i= 0;i<N;i++)//輸出{for(j=0;j<length[i];j++){new[j%8] = store[i][j];if((j%8 == 0)&&(j !=0)){printf(" ");}printf("%c",new[j%8]);}while(j%8){printf("0");++j;}printf(" ");}return 0;
}
                            總結
以上是生活随笔為你收集整理的HJ0427分隔输出的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 上海欢乐谷五点之后还可以玩什么
 - 下一篇: 看爱的教育的作者是谁啊?