0分求调
查看原帖
0分求调
1503571
Hoshimati楼主2024/11/18 11:08

代码实现

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<string.h>
#include<ctype.h>
#include<stdlib.h>

int main() {
    char arr[1002]; 
    fgets(arr, sizeof(arr), stdin);  // 读取输入
    int len = strlen(arr);

    // 去掉换行符(如果有)
    if (len > 0 && arr[len - 1] == '\n') {
        arr[len - 1] = '\0';
    }

    // 进行大小写转换
    for (int i = 0; i < len; i++) {
        if (isalpha(arr[i])) {
            if (islower(arr[i])) {
                arr[i] = toupper(arr[i]);  // 小写转大写
            } else {
                arr[i] = tolower(arr[i]);  // 大写转小写
            }
        }
    }

    // 使用 strtok 按空格分割字符串
    char* arr1[100];  // 存储分割后的单词
    char* p;
    int j = -1;
    p = strtok(arr, " ");  // 按空格分割
    while (p != NULL) {
        arr1[++j] = p;  // 保存每个单词
        p = strtok(NULL, " ");  // 获取下一个单词
    }

    // 逆序输出每个单词
    for (int k = j; k >= 0; k--) {
        // 如果是数字,反转数字字符
        if (isdigit(arr1[k][0])) {
            int len_digit = strlen(arr1[k]);
            for (int l = len_digit - 1; l >= 0; l--) {
                printf("%c", arr1[k][l]);  // 输出反转后的数字
            }
        } else {
            // 否则直接输出单词
            printf("%s", arr1[k]);
        }

        // 如果不是最后一个单词,输出空格
        if (k != 0) {
            printf(" ");
        }
    }

    return 0;
}
2024/11/18 11:08
加载中...