870计算机基础一
研究生入学考试试题详解
PAGE 10
PAGE 1
目录
TOC \o "1-1" \h \z \u 1
一、2015年华中师范大学硕士研究生入学考试试题详解(重点回忆版,两道重点改变题型的题) 2
二、2014年华中师范大学硕士研究生入学考试试题详解 4
三、2013年华中师范大学硕士研究生入学考试试题详解(回忆版) 10
四、2012年华中师范大学硕士研究生入学考试试题详解 13
五、2011年华中师范大学硕士研究生入学考试试题详解 18
六、2010年华中师范大学硕士研究生入学考试试题详解 24
七、2009年华中师范大学硕士研究生入学考试试题详解 31
一、2015真题(重点回忆版,两道重点改变题型的题)
1思路
先将n个人的编号进队,然后反复执行如下操作,直到队列为空:
Step 1
出队一个的元素,输出其编号(报数为1的人出列);
Step 2
若队列不空,则再出队一个元素,并将刚出列的元素进队(报数为2的人站到队伍的最右端即队尾)
参考算法
#include
#include
void number(int n)
{
int i;elemtype e;
sqQueue q;//这里sqQueue为顺序队的类型
q.front=q.rear=0;
for(i=1;i<=n;i++)
{
q.rear=(q.rear+1)%MaxSize;//先进队,这里进队写法与书上写法稍微不同,不过两个都对,写哪个都行
q.data[q.rear]=i;
}
printf("报数出列顺序:" );
while(q.front!=q.rear)//队列不空循环
{
q.front=(q,front+1)%MaxSize;
e=q.data[q.front];//出队一个元素
printf("%d",e);
if(q.front!=q.rear)//队列不空
{
q.front=(q.front+1)%MaxSize;
e=q.data[q.front];// 出队一个元素
q.rear=(q.rear+1)%MaxSize;
q.data[q.rear]=e; //将刚出队的元素进队
}
}
printf("\n");
}
int main()
{
int i,n=8;
for(i=1;i<=n;i++)
{
printf("%d",i);
printf("\n");
number(n);
}
return 0;
}
int main()
{
int i,n=8;
for(i=1;i<=n;i++)
{
printf("%d",i);
printf("\n");
number(n);
}
return 0;
}
思路
先将转轨栈看成一个栈,将左边轨道看成队列,从键盘逐个输入表右边轨道上车皮编号的整数。
Step 1
若是奇数,则将其插入到表示左边轨道的顺序队列的队尾。
Step 2
若是偶数,则将其插入到表示转轨栈的顺序栈的栈顶。
Step 3
若当n个数都检测完毕,则首先按先进先出的顺序输出队列中的元素,然后再按后进先出的顺序输出栈中的元素
参考算法
#include <
#include
#define maxsize 100
void fun1()
{
int i,n,x;
int stack[maxsize],top=-1;//快速定义栈和队列
int queue[maxsize],front=0,rear=0;
printf("n:");
scanf("%d",&n);
for(i=0;i
{
printf("第%d个车皮编号:",i+1);
scanf("%d",&x);
if(x%2==1)//奇数则进队列
{
queue[rear]=x;
printf("%d进队\n",x);
rear++;
}
else//偶数则进栈
{
top++;
stack[top]=x;
printf("%d进栈\n",x);
}
}
while(front!=rear)//队列中所有元素出队
{
printf("%d出队",queue[front]);
front++;
}
while(top>=0)//