文章

18

粉丝

183

获赞

57

访问

102.5k

头像
1905 整数排序 读入回车跳出while+auto类的迭代器
P1905 华东师范大学2022年机试
发布于2022年9月1日 20:41
阅读数 4.3k

这题思路很简单

  • 输入num,得到本身的数值
  • 获取num的长度len
  • 按照结构体存储,根据规则自定义排序就行了

两个注意点:

  • 读入回车后结束输入的循环
        while (cin >> num)
        {
            if (cin.get() == '\n')
                break; //遇到回车停止输入
        }

    当输入一串数字,如10 20 30 40后输入回车,\n会在键盘缓冲区内,使用cin.get( )即可得到(也可以用ch=cin.get( )后在判断)。cin.get( )可以读入任意的单个字符

  • auto类代替iterator,写起来简单很多
        for (auto i : v)
        {
            cout << i.num << " ";
        }

 

 


具体代码如下:

#include <bits/stdc++.h>

using namespace std;

struct node
{
    int num;
    int len;
};

int get_len(int n)
{
    int res = 0;
    while (n)
    {
        n = n / 10;
        res++;
    }
    return res;
}

bool cmp(node a, node b)
{
    if (a.len == b.len)
    {
        return a.num < b.num;
    }
    else
    {
        return a.len > b.len;
    }
}

int main()
{
    vector<node> v;
    int num, len;
    while (cin >> num)
    {
        len = get_len(num);

   ...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发