您的位置:首页 > 其它

结构体排序

2018-01-11 20:59 85 查看
// 1、假如有5个学生,按照年龄排序,如果年龄相同,按照成绩排序

// struct student

// {

// 	char name[50];//姓名

// 	unsigned int age;

// 	int score;//成绩

// };

#include <stdio.h>

typedef struct student
{
char name[50];//姓名
unsigned int age;
int score;//成绩
}student;

void print_stu(student *stu, int n)
{
int i = 0;

printf("name\tage\tscore\n");
for(i = 0; i < n; i++)
{
printf("%s\t%d\t%d\n", stu[i].name, stu[i].age, stu[i].score);
};
}

void sort_stu(student *stu, int n)
{
int i = 0;
int j = 0;
student tmp; //临时结构体变量

//冒泡排序,按照年龄排序,如果年龄相同,按照成绩排序
for(i = 0; i < n-1; i++)
{
for(j = 0; j < n-1-i; j++)
{
if(stu[j].age > stu[j+1].age) //升序
{
tmp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = tmp;
}
else if(stu[j].age == stu[j+1].age)//如果年龄相同,按照成绩排序
{
if(stu[j].score > stu[j+1].score)
{
tmp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = tmp;
}
}
}
}
}

int main()
{
student stu[5] =
{
{"mmm", 18, 90},
{"jjj", 18, 80},
{"lily", 30, 70},
{"lucy", 22, 88},
{"lilei", 33, 60}
};

int n = sizeof(stu)/sizeof(stu[0]);

printf("排序前:\n");
print_stu(stu, n);

//排序
sort_stu(stu, n);

printf("排序后:\n");
print_stu(stu, n);

return 0;
}

模拟闹钟

#include <stdio.h>
#include <time.h>
#include <unistd.h>

typedef struct Time
{//表示时间的数据类型

int hour;
int minute;
int second;
}Time;

int main()
{
Time m_date;

m_date.hour = 10;
m_date.minute = 00;
m_date.second = 00;

printf("当前时间为:\n");

while(1)
{
sleep(1);
m_date.second++;
if(m_date.second >= 60)
{
m_date.second = 0;

m_date.minute++;
if(m_date.minute >= 60)
{
m_date.minute = 0;

m_date.hour++;
if(m_date.hour >= 24)
{
m_date.hour = 0;
}
}
}
printf("\r%02d:%02d:%02d",m_date.hour,m_date.minute,m_date.second);
fflush(stdout);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: