#include <stdio.h>
#include <string.h>
void main()
{
void sort(char *p,char *q,char *r);
void print(char **a);
char a[3][30];
char *str[3];//数组中指向有三个元素的指针
int i;
for(i =0;i<3;i++)
{
str[i] = a[i]; //将指针指向二维数组中一维数组的首地址
}
for(i=0;i<3;i++)
{
scanf("%s",str[i]); //输入三个字符串
}
sort(str[0],str[1],str[2]); //对三个字符串进行排序
print(str); //输出str,str为二维数组的首地址
}
void sort(char *p,char *q,char *r)
{
void swap(char *p,char *q);
if(strcmp(p,q)>0) //strcmp比较两个字符串时,p,q指针变量分别指向字符串的首地址
{
swap(p,q);
}
if(strcmp(p,r)>0)
{
swap(p,r);
}
if(strcmp(q,r)>0)
{
swap(q,r);
}
}
void swap(char *p,char *q) //当指针中存贮的是字符串时,需要使用srcpy进行交换,而不是使用*q,*p
{
char t[20];
strcpy(t,p);
strcpy(p,q);
strcpy(q,t);
}
void print(char **a) //接受二维数组的首地址需要,使用指向指针的指针
{
int i;
for(i=0;i<3;i++)
{
printf("%s\n",*(a+i));
}
}
C语言刷题(25):指针数组,指向指针的指针综合运用,题:输入3个字符串,按由小到大的顺序输出
猜你喜欢
转载自blog.csdn.net/qq_38173631/article/details/104015574
今日推荐
周排行