// 001.cpp : 定义控制台应用程序的入口点。
//
/************************************************************************/
/* 将存放的worker.rec职工数据按照工资高低进行排序写到文件中 */
/************************************************************************/
#include "stdafx.h"
#define N 10
typedef struct workData{
int num;
char name[30];
char sex[5];
int age;
float salary;
}Employee;
//read data
void readWordData(Employee* employee, int fileType)
{
if ( !employee ) return;
FILE *fp;
Employee temp = {0};
if ( 1 == fileType )
{
fopen_s(&fp, "workdata.rec", "rb");
}
else if( 2 == fileType )
{
fopen_s(&fp, "workdata2.rec", "rb");
}
if ( fp )
{
fread(&temp, sizeof(temp), 1, fp);
while ( !feof(fp) )
{
*employee++ = temp;
fread(&temp, sizeof(temp), 1, fp);
}
}
fclose(fp);
}
void writeWordData(Employee* employee, int size)
{
if ( !employee ) return;
FILE *fp;
fopen_s(&fp, "workdata2.rec", "wb");
if ( fp )
{
fwrite(employee, size, 1, fp);
fflush(fp);
fclose(fp);
}
}
//sort
void sortEmployeeBySalary(Employee* employee, int length)
{
//45.25 20.25 23.21 1.56 56.98
//56.98 45.25 20.25 23.21 1.56
#if 1
Employee temp = {0};
for(int i = 0;i < length;++i)
{
for(int j = i+1; j < length;++j)
{
if ( employee[j].salary > employee[i].salary )
{
temp = employee[i];
employee[i] = employee[j];
employee[j] = temp;
}
}
}
#endif
#if 0
Employee temp = {0};
bool bChange = false;
for(int i = length -1;i >= 0;--i)
{
for(int j = 0;j < i;++j)
{
if ( employee[j].salary < employee[j+1].salary )
{
temp = employee[j];
employee[j] = employee[j+1];
employee[j+1] = temp;
bChange = true;
}
}
if ( !bChange )
{
break;
}
}
#endif
}
void display(Employee* employee, int length, int printfType)
{
if ( !employee ) return;
if ( 1 == printfType )
{
printf("未按高工资排序:\n");
}
else if( 2 == printfType )
{
printf("按高工资排序后:\n");
}
for(int i = 0;i < length; ++i)
{
printf("%d %s %s %d %f\n", employee[i].num, employee[i].name, employee[i].sex, employee[i].age, employee[i].salary);
}
printf("\r\n");
}
int _tmain(int argc, _TCHAR* argv[])
{
Employee employee[N] = {0};
readWordData(employee, 1);
display(employee, N, 1);
sortEmployeeBySalary(employee, sizeof(employee)/sizeof(Employee));
writeWordData(employee, sizeof(employee)/sizeof(Employee));
readWordData(employee, 2);
display(employee, N, 2);
return 0;
}
#if 0
void initData()
{
Employee employee[] =
{
{ 1,"a1", "男", 23, 5678.67},
{ 2,"a2", "男", 24, 1678.67},
{ 3,"a6", "男", 23, 3678.67},
{ 4,"a1", "女", 26, 8678.67},
{ 5,"b1", "男", 23, 9678.67},
{ 6,"c1", "男", 29, 2678.67},
{ 7,"d1", "女", 35, 12678.67},
{ 8,"d1", "男", 23, 2678.67}
};
FILE* fp;
fopen_s(&fp, "workdata.rec", "wb");
if ( fp )
{
fwrite(employee,sizeof(employee), 1, fp);
printf("success!");
fclose(fp);
}
}
#endif
相关推荐
沪江英语:纽约时报每日一篇.chm 沪江英语:纽约时报每日一篇.chm 沪江英语:纽约时报每日一篇.chm
开源App项目,每天一张精选倩图、一个精选小视频,一篇知乎美文
博客:sivagao的博客,每天一篇好文章〜
英语四级单词学习每日必备 整理 自带音标 例句
小编两天都没有更新文章了,小伙伴们是不是等着急了,今天开始再继续我们的《每天一篇javascript学习小结》系列文章,希望大家继续关注。 1、Function 函数调用(类似call方法) function callSomeFunction(some...
每天一篇废话 使用@lwys-pkg-releaser/node-bullshit-generator生成,纯属娱乐。 人生哲理 2021-02-13 这种事实对本人而言意义重大,相信对这个世界也是有一定意义的。从这个角度来看,问题的关键究竟为何?这是发生...
微信小程序-狗蛋TV是一个分享打动人心事物的微信小程序。gordanLee每天都会推荐一首歌、一篇文章、一段短视频,每天用十分钟的细碎时光,点燃内心的光明。.zip
这是一篇17年机器人基于模型的强化学习综述,作者对强化学习的各个部分发展,并在各种机器人的应用做了介绍,本文适合对于强化学习模型改进能有一些帮助。 摘要 强化学习是一种吸引机器人学习新任务的方法。相关文献...
每天一篇文章、一句话、一张图,满足你的阅读习惯,满足你的小清新与小文艺使用到的知识点都不难,也不是很多主要是巩固知识、理解项目结构这之类当然了,如果喜欢这个APP也可以安装在手机上,每天一阅读,满满文艺...
当作为一个构造函数(带有运算符 new)调用时,Boolean() 将把它的参数转换成一个布尔值,并且返回一个包含该值的 Boolean 对象。 如果作为一个函数(不带有运算符 new)调用时,Boolean() 只将把它的参数转换...
match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。 该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置。 语法 stringObject.match(searchvalue) ...
主要介绍了javascript中的RegExp对象知识点,对RegExp对象的基本使用方法,以及各种方法进行整理,感兴趣的小伙伴们可以参考一下
1、字符转换 var s1 = 01; var s2 = 1.1; var s3 = z;//字母'z'无法转换为数字,所以或返回NaN var b = false; var f = 1.1; var o = { valueOf: function() { return -1; } }; s1 = -s1;... /
主要介绍了javascript中的Array数组知识点,对数组的基本使用方法,以及各种方法进行整理,感兴趣的小伙伴们可以参考一下
主要介绍了javascript中的Date对象知识点,对Date对象的基本使用方法,以及各种方法进行整理,感兴趣的小伙伴们可以参考一下