168 规范化名字.c 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. // A-Z 65 90
  5. // a-z 97 122
  6. void upper(char *c) {
  7. if (*c >= 97 && *c <= 122) {
  8. *c -= 32;
  9. }
  10. }
  11. void lower(char *c) {
  12. if (*c >= 65 && *c <= 90) {
  13. *c += 32;
  14. }
  15. }
  16. // 交换字符串
  17. void swap_str(char *a, char *b) {
  18. char tmp[255] = {0};
  19. strcpy(tmp, a);
  20. strcpy(a, b);
  21. strcpy(b, tmp);
  22. }
  23. //排序
  24. void ordered(int n, char **l) {
  25. for (int i = 0; i < n; ++i) {
  26. for (int j = i + 1; j < n; ++j) {
  27. if (strcmp(l[i], l[j]) > 0)swap_str(l[i], l[j]);
  28. }
  29. }
  30. }
  31. int main() {
  32. int n, k;
  33. scanf("%d", &n);
  34. char **s;
  35. s = (char **) malloc(n * sizeof(char *));
  36. for (int i = 0; i < n; ++i) {
  37. s[i] = (char *) malloc(255 * sizeof(char));
  38. scanf("%s", s[i]);
  39. k = 0;
  40. upper(&s[i][0]);
  41. while (s[i][k])lower(&s[i][++k]);
  42. }
  43. ordered(n, s);
  44. for (int i = 0; i < n; ++i) {
  45. printf("%s\n", s[i]);
  46. }
  47. for (int i = 0; i < n; ++i) {
  48. free(s[i]);
  49. }
  50. free(s);
  51. }