zoukankan      html  css  js  c++  java
  • 北京理工大学复试上机--2013

    1、求两个数的最大公约数
    示例:
    输入:24 18
    输出:6
    #include <iostream>
    #include <math.h>
    using namespace std;
    int main() {
        int a, b, i, j, m;
        while (cin >> a >> b) {
            m = min(a, b);
            j = 0;
            for (i = 1; i <= m; i++) {
                if (a % i == 0 && b % i == 0) {
                    if (i > j) j = i;
                }
            }
            cout << j << endl;
        }
        return 0;
    }
    2、输入-组英文单词,按字典顺序(大写与小写字母具有相同大小写)
    排序输出.
    示例:
    输入: Information Info Inform info Suite suite suit
    输出: Info info Inform Information suit Suite suite
    #include <iostream>
    #include <vector>
    #include <map>
    #include <string>
    #include <algorithm>
    using namespace std;
    
    bool cmp(string s1, string s2)
    {
        for(int i = 0; i < s1.length(); i++) {
            s1[i] = tolower(s1[i]);
        }
        for(int i = 0; i < s2.length(); i++) {
            s2[i] = tolower(s2[i]);
        }
        return s1 < s2;
    }
    
    int main()
    {
        int num = 0;
        string s, str;
        vector<string> v, vv;
        map<string, int> m;
        while (getline(cin, s)) {
            for (int i = 0; i < s.length(); i++) {
                if (isalpha(s[i])) str += s[i];
                if (s[i] == ' ' || i + 1 == s.length()) {
                    v.push_back(str);
                    str = "";
                }
            }
            sort(v.begin(), v.end(), cmp);
            for (int i = 0; i < v.size(); i++) {
                cout << v[i] << " ";
            }
            cout << endl;
            v.clear();
        }
        return 0;
    }

    3、编写程序:输入表达式,输出相应二叉树的先序遍历结果(干脆中缀转前缀 后缀都给出了 ,有示例)
    输入: a+b*(c- -d)-e/f
    输出: -+a*b-cd/ef
    infix: a+b-a*((c+d)/e-f)+g
    suffix: ab+acd+e/f-*-g+
    prefix: +-+ab*a-/+cdefg

    #include <iostream>
    #include <stack>
    #include <map>
    #include <vector>
    #include <algorithm>
    using namespace std;
    
    string toSuf(string s)
    {
        map<char, int> isp, icp; //isp--in stack preority icp--in coming preority
        isp['('] = 1; isp['*'] = 5; isp['/'] = 5; isp['+'] = 3; isp['-'] = 3; isp[')'] = 6;
        icp['('] = 6; icp['*'] = 4; icp['/'] = 4; icp['+'] = 2; icp['-'] = 2; icp[')'] = 1;
        string sufstr;
        stack<char> opt; //operator
        for (int i = 0; i < s.length(); i++) {
            if (isalpha(s[i]) || (s[i] >= '0' && s[i] <= '9')) {
                sufstr += s[i];
            }
            else if (opt.empty() || icp[s[i]] > isp[opt.top()]) {
                opt.push(s[i]);
            }
            else {
                if (s[i] == ')') {
                    while (opt.top() != '(') {
                        sufstr += opt.top();
                        opt.pop();
                    }
                    opt.pop();
                }
                else {
                    while (!opt.empty() && isp[opt.top()] >= icp[s[i]]) {
                        sufstr += opt.top();
                        opt.pop();
                    }
                    opt.push(s[i]);
                }
            }
        }
        while (!opt.empty()) {
            sufstr += opt.top();
            opt.pop();
        }
        return sufstr;
    }
    
    string toPre(string s)
    {
        map<char, int> isp, icp; //isp--in stack preority   icp--in coming preority
        isp['('] = 6; isp['*'] = 4; isp['/'] = 4; isp['+'] = 2; isp['-'] = 2; isp[')'] = 1;
        icp['('] = 1; icp['*'] = 5; icp['/'] = 5; icp['+'] = 3; icp['-'] = 3; icp[')'] = 6;
        string prestr;
        stack<char> opt; //operator
        for (int i = s.length() - 1; i >= 0; i--) {
            if (isalpha(s[i]) || (s[i] >= '0' && s[i] <= '9')) {
                prestr += s[i];
            }
            else if (opt.empty() || icp[s[i]] >= isp[opt.top()]) {
                opt.push(s[i]);
            }
            else {
                if (s[i] == '(') {
                    while (opt.top() != ')') {
                        prestr += opt.top();
                        opt.pop();
                    }
                    opt.pop();
                }
                else {
                    while (!opt.empty() && isp[opt.top()] > icp[s[i]]) {
                        prestr += opt.top();
                        opt.pop();
                    }
                    opt.push(s[i]);
                }
            }
        }
        while (!opt.empty()) {
            prestr += opt.top();
            opt.pop();
        }
        reverse(prestr.begin(), prestr.end());
        return prestr;
    }
    
    int main()
    {
        int l;
        string s, sufstr, prestr;
        cout << "Infix:  ";
        while (getline(cin, s)) {
            sufstr = toSuf(s);
            prestr = toPre(s);
            cout << "Suffix: " << sufstr << endl
                 << "Prefix: " << prestr << endl;
            cout << endl << "Infix:  ";
        }
        return 0;
    }
     
  • 相关阅读:
    福大软工1816 · 第二次作业
    团队第一次作业
    软工实践 第三次作业 结对作业一
    软件工程-个人项目
    白茫茫一片真干净·福大软工1816 · 第一次作业
    Alpha 冲刺 (3/10)
    Alpha冲刺 (2/10)
    Alpha 冲刺(1)
    福大软工 · 第七次作业——需求分析报告
    福大软工 · 第八次作业(课堂实战)- 项目UML设计(团队)
  • 原文地址:https://www.cnblogs.com/ache/p/12571719.html
Copyright © 2011-2022 走看看