C语言中,怎么交换指针数组里的值?

例如char*p[10],这个数组里存储了10个字符串的首地址,现在要对这10个字符串排序,用一个中间量,怎么实现交换数组里的值?最好给出交换的程序。... 例如char *p[10],这个数组里存储了10个字符串的首地址,现在要对这10个字符串排序,用一个中间量,怎么实现交换数组里的值?最好给出交换的程序。 展开
 我来答
zyl0462
推荐于2018-05-15 · TA获得超过1082个赞
知道小有建树答主
回答量:433
采纳率:75%
帮助的人:323万
展开全部
程序主要通过冒泡法使用函数strcmp比较两指针所值字符串大小,通过临时指针交换两指针指向,实现字符串排序,代码如下,
//程序功能,从小到大排序10个字符串
#include <stdio.h>
#include <string.h>
void bubble_sort(char *a[], int n);

int main(int argc, char *argv[])
{
char a[10][20]={0};//存储10个字符串
char *p[10];//指向10个字符串
int i=0;
for(i=0;i<10;i++)
{
gets(a[i]);//输入字符串
p[i]=a[i];//指向字符串
}
for(i=0;i<10;i++)
{
puts(a[i]);//输出原字符串
}
bubble_sort(p,10);
for(i=0;i<10;i++)
{
puts(p[i]);//输出排序后字符串
}

return 0;
}
//冒泡法排序,从小到大排序
void bubble_sort(char *a[], int n)
{
int i, j;
char *temp;
for (j = 0; j < n - 1; j++)
for (i = 0; i < n - 1 - j; i++)
{
if(strcmp(a[i],a[i+1])>0)//交换指针
{
temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
}
}
}

int strcmp( const char *str1, const char *str2 );比较字符串str1、str2,返回值大于0,str1>str2,返回值小于0,str1<str2,返回值等于0,str1==str2。
匿名用户
2013-07-13
展开全部
大概的过程:
char *temp;
for()
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
就是这样,for循环自己完善一下就好了。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-07-13
展开全部
while(p!='\0')改为while(p!=a+10)
#include "stdio.h"
#include "conio.h"
#include "string.h"
int main()
{
int a[10],*p=a,max,min,max_i,min_i,i;
max=min=a[0];
min_i=max_i=0;
for(;p<a+10;p++)
scanf("%d",p);
getchar();
p=a;
while(p!=a+10)
{
if(max<*p)max_i=*p;
if(min>*p)min_i=*p;
p++;
}
*p=max_i;max_i=*(a+9);*(a+9)=*p;
*p=min_i;min_i=*a;*a=*p;
for(p=a;p<a+10;p++)
printf("%d ",*p);
getch();
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式