找回密码
 立即注册
  • QQ空间
  • 回复
  • 收藏

C/C++知识点之笔试题:C++打印队列

admin 2019-2-9 16:59 484人围观 C++相关

作者:职坐标在线

摘要:本文主要向大家介绍了 C/C++知识点之笔试题:C++打印队列,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

本文主要向大家介绍了 C/C++知识点之笔试题:C++打印队列,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

题目:打印队列

题目介绍:现在用打印机打印队列,已知打印任务有9个优先级(1-9),现在给出一系列任务,求输出打印顺序(任务下标,从0开始)。
例:
输入:9,3,5,4,7,1
输出:0,4,2,3,1,5
分析:第一点是不知道输入任务的个数,这个要用 reserve 指令来解决;第二点是不要忽略逗号,不要天真的忽略掉。要用到栈的相关知识,但又不能完全用栈来储存数据,因为要输出的是下标,这个一般要转换成数组来解决。
代码:

 1 #include 
 2 #include 
 3 #include 
 4 #include 
 5 using namespace std;
 6 int max(vector  p, int n);
 7 int main()
 8 {
 9     int n = 0;
10     int a;
11     char c;
12     vector  p;
13     p.reserve(100);
14     p.push_back(0);
15     int i = 0;
16     while (cin >> a)
17     {
18         p[n++] = a;
19         p.push_back(n);
20         if ((c = getchar()) == ‘\n‘)
21         {
22             break;
23         }
24     }
25     for (i = 0; i < n - 1; i++)
26     {
27         cout << max(p,n) << ",";//输出最大值的下标
28         p[max(p, n)] = 0;//输出一个值就初始化一个值
29     }
30     cout << max(p, n);
31 }
32 int max(vector  p, int n)
33 {
34     int a = 0, b = 0;
35     for (int i = 0; i < n; i++)
36     {
37         if (p[i] > a)
38         {
39             a = p[i];
40             b = i;
41         }
42     }
43     return b;
44 }




更多关于web前端、Java、大数据、人工智能、物联网等学习资源请加小职微信获取:


     
长按二维码加小职吧

在线等你


-------------------------------------------------------------------------
我们尊重原创,也注重分享,如若侵权请联系qter@qter.org。
-------------------------------------------------------------------------

鲜花

握手

雷人

路过

鸡蛋

yafeilinux和他的朋友们微信公众号二维码

微信公众号

专注于Qt嵌入式Linux开发等。扫一扫立即关注。

Qt开源社区官方QQ群二维码

QQ交流群

欢迎加入QQ群大家庭,一起讨论学习!

我有话说......