#45138: c語言解法(只用stdio.h)


211051@mail2.khgs.tn.edu.tw (呈)

學校 : 不指定學校
編號 : 283969
來源 : [111.255.30.43]
最後登入時間 :
2025-01-13 14:11:03
q182. 2. 字串操作 -- 2025年1月APCS | From: [111.255.30.43] | 發表日期 : 2025-01-13 14:16

#include <stdio.h>

void sort1(char *S) {
    int length = strlen(S);
    for (int i = 0; i < length - 1; i += 2) {
        char temp = S[i];
        S[i] = S[i + 1];
        S[i + 1] = temp;
    }
}

void sort2(char *S){
    int length = strlen(S);
    for (int i = 0; i < length - 1; i += 2) {
        if(S[i]>S[i+1]){
          char temp = S[i];
          S[i] = S[i + 1];
          S[i + 1] = temp;
        }
    }
}

void sort3(char *S){
    int length = strlen(S);
    char s1[100],s2[100];
    int mid=length/2;
    for (int i = 0; i < mid; i += 1) {
        s1[i]= S[i];
    }
    
    for (int i = 0; i < length - mid; i++) {
        s2[i] = S[mid + i];
    }
    
    for (int i = 0; i < length; i += 1) {
        if(i%2==0){
          S[i]=s1[i/2];
        }else{
          S[i]=s2[i/2];
        }
    }
}
int main(void) {
    char S[100];
    int k, j = 0;
    scanf("%[^\n]", S);
    scanf("%d", &k);
    int arr[k];

    for (int i = 0; i < k; i++) {
        scanf("%d", &arr[i]);
    }

    while (k--) {
        if (arr[j] == 0) {
            sort1(S);
        }else if(arr[j] == 1){
            sort2(S);
        }else if(arr[j] == 2){
            sort3(S);
        }
        j++;
    }

    printf("%s", S);
}

 
ZeroJudge Forum