C语言提高-第21讲: 首尝排序——冒个泡(工资的排序)

来源:互联网 发布:监控设备域名 编辑:程序博客网 时间:2024/06/04 19:36

任务和代码:

/* *All rights reserved *文件名称:main.c *作者: Osseyda 完成日期:2017.10.20 *版本号:v2. *问题描述:从文件salary.txt中读入工人的工资(不超过500人),全部增加20%(好事),然后对工资数据进行排序,将排序后的结果保存到文件ordered_salary.txt中。*/  #include <stdio.h>#include <stdlib.h>int main(){    FILE *fp;    int n=0,i,j;    double a[500],t;    //将数据从文件读入数组,并将原数组元素扩大1.2倍    if((fp=fopen("salary1.txt","r"))==NULL){        printf("data cannot be opened");        exit(0);    }    while(fscanf(fp,"%lf",&a[n])!=EOF){//共n个数据        a[n]*=1.2;        n++;    }    fclose(fp);    //冒泡法排序数组元素    for(i=0;i<n-1;i++){        for(j=0;j<n-i-1;j++){            if(a[j]>a[j+1]){                t=a[j];                a[j]=a[j+1];                a[j+1]=t;            }        }    }    //将数据保存到文件    if((fp=fopen("order_salary.txt","w"))==NULL){        printf("order_salary cannot be opened");        exit(0);    }    for(i=0;i<n;i++)        fprintf(fp,"%f",a[i]);    fclose(fp);    printf("work's done!");}
salary1.txt


知识点总结:

       从文件中读取多个数据放入数组中;冒泡法排序;将数组中的数据保存到文件中


心得:

      这道题的感受是,原先用了一样的思路,order_salary.txt中始终出不来数据,找了半天的错误也没找到。重新编程又成功了微笑

      知道为什么了!在保存数据到文件的时候

if((fp=fopen("order_salary.txt","w"))==NULL)
      写成了
if(fp=(fopen("order_salary.txt","w"))==NULL)
      下次不会犯了!

阅读全文
0 0
原创粉丝点击