采用自己熟悉的排序方法,编写程序完成对通讯录的按序号排序以及按联系人姓名排序的功能。
你题目的解答代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct student{
int num;
char name[10];
} stu;
void input(stu a[],int n)
{
int i;
for(i=0;i<n;i++)
{
scanf("%d%s",&a[i].num,a[i].name);
}
}
void out(stu a[],int n)
{
int i,j;
for(i=0;i<n;i++)
{
printf("%d %s\n",a[i].num,a[i].name);
}
}
void sort1(stu a[],int n)
{
int i,j;
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
if(a[j].num > a[j+1].num)
{
stu t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
void sort2(stu a[],int n)
{
int i,j;
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
if(strcmp(a[j].name, a[j+1].name)>0)
{
stu t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
int main()
{
int n;
scanf("%d", &n);
stu a[n];
input(a,n);
printf("按序号排序\n");
sort1(a,n);
out(a,n);
printf("按联系人姓名排序\n");
sort2(a,n);
out(a,n);
return 0;
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!