c语言通讯录排序按年龄从小到大输出
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言通讯录排序按年龄从小到大输出相关的知识,希望对你有一定的参考价值。
#include"stdio.h"
#define N 10
struct Date
int year;
int month;
int day;
;
struct Mate
char name[10];
long birthday;
char tel[12];
;
struct Mate classmate[N];
int Datecomp(struct Date d1,struct Date d2);//d1年龄比d2大返回1,相等返回0,小则返回-1
int main()
int i,j,k,n;
struct Mate m;
scanf("%d",&n);
for(i=0;i<n;i++) //输入n个同学的信息
scanf("%s",classmate[i].name);
scanf("%d-%d-%d",&classmate[i].birthday.year,&classmate[i].birthday.month,&classmate[i].birthday.day);
scanf("%s",classmate[i].tel);
for(i=0;i<n-1;i++) //按照年龄降序排列
k=i;//下面到对应大括号是我自己填的,不知道有没有问题
for(j=i+1;j<n;j++)
if(classmate[j].birthday<classmate[k].birthday)
m=classmate[j];
classmate[j]=classmate[i];
classmate[i]=m;
if(k!=i)
m=classmate[i];
classmate[i]=classmate[k];
classmate[k]=m;
for(i=0;i<n;i++)
printf("name:%10s,%d-%d-%d,%12s\n",classmate[i].name,classmate[i].birthday.year,classmate[i].birthday.month,classmate[i].birthday.day,classmate[i].tel);
return 0;
int Datecomp(struct Date d1,struct Date d2)
//完全不知道填什么……
int i,j,k;
struct Man t;
for(i=0;i<n;i++)
for(k=i,j=k+1;j<n;j++)
if(strcmp(p[k].Name,p[j].Name)>0)
k=j;
if(k!=i)//这里是k与i的关系而非j
t=p[k];//这里交换整个数组元素,不能只交换成员Name
p[k]=p[i];
p[i]=t;
参考技术A void
sort(struct
Man
*p,int
n)//p是数组第一元素指针,n是数组长度
int
i,j,k;
struct
Man
t;
for(i=0;i
0)
k=j;
if(k!=i)//这里是k与i的关系而非j
t=p[k];//这里交换整个数组元素,不能只交换成员Name
p[k]=p[i];
p[i]=t;
c语言姓名首字母排序问题
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Student
char nam[30];
char sex[7];
int num;;
void Sort(struct Student *stu)
int i,j;
struct Student temp;
//开始进行冒泡排序
for(i=0;i<4;i++)
for(j=0;j<4-1;j++)
if(strcmp(stu[j].nam[0],stu[j+1].nam[0])<0) //比较首字符的ASCII
temp=stu[j]; //互换
stu[j]=stu[j+1];
stu[j+1]=temp;
main ()
struct Student stu[4];
int i;
printf("NOW INPUT\n");
for(i=0;i<4;i++) //
printf("Input name\n"); //输入姓名
gets(stu[i].nam);
printf("Input sex"); //输入性别
gets(stu[i].sex);
printf("Input number\n"); //输入学号
scanf("%d", &stu[i].num);
Sort(stu); //Sort函数
各位大哥,这是小弟自己想的,不知道对不对。主要目的是。按学生姓名的首字母排序
比如:Ann Bobby Daive ..... Tina ....
你的回答挺有意思!
gets不是输入?scanf不是输入?
#include <stdio.h>
#include <string.h>
int main()
char name[100][15];
char tmp[15];
int n,i,j;
scanf("%d",&n);//名字数
for ( i=0;i<n;i++)
scanf("%s",name[i]);
for (i=0;i<n;i++)
for (j=0;j<n-i-1;j++)
if (strcmp(name[j],name[j+1])>0)
strcpy(tmp,name[j]);
strcpy(name[j],name[j+1]);
strcpy(name[j+1],tmp);
for (i=0;i<n;i++)
printf("%s\n",name[i]);
return 0;
本回答被提问者采纳
以上是关于c语言通讯录排序按年龄从小到大输出的主要内容,如果未能解决你的问题,请参考以下文章