1. 程式人生 > >程式設計C 實驗五 題目五 一維動態陣列的應用(0293)

程式設計C 實驗五 題目五 一維動態陣列的應用(0293)

Time limit(ms): 1000 Memory limit(kb): 65535 Submission: 13295 Accepted: 5193 Accepted

輸入一數字,用其控制一個數組的長度,而後將陣列中的小寫字母轉換成大寫字母,大寫字母轉換成小寫字母,其餘字元不變。

Description

連續輸入多個測試資料: 輸入的第一行為一個整數n,接下來有一個由n個字元組成的字串。 輸入0控制程式結束。

Input

每一行輸出一組測試資料對應的結果,依次輸出轉換後的字串。

Output
1 2 3 4 5 6 10 ASXZXCaz-+ 10 azsx90AZKJ 0
Sample Input
1 2 3 asxzxcAZ-+ AZSX90azkj

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main() {
    char *ptr_s,*ptr_q,c;
    int n;
    while(scanf("%d",&n) == 1 && n != 0) {
        getchar();
        ptr_s = (char *)malloc(n + 1);    //動態建立陣列
//      gets(ptr_s);                      //棄用gets()
        fgets(ptr_s,n+1,stdin); 
        ptr_q = ptr_s;
        while((c = *ptr_q) != '\0') {
            printf("%c",(c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') ? c^0x20 :c); //採用異或運算可提高運算效率
            ptr_q++;
        }
        printf("\n");
        free(ptr_s);
    }
    return 0;
}