用c语言编写输入任意长度字符串(最长20个),包括英文、数字、符号(英文字符)三种类型,根据字符类型分别按顺序排列(英文从a(A)到z(Z),数字从0到9,符号按照ASCII码值大小排序),输出排列后结果。
时间: 2024-11-03 21:21:12 浏览: 31
在C语言中,你可以通过遍历用户输入的字符串,并利用ASCII码值对字符进行分类和排序来实现这个功能。这里是一个简单的示例代码:
```c
#include <stdio.h>
#include <ctype.h>
// 定义函数来按类别排序字符并打印
void sortAndPrint(char *str) {
int i = 0, j = 0;
while (str[i]) {
// 英文字符(A-Z)
if (isalpha(str[i])) {
if (str[i] >= 'A' && str[i] <= 'Z') { // 大写字母转换为小写并插入
char temp = tolower(str[i]);
for (; j > 0 && temp < str[j]; j--)
str[j] = str[j - 1];
str[j++] = temp;
} else { // 小写字母直接插入
for (; j > 0 && str[i] < str[j]; j--)
str[j] = str[j - 1];
str[j++] = str[i++];
}
// 数字(0-9)
} else if (isdigit(str[i])) {
for (; j > 0 && str[i] < str[j]; j--)
str[j] = str[j - 1];
str[j++] = str[i++];
// 符号
} else {
str[j++] = str[i++];
}
}
str[j] = '\0'; // 结束字符串
printf("Sorted string: %s\n", str);
}
int main() {
char input[21];
printf("Enter a string up to 20 characters long: ");
fgets(input, sizeof(input), stdin); // 注意处理换行符
// 移除fgets留下的换行符
input[strcspn(input, "\n")] = '\0';
sortAndPrint(input);
return 0;
}
```
当你运行这个程序并输入任意长度的字符串(不超过20个字符)后,它会按照字母表顺序对英文字符排序,然后是数字,最后是符号。
阅读全文