#include <stdio.h> #include<string.h> #include<malloc.h> #include<ctype.h> //大小写转换函数 char* Judge(char* str) { //1、英文字母从 A 到 Z 排列,不区分大小写。 //2、同一个英文字母的大小写同时存在时,按照输入顺序排列。 //3、非英文字母的其它字符保持原来的位置。这个保持不动就好 //思路把大小写统一在看是否排序 tolower(ch)把大写字母换成小写,把字母挑出来先排序,排好序在放进去其他的不动 int len = strlen(str); int i, j, index = 0; char temp[1001] = ""; //用于存放字母 for (i = 0; str[i] != '\0'; i++) { if ((str[i] >= 'A' && str[i] <= 'Z' ) || (str[i] >= 'a' && str[i] <= 'z')) //字母 temp[index++] = str[i]; //把是字母的字符放入temp数组 } //对字母数组排序用冒泡排序,注意还得把大小写统一 for (i = 0; i < index; i++) { for (j = 0; j < index - i - 1; j++) { if (tolower(temp[j]) > tolower(temp[j + 1])) { char t = temp[j]; temp[j] = temp[j + 1]; temp[j + 1] = t; } } } //将排好的数组再放入 for (i = 0, j = 0; str[i] != '\0'; i++) { if ((str[i] >= 'A' && str[i] <= 'Z' ) || (str[i] >= 'a' && str[i] <= 'z')) str[i] = temp[j++]; //把排好的放入,其他的不变 } return str; } int main() { char* str = (char*)malloc(1000 * sizeof(char)); gets(str); Judge(str); puts(str); free(str); }
tolower函数的使用说明:
1、包含头文件
#include <ctype.h>
2、函数声明
int tolower(int c);
3、功能说明
把大写字母转换为小写字母,如果参数c不是大写字母就不转换,您可能会问:tolower函数的参数和返回值是整数,不是字符,在C语言中,字符就是整数。
参数c为待转换的字符。
返回值为转换后的结果。
同理C库函数 int toupper(int c)转换给定的字母为大写。