c++PTA类库

7-1 查找成绩并折算后输出 (10分)

文件:期中考试成绩.txt中有若干学生的姓名和数学期中考试成绩。 Smith 67 Anderson 75 Lewis 83 Cook 58 David 96 请你编写一个简单的查询成绩程序,当从键盘输入一个姓名时查找到他的数学期中考试分数并按照21%折算后输出。如果没找到则显示Not found. 由于目前的OJ系统暂时不能支持用户读入文件,我们编写程序从键盘输入文件中的姓名和成绩,当输入的名字为noname时,表示结束。noname后面有一个名字,需要查找其成绩。

输入格式:
Smith 67
Anderson 75
Lewis 83
Cook 58
David 96
noname (表示结束)
Bill

输出格式:
Not found.

输入样例:
Smith 67
Anderson 75
Lewis 83
Cook 58
David 96
noname
Lewis

输出样例:
17.43

#include <iostream>
#include <string>
#include <map>
using namespace std;
int main() 
{
    map<string, int> m;
    string a;
    int b;
    while(1) 
    {
        cin >> a;
        if (a == "noname")
            break;
        cin >> b;
        m.insert(pair<string, int>(a, b));
    }
    string s;
    cin >> s;
    map<string, int> :: iterator p = m.begin();
    p = m.find(s);
    if (p != m.end())
        cout << (p -> second) * 0.21 << endl;
    else
        cout << "Not found." << endl;
    return 0;
}

7-2 电话号码同步 (10分)
文件phonebook1.txt和phonebook2.txt中有若干联系人的姓名和电话号码。请你设计一个程序,将这两个文件中的电话号码同步。(所谓同步,就是将两个文件中的电话号码合并后剔除相同的人名和电话号码。请将同步后的电话号码按照姓名拼音顺序排序后保存到文件phonebook3.txt中。)

由于目前的OJ系统暂时不能支持用户读入文件和写文件,我们编写程序从键盘输入文件中的姓名和电话号码,当输入的单词为end时,表示文件结束。将同步后的电话号码按照姓名拼音顺序排序后输出。

输入格式:
张三 13012345678
李四 13112340000
王五 13212341111
马六 13312342222
陈七 13412343333
孙悟空 13512345555
end (表示文件phonebook1.txt结束) 张三 13012345678
孙悟空 13512345555
王五 13212341111
陈七 13412343333
唐三藏 13612346666
猪悟能 13712347777
沙悟净 13812348888
end (表示文件phonebook2.txt结束)

输出格式:
陈七 13412343333
李四 13112340000
马六 13312342222
沙悟净 13812348888
孙悟空 13512345555
唐三藏 13612346666
王五 13212341111
张三 13012345678
猪悟能 13712347777

输入样例:
Zhang3 13012345678
Li4 13112340000
Wang5 13212341111
Ma6 13312342222
Chen7 13412343333
SunWuKong 13512345555
end
Zhang3 13012345678
SunWuKong 13512345555
Wang5 13212341111
Chen7 13412343333
TangSanZang 13612346666
ZhuWuneng 13712347777
ShaWuJing 13812348888
end

输出样例:
Chen7 13412343333
Li4 13112340000
Ma6 13312342222
ShaWuJing 13812348888
SunWuKong 13512345555
TangSanZang 13612346666
Wang5 13212341111
Zhang3 13012345678
ZhuWuneng 13712347777

#include<iostream>
#include<set>
#include<vector>
#include<string>
#include<cstring>

using namespace std;
int main()
{
    set<string> A;
    string s1;
    set<string>::iterator p;
    for(int i=0;i<2;i++)
    {
        getline(cin,s1);
        while(s1!="end")
        {
            A.insert(s1);
            getline(cin,s1);
        }
    }
    p=A.begin();
    while(p!=A.end())
    cout<<*p++<<endl;
 } 

7-3 姓名排序 (10分)
从指定文本文件中读入若干学生姓名并按照拼音顺序排序后输出。 由于目前的OJ系统暂时不能支持用户读入文件和写文件,我们编写程序从键盘输入文件中的姓名,当输入的单词为end时,表示文件结束。将按照姓名拼音顺序排序后输出。
输入格式:
张三 李四 王五 马六 陈七 孙悟空 end

输出格式:
陈七 李四 马六 孙悟空 王五 张三

输入样例:
白富美
孙悟空
唐三藏
猪悟能
沙悟净
end

输出样例:
白富美 沙悟净 孙悟空 唐三藏 猪悟能

#include <iostream>
#include <string>
#include <set>
using namespace std;
int main() 
{
    string name;
    set<string> m;
    getline(cin, name);
    while (name != "end") 
    {
        m.insert(name);
        getline(cin, name);
    }
    set<string> :: iterator p = m.begin();
    while (p != m.end())
        cout << *p++ << " ";
}

猜你喜欢

转载自blog.csdn.net/weixin_45673283/article/details/105573363