一道c语言程序题: 输入5个字符串,按字典顺序将其重新排列输出。用字符串指针实现。
4个回答
展开全部
#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");
}
#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");
}
展开全部
编译过的,还有不懂可以直接问我
#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]);
}
#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]);
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
两个循环,跟冒泡排序差不多,第一层循环整个字符串的所有元素,第二层进行排序
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用STL的set就可以,还要用指针?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询