11.23 每日一c
本帖最后由 吾爱姚吕婧妍 于 2018-12-2 17:14 编辑/*通信录排序:建立一个通讯录,通讯录的结构记录包括:
姓名 生日 电话号码;期中生日又包括三项:年 月 日。
编写程序,定义一个嵌套的结构类型,输入n(n<10)个联系人的信息,
在按他们的的年龄从大到小的顺序依次输出其信息。试编写相应程序。
*/
//仅限年大小
#include<stdio.h>
struct birthday
{
int year;
int month;
int day;
} ;
struct Maillist
{
char name;
struct birthday date;
double Phonenumber;
} s,max;
int main()
{
int i,n,min;// i表示for循环的自变量,n表示输入多少个数据
printf("Enter you want to how much n ");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("name %d :",i+1);
scanf("%s",&s.name);
printf("Tel: ");
scanf("%lf",&s.Phonenumber);
printf("date of birth :");
scanf("%d%d%d" ,&s.date.year,&s.date.month,&s.date.day);
}
int j,m;
// j为for的第二个自变量循环
// m为记录记录最大的那个同学的序号
for(i=0;i<n;i++)
{
min=s.date.year;
m=i;
for(j=i+1;j<n;j++)
{
if(s.date.year<min)
{
min=s.date.year;
m=j;
}
//比较大小后的交换
max=s;
s=s;
s=max;
}
}
//打印
for(i=0;i<n;i++)
{
printf("%s %0.f %d %d %d \n" ,s.name,s.Phonenumber,s.date.year,s.date.month,s.date.day);
}
return 0;
}
// 此题的参考答案
#include<stdio.h>
structstudent
{
char name;
int birthday;//一开始我用char 发现不能比较(⊙o⊙)…
char Tel;
};
void studentsort(struct student s[],int t)
{
struct student map;//先再定义一个结构 方便判断语句的双值转换
int i,j;
for(i=1;i<t;i++)// i=1是只需要循环n-1次就可以排列整齐
{
for(j=0;j<t-1;j++)
{
//判断大的数字年龄越小放在后面
if(s.birthday>s.birthday)
{
map=s;
s=s;
s=map;
}
}
}
}
int main()
{
int i,n;
printf("Enter your want to input how much information : ");
scanf("%d",&n);
//定义一个结构
struct student pop;
for(i=0;i<n;i++)
{
printf("Please input name birthday Tel ");
scanf("%s %d %s",&pop.name,&pop.birthday,&pop.Tel);
}
studentsort(pop,n);
//打印
for(i=0;i<n;i++)
{
printf("name:%s birthday:%d Tel:%s\n",pop.name,pop.birthday,pop.Tel);
}
return 0;
}
可以的 兄弟{:1_921:} 可以的,兄弟!!这段语句写得非常的简洁完美!表达也是通俗易懂 代码简洁,不看注释竟然懂了 可以的,挺厉害的,贵在坚持 建议楼主看点代码规范的书,对你的学习会有好处的 可以的! 如果把下面的比较排序换成冒泡排序的方法会更简洁,另外代码写得不是很规范,影响不大 106lby9574972 发表于 2018-11-29 21:39
如果把下面的比较排序换成冒泡排序的方法会更简洁,另外代码写得不是很规范,影响不大
谢谢 提醒
虽然重新打过一遍答案
却还是该去拿着答案和自己比较一下了
页:
[1]