编一程序,将从键盘随机输入的10个字符串由小到大排序。 该程序由2个函数来完成,一个是主函数,另一个是n个字符串由小到大排序函数。
字符串用什么排序方法?
是用长度排?(例如string 和see此时,see的长度小于string 所以string>see.)
用它们的ascii码大小排?(例如string 和saring 此时,两个s相等,a的ascii码小于t的ascii码,所以string>saring.)
还是以上两个一起用?
将字符串2复制到字符串1 strcpy(s1,s2);
交换两个字符串:strcpy(t,s1);strcpy(s1,s2);strcpy(s2,t);
字符串比大小根据ascll码挨个比较,strcmp("a","b");返回的是小于0的数,strcmp("b","b");返回的是0,strcmp("b",“a”);返回的是大于0的数,strcmp("abc","acb")先比较第一个a相等继续向后比较b和c,b<c返回小于0的数
#include <stdio.h>
#include <string.h>
main()
{
int i,j;
char t[10];
char a[10][10]={'\0'};
printf("输入10个字符串");
for (i=0;i<10;i++)
scanf("%s",&a[i]);
for (i=0;i<9;i++)
for (j=0;j<9-i;j++)
{
if (strcmp(a[j],a[j+1])>0)
{
strcpy(t,a[j]);
strcpy(a[j],a[j+1]);
strcpy(a[j+1],t);
}
}
printf("比较大小后:\n");
for (i=0;i<10;i++)
printf("%s\n",a[i]);
}
2个函数解决如下:
#include<stdio.h>
#include<string.h>
void sort(char s[][50])
{
int i,j;
for(i=0;i<9;i++)
for(j=0;j<9-i;j++)
if (strcmp(s[j], s[j + 1]) > 0)
{
char temp[50];
strcpy(temp,s[j]);
strcpy(s[j], s[j + 1]);
strcpy(s[j+1],temp);
}
}
int main()
{
int i;
char s[10][50];
for (i = 0; i < 10; i++)
gets(s[i]);
sort(s);
for (i = 0; i < 10; i++)
puts(s[i]);
return 0;
}
输入输出:
望采纳!感谢!
#include <stdio.h>
#include <string.h>
char a[10][10] = {'\0'};
char t[10];
void Compare()
{
for (int i = 0; i < 9; i ++)
{
for (int j = 0; j < 9 - i; j ++)
{
if (strcmp(a[j], a[j + 1]) > 0)
{
strcpy(t, a[j]);
strcpy(a[j], a[j + 1]);
strcpy(a[j + 1],t);
}
}
}
printf("从小到大排序:");
for (int i = 0; i < 10; i ++) printf("%s ", a[i]);
}
int main()
{
printf("输入10个字符串(用空格间隔):");
for (int i = 0; i < 10; i ++) scanf("%s", &a[i]);
Compare();
return 0;
}
望采纳
#include <stdio.h>
#include <string.h>
char t[10];
char a[10][10]={'\0'};
int i,j;
main()
{
printf("输入10个字符串");
for (i=0;i<10;i++)
scanf("%s",&a[i]);
Sort();
printf("比较大小后:\n");
for (i=0;i<10;i++)
printf("%s\n",a[i]);
}
void Sort(){
for (i=0;i<9;i++)
for (j=0;j<9-i;j++)
{
if (strcmp(a[j],a[j+1])>0)
{
strcpy(t,a[j]);
strcpy(a[j],a[j+1]);
strcpy(a[j+1],t);
}
}
}