青少年软件编程(C语言)等级考试试卷(六级)
分数:100 题数:4
一、编程题(共4题,共100分)
1.
小白鼠再排队
N只小白鼠(1 < N < 100),每只鼠头上戴着一顶有颜色的帽子。现在称出每只白鼠的重量,要求按照白鼠重量从小到大的顺序输出它们头上帽子的颜色。帽子的颜色用 “red”,“blue”等字符串来表示。不同的小白鼠可以戴相同颜色的帽子。白鼠的重量用整数表示。
时间限制:1000
内存限制:65536
输入
输入第一行为一个整数N,表示小白鼠的数目。 下面有N行,每行是一只白鼠的信息。第一个为正整数,表示白鼠的重量,不超过整型范围;第二个为字符串,表示白鼠的帽子颜色,字符串长度不超过10个字符。 注意:白鼠的重量各不相同。
输出
按照白鼠的重量从小到大的顺序输出白鼠的帽子颜色。
样例输入
3
30 red
50 blue
40 green
样例输出
red
green
blue
试题编号:20240323-6-01
试题类型:编程题
标准答案:
试题难度:一般
试题解析:
展示地址:点击浏览
考生答案:
#include <bits/stdc++.h>
using namespace std;
struct shu
{
int n;
string s;
}a[100010];
bool cmp(shu a,shu b)
{
return a.n<b.n;
}
int main()
{
int N;
cin>>N;
for(int i=0;i<N;i++)
{
cin>>a[i].n>>a[i].s;
}
sort(a,a+N,cmp);
for(int i=0;i<N;i++)
{
cout<<a[i].s<<endl;
}
}
考生得分:25
是否评分:已评分
评价描述:
2.
扩号匹配问题
在某个字符串(长度不超过100)中有左括号、右括号和大小写字母;规定(与常见的算数式子一样)任何一个左括号都从内到外与在它右边且距离最近的右括号匹配。写一个程序,找到无法匹配的左括号和右括号,输出原来字符串,并在下一行标出不能匹配的括号。不能匹配的左括号用"$"标注,不能匹配的右括号用"?"标注.
时间限制:3000
内存限制:65536
输入
输入包括多组数据,每组数据一行,包含一个字符串,只包含左右括号和大小写字母,
字符串长度不超过100
输出
对每组输出数据,输出两行,第一行包含原始输入字符,第二行由"$","?"和空格组成,"$"和"?"表示与之对应的左括号和右括号不能匹配。
样例输入
((ABCD(x)
)(rttyy())sss)(
样例输出
((ABCD(x)
$$
)(rttyy())sss)(
? ?$
试题编号:20240323-6-02
试题类型:编程题
标准答案:
试题难度:一般
试题解析:
展示地址:点击浏览
考生答案:
#include <bits/stdc++.h>
using namespace std;
char a[101],b[101];
int up(int c)
{
if(c==-1) return -1;
else if(b[c]=='$') return c;
else return up(c-1);
}
int main()
{
while(scanf("%s",a)!=-1)
{
printf("%s\n",a);
int n=strlen(a);
memset(b,' ',sizeof(b));
for(int i=0;i<n;i++)
{
if(a[i]=='(') b[i]='$';
else if(a[i]==')')
{
int m=up(i-1);
if(m==-1) b[i]='?';
else b[m]=' ';
}
}
printf("%s\n",b);
}
return 0;
}
考生得分:25
是否评分:已评分
评价描述:
3.
stack or queue
栈和队列都是常用的线性结构,它们都提供两个操作:
Push
:加入一个元素。
Pop
:弹出一个元素。
不同的是,栈是
”
先进后出
”
,而队列则是
”
先进先出
”
。
给出一个线性结构的进出顺序,判定这个结构是栈还是队列。
时间限制:1000
内存限制:65535
输入
第一行输入一个整数t,代表有t组测试数据 对于每组测试数据,第一行输入一个整数n,代表操作的次数。 随后输入n行,每行包含两个整数 type val。 当type = 1时,表示该次操作为push操作,val表示进入的数字。当type=2时,表示该次操作为pop操作,val代表出来的数字。 3<=n<=2000
输出
每组测试数据输出一行。 输出该组数据对应的线性结构,”Stack” 或者 “Queue”。 题目保证是栈或者队列的一种。
样例输入
2
6
1 1
1 2
1 3
2 3
2 2
2 1
4
1 1
1 2
2 1
2 2
样例输出
Stack
Queue
试题编号:20240323-6-03
试题类型:编程题
标准答案:
试题难度:一般
试题解析:
展示地址:点击浏览
考生答案:
#include <bits/stdc++.h>
using namespace std;
string Struct;
bool H;
int push[2005];
int pop[2005];
int main()
{
int t;
cin>>t;
while(t--)
{
int n,type,val,Innum=0,Outnum=0;
cin>>n;
for(int i=0;i<n;++i)
{
cin>>type>>val;
if(type==1)
{
push[Innum++]=val;
}
else
{
pop[Outnum++]=val;
}
}
int num=min(Innum,Outnum);
H=false;
for(int i=0;i<num;++i)
{
if(push[i]!=pop[i])
{
Struct="Stack";
H=true;
break;
}
}
if(!H) Struct="Queue";
cout<<Struct<<endl;
}
return 0;
}
考生得分:25
是否评分:已评分
评价描述:
4.
利用队列进行数字排序
对于N个数字,有人提出了如下的排序策略:
例如,对于数字53、47、85、38、64、23
先建立10个队列(0到9),用于存放数字的大小,将这N个数字依个位存放入各自的队列之中,然后再按队列0到队列
9
依次出队。
例如,对于上面的数字,依次进队后,结果如下:
队列3:53、23 队列4
202403C语言六级,2024年3月电子学会C语言编程等级考试六级真题