一行单词字符串完成从小到大的排序
程序员文章站
2022-04-04 11:11:03
...
代码
#include<stdio.h>
#include<string.h>
#define N 100
int main()
{
void sort(const char *pIn,char *pOut);
char pIn[N],pOut[N];
printf("\n输入:\n");
gets(pIn);
sort(pIn,pOut);
printf("\n输入:");
puts(pIn);
printf("\n输出:");
puts(pOut);
printf("\n");
return 0;
}
void sort(const char *pIn,char *pOut)
{
int i,j,flag,cnt,k,len;
char b[N][N],t[N];
flag=0;
cnt=0;
j=-1;
for(i=0;*(pIn+i)!='\0';i++) //保存在二维数组b中
{
if(*(pIn+i)!=' ')
{
if(flag==0)
{
j++;
k=0;
cnt++;
}
else
k++;
b[j][k]=*(pIn+i);
flag=1;
}
else
flag=0;
}
printf("\n保存后交换前b数组的单词:\n");
for(i=0;i<cnt;i++)
printf("%s\n",b[i]);
//在二维数组b中完成交换
for(i=cnt-1;i>=1;i--)
{
flag=0;
for(j=1;j<=i;j++)
if(strcmp(b[j-1],b[j])>0)
{
strcpy(t,b[j]);
strcpy(b[j],b[j-1]);
strcpy(b[j-1],t);
flag=1;
}
if(flag==0) break;
}
printf("\n保存后交换后b数组的单词:\n");
for(i=0;i<=cnt;i++)
printf("%s\n",b[i]);
k=0; //从数组b中取出放在pOut中
for(i=0;i<cnt;i++)
{
for(j=0;b[i][j]!='\0';j++)
{
*(pOut+k)=b[i][j];
k++;
}
if(b[i][j]=='\0'&&i!=cnt-1)
{
*(pOut+k)=' ';
k++;
}
}
*(pOut+k)='\0';
}[一行单词字符串完成从小到大的排序]
运行结果
上一篇: 第一节 练习14
推荐阅读
-
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
-
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
-
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
-
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
-
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
-
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
-
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
-
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
-
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
-
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。