习题 8.2 输入3个字符串,按由小到大的顺序输出。(指针法)

C程序设计(第四版) 谭浩强 习题8.2 个人设计

习题 8.2 输入3个字符串,按由小到大的顺序输出。(指针法)

代码块:

方法1:

#include 
#include 
#include 
int main()
{
	char *s[3], st[3][10], **p, *t;
	int i, j;
	for (i=0, printf("Please enter 3 strings: "); i<3; s[i]=st[i], scanf("%s", s[i++]));
	for (i=0; i<3; i++)
		for (j=i+1; j<3; strcmp(s[i], s[j])>0 ? t=s[i], s[i]=s[j], s[j]=t, j++ : j++);
	for (p=s; p

方法2:(利用函数的模块化设计)

#include 
#include 
#include 
void sort(char *x[], int n);          //定义排序函数
void print(char *x[], int n);         //定义输出函数
int main()
{
	char *s[3], st[3][10];
	int i;
	for (i=0, printf("Please enter 3 strings: "); i<3; s[i]=st[i], scanf("%s", s[i++]));  //输入3个字符串
	sort(s, 3);                                                                           //调用排序函数
	print(s, 3);                                                                          //调用输出函数
	system("pause");
	return 0;
}
//排序函数
void sort(char *x[], int n)
{
	int i, j;
	char *t;
	for (i=0; i0 ? t=x[i], x[i]=x[j], x[j]=t, j++ : j++);
}
//输出函数
void print(char *x[], int n)
{
	char **p;
	for (p=x; p

方法3:(利用动态内存分配和多重指针)

#include 
#include 
#include 
void input(char *p_str[], int n);
void sort(char *p_str[], int n);
void print(char *p_str[], int n);
int main()
{
	char **string;
	int i;
	for (i=0, string=(char **)calloc(3, sizeof(char *)); i<3; string[i]=(char *)calloc(20, sizeof(char)), i++);
	input(string, 3);
	sort(string, 3);
	print(string, 3);
	system("pause");
	return 0;
}
void input(char *p_str[], int n)
{
	char **p;
	for (p=p_str, printf("Please enter %d strings:\n", n); p0 ? temp=p_str[i], p_str[i]=p_str[j], p_str[j]=temp, j++ : j++);
}
void print(char *p_str[], int n)
{
	char **p;
	for (p=p_str, printf("Sort by:\n"); p

你可能感兴趣的:(C程序设计,(第四版),谭浩强,课后答案)