当前位置:   article > 正文

C //习题 8.11 在主函数中输入10个等长的字符串。用另一函数对它们排序。然后在主函数输出这10个已排好序的字符串。_在主函数中输入10个等长的字符串,用另一个函数对他们排列,

在主函数中输入10个等长的字符串,用另一个函数对他们排列,

C程序设计 (第四版) 谭浩强 习题8.11

习题 8.11 在主函数中输入10个等长的字符串。用另一函数对它们排序。然后在主函数输出这10个已排好序的字符串。

IDE工具:VS2010
Note: 使用不同的IDE工具可能有部分差异。

 

代码块
方法1:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void sort(char (*s)[10], int n);         //定义排序函数

int main(){
	char n[10][10], (*p)[10];
	for(p = n, printf("Please enter 10 strings: "); p < n + 10; scanf("%s", *p++));  //输入10个字符串
	sort(n, 10);                                                                //调用排序函数
	for(p = n, printf("Sort by: "); p < n + 10; printf("%s ", *p++));                //输出10个字符串
	printf("\n");

	system("pause");
	return 0;
}

//排序函数
void sort(char (*s)[10], int n){
	int i, j;
	char t[10];
	for(i = 0; i < n; i++)
		for(j = i + 1; j < n; strcmp(*(s+i),*(s+j)) > 0 ? strcpy(t, *(s+i)), strcpy(*(s+i), *(s+j)), strcpy(*(s+j), t), j++ : j++);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
方法2:使用指针,动态分配内存
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define M 3
#define N 80

void initialStr(char ***str, int m, int n){
	*str = (char**)malloc(m * sizeof(char*));
	for(int i = 0; i < m; i++){
		(*str)[i] = (char*)malloc(n * sizeof(char));
	}
}

void inputStr(char **str, int m){
	printf("Enter %d strings:\n", m);
	for(int i = 0; i < m; i++){
		printf("Enter No.%d strings: ", i + 1);
		gets(str[i]);
	}
}

void sortStr(char **str, int m, int n){
	char *temp = (char*)malloc(n * sizeof(char));
	for(char **p = str; p < str + m; p++){
		for(char **q = p + 1; q < str + m; q++){
			if(strcmp(*p, *q) > 0){
				strcpy(temp, *p);
				strcpy(*p, *q);
				strcpy(*q, temp);
			}
		}
	}
	free(temp);
}

void outputStr(char **str, int m){
	printf("\nNew sort:\n");
	for(int i = 0; i < m; i++){
		printf("%s\n", str[i]);
	}
}

void freeStr(char ***str, int m){
	for(int i = 0; i < m; i++){
		free((*str)[i]);
	}
	free(*str);
}

int main(){
	char **str = NULL;

	initialStr(&str, M, N);
	inputStr(str, M);
	sortStr(str, M, N);
	outputStr(str, M);
	freeStr(&str, M);
	
	system("pause");
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/293039
推荐阅读
相关标签
  

闽ICP备14008679号