提高项目20-工资的排序

任务和代码:从文件salary.txt中读入工人的工资(不超过500人),全部增加20%(好事),然后对工资数据进行排序,将排序后的结果保存到文件ordered_salary.txt中

/*
文件名:main.c
作者:小风景
完成日期:2016.7.4
问题描述:从文件salary.txt中读入工人的工资(不超过500人),全部增加20%(好事),然后对工资数据进行排序,将排序后的结果保存到文件ordered_salary.txt中
程序输出:
*/

#include <stdio.h>
#include <string.h>

#define LENGTH 500

int GetInfoFromFile(double *salary);
int SequencingSalary(double *salary);
int WriteInfoIntoFile(double *salary);

int main()
{
    double salary[LENGTH] = {0};
    int result = -1; //检测函数是否执行成功

    result = GetInfoFromFile(salary);
    if(result != 0 )
    {
        return result;
    }

    result = SequencingSalary(salary);
    if(result != 0 )
    {
        return result;
    }

    result = WriteInfoIntoFile(salary);
    if(result != 0 )
    {
        return result;
    }

    return result;
}

/*
函数功能:从文件中读取数据到数组中
返回值:返回0表示成功,其他表示失败
*/
int GetInfoFromFile(double *salary)
{
    int i = 0;
    FILE *fp = NULL;

    if((fp = fopen("salary.txt","r"))  == NULL)
    {
        printf("salary file open erroe!");
        return -1;
    }

    while(fscanf(fp,"%lf",&salary[i]) != EOF)
    {
        salary[i] *=  1.2;
        i++;
    }

    fclose(fp);
    return 0;
}

/*
函数功能:将数组中的元素排序(冒泡排序法)
返回值:返回0表示成功
*/
int SequencingSalary(double *salary)
{
    int i,j;
    double temp = 0;
    for(i = 0;i < LENGTH - 1;i++)
    {
        for(j = 0;j < LENGTH - i - 1;j++)
        {
            if(salary[j] > salary[j + 1])
            {
                temp = salary[j];
                salary[j] = salary[j + 1];
                salary[j + 1] = temp;
            }
        }

    }

    return 0;
}

/*
函数功能:将数组中的元素写入文件中
返回值:返回0表示成功
*/
int WriteInfoIntoFile(double *salary)
{
    int i = 0;
    FILE *fp = NULL;

    if((fp = fopen("ordered_salary.txt","w+"))  == NULL)
    {
        printf("ordered_salary file open erroe!");
        return -1;
    }

    for(i = 0;i < LENGTH;i++)
    {
        fprintf(fp,"%.2f\n",salary[i]);
    }

    printf("Thanks,byebye!\n");
    fclose(fp);
    return 0;
}



程序运行结果:





总结:这个程序运用函数的思想分三个步骤完成工资排序的功能,一个函数打开文件读取数据到数组,另一个函数进行排序,最后一个函数讲数组输入到新的文件,因此main函数中只需定义需要传入函数的实参数组,然后各个函数根据相应的功能对数组进行操作,包括向数组输入数据,将数组中的数据输出到文档,其中三个函数对同一个参数salary进行操作,三个函数都能改变salary中的值,但实际上只有输入函数改变了salary中中的值。这个程序中还体现了使用指针作为参数的思想,指针指向数组。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值