目录
任务描述
本关任务:编写一个程序,将输入字符串中的字符按如下规则排序。 规则 1:英文字母从A到Z排列,不区分大小写。 如,输入:Type 输出:epTy 规则2:同一个英文字母的大小写同时存在时,按照输入顺序排列。 如,输入:BabA输出:aABb 规则3:非英文字母的其它字符保持原来的位置。 如,输入:By?e 输出:Be?y 数据范围:输入的字符串长度满足1≤n≤1000
源代码:
void start() {
char str[1001];
scanf("%[^\n]", str);
int n = strlen(str);
char* str_ch = (char*)malloc(n * sizeof(char));
if (str_ch == NULL) {
printf("Memory allocation failed!\n");
return;
}
int index = 0;
for (char i = 'A'; i <= 'Z'; i++) {
for (int j = 0; j < n; j++) {
if (str[j] == i || str[j] - 32 == i) {
str_ch[index++] = str[j];
}
}
}
index = 0;
for (int i = 0; i < n; i++) {
if ((str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z')) {
printf("%c", str_ch[index++]);
}
else {
printf("%c", str[i]);
}
}
}