C++第15周(春)项目1 - 工资数据的输入

简介: 课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759,内有完整教学方案及资源链接【项目1-工资数据的输入】(本程序中需要的相关文件,请到http://pan.baidu.com/s/1qW59HTi下载。)  (1)输入若干职工的工资(1000-10000的数字),将这些数字按降序排序后输出。输入样例:3736.9

课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759,内有完整教学方案及资源链接


【项目1-工资数据的输入】(本程序中需要的相关文件,请到http://pan.baidu.com/s/1qW59HTi下载。)

  (1)输入若干职工的工资(1000-10000的数字),将这些数字按降序排序后输出。

输入样例:
3736.98 9169.35 5595.57 1006 6631.19 5917.13 6076.89 9692.97 9771.73^Z
输出样例:
9771.73 9692.97 9169.35 6631.19 6076.89 5917.13 5595.57 3736.98 1006
提示:用键盘输入时,需要用^Z作为结束。

参考解答:

#include <iostream>
using namespace std;
int main( )
{
    double salarys[500];
    int n=0;
    while(cin>>salarys[n])
    {
        n++;   //从cin流读取数据
    }
    //将n名职工的工资排序后输出
    int i,j;
    double t;
    for(j=0; j<n-1; j++)
        for(i=0; i<n-j-1; i++)
            if (salarys[i]<salarys[i+1])
            {
                t=salarys[i];
                salarys[i]=salarys[i+1];
                salarys[i+1]=t;
            }
    for(j=0; j<n; j++)
        cout<<salarys[j]<<endl;
    return 0;
}

  (2)在软件开发过程中,为了调试程序,常常需要多次运行程序。多次运行的输入常相同,不免感到麻烦,尤其当数据量还偏多之时。人在做着毫无技术含量的事情!
  可以用的简便方法是,用输入重定向避免这种重复:请自建一个文件a.txt,包含上面输入样例中的数据,在(1)的程序中,while之前加句freopen("a.txt","r",stdin);,return 0;之前加一句fclose(stdin);,然后运行程序……。要习惯用这种方式。
  提示1:OJ快手们常用的做法是,开考之前,做一个程序模板如下,这样可以提高效率。这个技巧可以用于考试,只要将输入样例中的输入放入文件即可不过提交时务必注意将freopen一行加上注释。

参考解答:

#include <iostream>
#include <cstdio>
using namespace std;
int main( )
{
    double salarys[500];
    int n=0;
    freopen("a.txt","r",stdin);
    while(cin>>salarys[n])
    {
        n++;   //从cin流读取数据
    }
    //将n名职工的工资排序后输出
    int i,j;
    double t;
    for(j=0; j<n-1; j++)
        for(i=0; i<n-j-1; i++)
            if (salarys[i]<salarys[i+1])
            {
                t=salarys[i];
                salarys[i]=salarys[i+1];
                salarys[i+1]=t;
            }
    for(j=0; j<n; j++)
        cout<<salarys[j]<<endl;
    fclose(stdin)
    return 0;
}

  (3)在实际的应用中,数据并不是从键盘输入。输入重定向的方式也并非“正当”的渠道。工程中的做法是将数据放入专门的文件等待处理。

  下载文件salary.txt,其中有不超过500名职工的工资。编程序读入这些职工的工资,将按降序排序后显示并保存到文件ordered_salary.txt中。

参考解答:

#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
int main( )
{
    double salarys[500];
    ifstream infile("salary.txt",ios::in);  //以输入的方式打开文件
    if(!infile)       //测试是否成功打开
    {
        cerr<<"open error!"<<endl;
        exit(1);
    }
    int n=0;
    while(infile>>salarys[n])
    {
        n++;   //从cin流读取数据
    }
    //将n名职工的工资排序后输出
    int i,j;
    double t;
    for(j=0; j<n-1; j++)
        for(i=0; i<n-j-1; i++)
            if (salarys[i]<salarys[i+1])
            {
                t=salarys[i];
                salarys[i]=salarys[i+1];
                salarys[i+1]=t;
            }
    //输出结果
    ofstream outfile("ordered_salary.txt",ios::out);
    if(!outfile)    //测试文件打开操作是否成功,不成功则提示后退出。
    {
        cerr<<"open error!"<<endl;
        exit(1);
    }
    for(i=0; i<n; i++)
    {
        outfile<<salarys[i]<<endl;
        if(i%5==0) cout<<endl;
        cout<<salarys[i]<<"\t";
    }
    outfile.close();     //关闭文件。用完了必须关闭,否则会丢失数据
    return 0;
}



================= 迂者 贺利坚 CSDN博客专栏=================
|== IT学子成长指导专栏 专栏文章的分类目录(不定期更新) ==|
|== C++ 课堂在线专栏  贺利坚课程教学链接(分课程年级) ==|
|== 我写的书——《逆袭大学——传给IT学子的正能量》    ==|
===== 为IT菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 =====




目录
相关文章
|
28天前
|
存储 前端开发 Java
【C++ 多线程 】C++并发编程:精细控制数据打印顺序的策略
【C++ 多线程 】C++并发编程:精细控制数据打印顺序的策略
43 1
|
29天前
|
开发工具 C语言 C++
CMake构建大型C/C++项目:跨平台设计与高级应用(二)
CMake构建大型C/C++项目:跨平台设计与高级应用
41 0
|
8天前
|
存储 算法 Linux
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
25 6
|
17天前
C/C++test两步完成CMake项目静态分析
通过将C/C++test集成到CMake项目中,并根据项目的需要进行配置,可以在两步内完成CMake项目的静态分析。这样可以帮助开发人员及时发现并修复潜在的代码问题,提高代码质量和可靠性。
8 0
|
24天前
|
IDE 算法 编译器
快速掌握陌生C++项目的科学与心理学策略
快速掌握陌生C++项目的科学与心理学策略
56 0
|
24天前
|
敏捷开发 安全 API
C/C++ 工程师面试:如何精彩展示你的项目经验并获得高分
C/C++ 工程师面试:如何精彩展示你的项目经验并获得高分
71 0
|
28天前
|
存储 缓存 安全
【C/C++ 关键字 存储类说明符】C/C++ 的mutable 关键字 忽略对该数据成员的常量性检查在const函数中修改变量值
【C/C++ 关键字 存储类说明符】C/C++ 的mutable 关键字 忽略对该数据成员的常量性检查在const函数中修改变量值
28 0
|
29天前
|
消息中间件 存储 算法
【C/C++ 泡沫精选面试题04】在实际项目中,多进程和多线程如何选择?
【C/C++ 泡沫精选面试题04】在实际项目中,多进程和多线程如何选择?
43 1
|
29天前
|
编译器 持续交付 项目管理
CMake构建大型C/C++项目:跨平台设计与高级应用(三)
CMake构建大型C/C++项目:跨平台设计与高级应用
37 0
|
29天前
|
编译器 Linux C语言
CMake构建大型C/C++项目:跨平台设计与高级应用(一)
CMake构建大型C/C++项目:跨平台设计与高级应用
66 0