一道c语言程序题: 输入5个字符串,按字典顺序将其重新排列输出。用字符串指针实现。

 我来答
落叶流枫
2009-06-04
知道答主
回答量:35
采纳率:0%
帮助的人:9.9万
展开全部
#include<stdio.h>
#include<string.h>
void main()
{
void sort(char (*p)[20]);
char a[5][20];//五行20列
int i;
printf("请输入5个字符串:\n");
for(i=0;i<5;i++)//这里输入五个字符串
gets(a[i]);
sort(a);//调用函数进行排列

}

void sort(char (*p)[20])
{
char a[20];
int i,j;
for(i=0;i<4;i++)//这里把每一行看做一个元素五个要进行4次比较
for(j=0;j<20;j++)//这里是上下相邻的两行之间对应元素进行比较
{
if(p[i][j]>p[i+1][j])//遇到上行大于交换上下两行
{
strcpy(a,p[i]);
strcpy(p[i],p[i+1]);
strcpy(p[i+1],a);
}
break;
}
printf("五个串按从小到大排列如下:\n");
for(i=0;i<5;i++)
puts(p[i]);
printf("\n");

}
lmx10086
推荐于2017-12-16 · TA获得超过340个赞
知道小有建树答主
回答量:232
采纳率:0%
帮助的人:237万
展开全部
编译过的,还有不懂可以直接问我
#include <stdio.h>
#include <string.h>

void sort(char * str[],int size)
{
int i,j;
char * tmp;
for(i=0;i<size-1;i++)
{
for(j=i+1;j<size;j++)
{
if(strcmp(str[i],str[j])>0)
{
tmp=str[i];
str[i]=str[j];
str[j]=tmp;
}
}
}
}

void main()
{
char str[5][20];
char * p[5];
int i;
for(i=0;i<5;i++)
{
scanf("%s",str[i]);
p[i]=str[i];
}
sort(p,5);
for(i=0;i<5;i++)
printf("%s\n",p[i]);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
江水静如诗
2009-06-04 · TA获得超过406个赞
知道小有建树答主
回答量:186
采纳率:0%
帮助的人:88.5万
展开全部
两个循环,跟冒泡排序差不多,第一层循环整个字符串的所有元素,第二层进行排序
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友28fc57468
2009-06-04 · TA获得超过250个赞
知道答主
回答量:489
采纳率:0%
帮助的人:0
展开全部
用STL的set就可以,还要用指针?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式