c/c++语言开发共享笔试题:C++打印队列

题目:打印队列 题目介绍:现在用打印机打印队列,已知打印任务有9个优先级(1-9),现在给出一系列任务,求输出打印顺序(任务下标,从0开始)。 例: 输入:9,3,5,4,7,1 输出:0,4,2,3,1,5 分析:第一点是不知道输入任务的个数,这个要用 reserve 指令来解决;第二点是不要忽略 …

题目:打印队列

题目介绍:现在用打印机打印队列,已知打印任务有9个优先级(1-9),现在给出一系列任务,求输出打印顺序(任务下标,从0开始)。

例:

输入:9,3,5,4,7,1

输出:0,4,2,3,1,5

分析:第一点是不知道输入任务的个数,这个要用 reserve 指令来解决;第二点是不要忽略逗号,不要天真的忽略掉。要用到栈的相关知识,但又不能完全用栈来储存数据,因为要输出的是下标,这个一般要转换成数组来解决。

代码:

 1 #include <iostream>  2 #include <string>  3 #include <conio.h>  4 #include <vector>  5 using namespace std;  6 int max(vector <int> p, int n);  7 int main()  8 {  9     int n = 0; 10     int a; 11     char c; 12     vector <int> 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 <int> 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 }

结果:

笔试题:C++打印队列

 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/607837.html

(0)
上一篇 2021年5月14日
下一篇 2021年5月14日

精彩推荐