赞
踩
//8.11 在主函数中输入十个等长的字符串。用另一函数对它们进行排序 //然后在主函数输出这10个已排好序的字符串。 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <string.h> int main() { void sort(char s[10][6]); int i; char str[10][6], *p[10]; printf("输入十个等长的字符串:\n"); for (i = 0; i < 10; i++) //输入10个字符串 { scanf("%s", str[i]); } printf("交换前:\n"); for (i = 0; i < 10; i++) { printf("%s\n", str[i]); } sort(str); printf("交换后:\n"); for (i = 0; i < 10; i++) { printf("%s\n",str[i]); } return 0; } void sort(char s[10][6]) { //char t[20]; //不可写为 char t[20] 因为赋值方式不对 char *p,temp[10]; int i, j; p = temp; for (i = 0; i < 9; i++) //<9而不是<10 因为下面j+1刚好是最后一个。 { for (j = 0; j < 9 - i; j++) { if (strcmp(s[j], s[j + 1])>0) { strcpy(p, s[j]); strcpy(s[j], s[j + 1]); strcpy(s[j + 1], p); } } } }
//8.12 在主函数中输入十个等长的字符串。用另一函数对它们进行排序 //然后在主函数输出这10个已排好序的字符串。使用指针数组处理。 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <string.h> int main() { void sort(char *s[]); int i; char str[10][20], *p[10]; for (i = 0; i < 10; i++) //将 { p[i] = str[i]; } printf("input 10 string:\n"); for (i = 0; i < 10; i++) //输入10个字符串 { scanf("%s", p[i]); } printf("交换前:\n"); for (i = 0; i < 10; i++) { printf("%s\n", p[i]); } sort(p[10]); printf("交换后:\n"); for (i = 0; i < 10; i++) { printf("%s\n", p[i]); } return 0; } void sort(int *s[]) { //char t[20]; //不可写为 char t[20] 因为赋值方式不对 char *t; int i, j; for (i = 0; i < 10; i++) { for (j = 0; j < 9 - i; j++) { if (strcmp(*(s + j), *(s + j + 1))>0) { t = *(s + j); *(s + j) = *(s + j + 1); *(s + j + 1) = t; } } } }
此种地方方式交换函数执行有问题,未能解决。。。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。