输入班上n个同学的姓名,采用选择排序法对这n个姓名进行从小到大排序,并输出排序后的姓名序列

(要求用写一个函数实现字符串的排序)。

C编了一个程序
#include<stdio.h>
#include<string.h>
fun(char s[][80],int n)
{int i,j;
char a[80];
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(strcmp(s[i],s[j])>0)
{strcpy(a,s[i]);
strcpy(s[i],s[j]);
strcpy(s[j],a);}
for(i=0;i<n;i++)
printf("%s\n",s[i]);
}
main()
{char s[10][80];
int n,i,j;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%s",&s[i]);
fun(s,n);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-30
#include<stdio.h>
void main()
{
int i,j,min,t,a[11];
printf("enter data:\n"); //循环输入数据//
for(i=1;i<=10;i++)
{
scanf("%d",&a[i]);
}
for(i=1;i<=9;i++) //假设第一个数最小,依次与后一个数比较//
{
min=i;
for(j=i+1;j<=10;j++)
if(a[min]>a[j]) //当后一个数比前一个数小时,两数交换//
min=j;
t=a[i];
a[i]=a[min];
a[min]=t;
}
printf("\n");
//循环输出//
for(i=1;i<=10;i++)
printf("%5d",a[i]);
printf("\n");
}
第2个回答  2013-04-11
#include<stdio.h>
#include<string.h>
void selesort(char a[][10],int n)
{ int i,j,k;
char t[10];
for(i=0;i<n-1;i++)
{k=i;
for(j=i+1;j<n;j++)
if(strcmp(a[j],a[k])<0)k=j;
if(k!=i)
{ strcpy(t,a[i]);
strcpy(a[i],a[k]);
strcpy(a[k],t);
} }
}
main()
{ char name[8][10]; int i;
for(i=0;i<8;i++)
scanf("%s",name[i]);
for(i=0;i<8;i++)
printf("%s ",name[i]);
printf("\n");
selesort(name,8);
for(i=0;i<8;i++)
printf("%s ",name[i]);
printf("\n");
}
相似回答