输入n个朋友的信息,包括姓名、生日、电话号码,本题要求编写程序,按照年龄从大到小的顺序依次输出通讯录。题目保证所有人的生日均不相同。
原理就是:
用结构体来存储信息,再用冒号排序来:结构体变量数组元素的值进行调换,从而从大到小的顺序依次输出通讯录
关键代码:
for(int j=0;j<n;j++){ //就是用了冒号排序方法做的
for(int i=j+1;i<n;i++){// 这里j=i+1;
if(stu2[j].num>stu2[i].num) //生日数值小的,反而大,把小的进行换
{
stu1[0]=stu2[j]; //交换的是结构体变量数组元素 stu2[0] stu[1] ...stu[n]
stu2[j]=stu2[i];
stu2[i]=stu1[0];
}
1.代码:
#include<stdio.h>
#define MaxSize 50
struct student{
char name[20];
int num;
int tele;
}stu1[MaxSize]; //stu1[0] 暂时放入数据
int main(){
int n;
scanf("%d",&n);
struct student stu2[n];//结构体变量数组定义
for(int i=0;i<n;i++){
scanf("%s%d%d",&stu2[i].name,&stu2[i].num,&stu2[i].tele);
printf("执行一次\n");
}
//printf("%d\n",stu2[0].num);
for(int j=0;j<n;j++){ //就是用了冒号排序方法做的
for(int i=j+1;i<n;i++){// 这里j=i+1;
if(stu2[j].num>stu2[i].num) //生日数值小的,反而大,把小的进行换
{
stu1[0]=stu2[j]; //交换的是结构体变量数组元素 stu2[0] stu[1] ...stu[n]
stu2[j]=stu2[i];
stu2[i]=stu1[0];
}}
}
for(int i=0;i<n;i++){
printf("%s %d %d\n",stu2[i].name,stu2[i].num,stu2[i].tele);
}
return 0;
}