在下面各世界顶级的奖项中,为计算机科学与技术领域做出杰出贡献的科学家设立的奖项是( )。
设栈S的初始状态为空,元素a, b, c, d, e 依次入栈,以下出栈序列不可能出现的有( )。
(2010)16 + (32)8的结果是( )。
设A=B=D=true,C=false,以下逻辑运算表达式值为真的有( )。
将5个数的序列排序,不论原先的顺序如何,最少都可以通过( )次比较,完成从小到大的排序。
与十进制数1770 对应的八进制数是( )。
高度为n的均衡的二叉树是指:如果去掉叶结点及相应的树枝,它应该是高度为n-1的满二叉树。在这里,树高等于叶结点的最大深度,根结点的深度为 0,如果某个均衡的二 叉树共有 2381 个结点,则该树的树高为( )。
某个车站呈狭长形,宽度只能容下一台车,并且只有一个出入口。已知某时刻该车站状态为空,从这一时刻开始的出入记录为:“进,出,进,进,进,出,出,进,进,进,出,出”。假设车辆入站的顺序为1,2,3,……,则车辆出站的顺序为( )。
在C++ 中,判断a不等于0且b不等于0的正确的条件表达式是( )
在C++ 中,表达式21^2的值是( )
在编程时(使用任一种高级语言,不一定是 C++),如果需要从磁盘文件中输入一个很大的二维数组(例如 1000*1000 的double 型数组),按行读(即外层循环是关于行的)与按列读(即外层循环是关于列的)相比,在输入效率上( )。
在下列各种排序算法中,不是以“比较”作为主要操作的算法是( )。
在下列关于计算机算法的说法中,不正确的是( )。
在下列关于计算机语言的说法中,不正确的是( )。
在计算机中,防火墙的作用是( )。
CPU是( )的简称。
Linux是一种( )。
以下断电之后仍能保存数据的有( )。
在下列各软件中,不属于NOIP竞赛(复赛)推荐使用的语言环境有( )。
已知6 个结点的二叉树的先根遍历是1 2 3 4 5 6(数字为结点的编号,以下同),后根遍历是3 2 5 6 4 1,则该二叉树的可能的中根遍历是( )
(找假币)现有80枚硬币,其中一枚是假币,其重量稍轻,所有真币的重量都相同,如果使用不带砝码的天平称重,最少需要几次,就可以找出假币?你还要指出第1次的称重方法。请写出你的结果:___。
(取石子游戏)现有5堆石子,石子数依次为3,5,7,19,50,甲乙两人轮流从任一堆中任取(每次只能取自一堆,不能不取),取最后一颗石子的一方获胜。甲先取,问甲有没有获胜策略(即无论乙怎样取,甲只要不失误,都能获胜)?如果有,甲第一步应该在哪一堆里取多少?请写出你的结果:________。
NOIP2006年第十二届普及组初赛阅读程序写结果:
#include <iostream.h>
void main()
{int i,u[4],a,b,x,y=10;
for(i=0;i<=3;i++)
cin >>u[i];
a=(u[0]+u[1]+u[2]+u[3])/7;
b=u[0]/((u[1]-u[2])/u[3]);
x=(u[0]+a+2)-u[(u[3]+3)%4];
if(x>10)
y+= (b*100-u[3])/(u[u[0]%3]*5);
else
y+=20+(b*100-u[3])/(u[u[0]%3]*5);
cout <<x<<","<<y<<endl;
} // 注:本例中,给定的输入数据可以避免分母为0或下标越界。输入:9 3 9 4
输出:_________
NOIP2006年第十二届普及组初赛阅读程序写结果:
#include "iostream.h"
#define N 7
int fun(char s[],char a,int n
{int j;
j=n;
while(a<s[j] && j>0) j--;
return j;
}
void main()
{char s[N+1];
int k;
for(k=1;k<=N;k++)
s[k]='A'+2*k+1;
cout <<fun(s,'M',N)<<endl;
}输出:_____
NOIP2006年第十二届普及组初赛阅读程序写结果:
#include <iostream.h>
void main()
{int i,j,m[]={2,3,5,7,13};
long t;
for (i=0;i<=4;i++)
{t=1;
for(j=1;j<m[i];j++) t*=2;
cout <<(t*2-1)*t<<" ";
}
cout <<endl;
}输出:______
NOIP2006年第十二届普及组初赛阅读程序写结果:
#include <iostream.h>
#include <iomanip.h>
void digit(long n,long m)
{if(m>0)
cout <<setw(2)<<n%10;
if(m>1)
digit(n/10,m/10);
cout <<setw(2)<<n%10;
}
void main()
{long x,x2;
cout <<"Input a number:"<<endl;
cin >>x;
x2=1;
while(x2<x) x2*=10;
x2/=10;
digit(x,x2);
cout <<endl;
}输入:9734526
输出:___________
NOIP2006年第十二届普及组初赛完善程序:(全排列)下面程序的功能是利用递归方法生成从1到n(n<10)的n个数的全部可能的排列(不一定按升序输出)。例如,输入3,则应该输出(每行输出5个排列):
123 132 213 231 321
312
程序:
#include <iostream.h>
#include <iomanip.h>
int n ,a[10]; // a[1],a[2],…,a[n]构成n个数的一个排列
long count=0; // 变量count记录不同排列的个数,这里用于控制换行
void perm(int k)
{int j,p,t;
if( ① )
{count++;
for(p=1;p<=n;p++)
cout <<setw(1)<<a[p];
cout <<" ";
if( ② ) cout <<endl;
return;
}
for(j=k;j<=n;j++)
{t=a[k];a[k]=a[j];a[j]=t;
③ ;
t=a[k]; ④ ;
}
}
void main()
{int i;
cout <<"Entry n:"<<endl;
cin >>n;
for(i=1;i<=n;i++) a[i]=i;
⑤ ;
}NOIP2006年第十二届普及组初赛完善程序:由键盘输入一个奇数 P (P<100,000,000),其个位数字不是 5,求一个整数 S,使 P×S =1111...1 ( 在给定的条件下,解 S 必存在)。要求在屏幕上依次输出以下结果:
(1)S 的全部数字。除最后一行外,每行输出 50 位数字。 (2) 乘积的数字位数。
例1:输入p=13,由于13*8547=111111,则应输出(1)8547,(2)6
例2输入p=147,则输出结果应为
(1)755857898715041572184429327286470143613
(2)42,即等式的右端有42个1。
程序:
#include <iostream.h>
#include <iomanip.h>
void main()
{long p,a,b,c,t,n;
while (1)
{ cout <<"输入 p, 最后一位为 1 或 3 或 7 或 9:"<<endl;
cin >>p;
if ((p%2!=0)&&(p%5!=0)) // 如果输入的数符合要求,结束循环
⑥ ;
}
a=0; n=0;
while (a<p)
{a=a*10+1;
n++; // 变量a存放部分右端项,n为右端项的位数
}
t=0;
do
{b=a/p;
cout <<setw(1)<<b;
t++;
if ( ⑦ )
cout <<endl;
c= ⑧ ; a= ⑨ ; n++;
} while (c>0);
cout<<endl<<"n="<< ⑩ <<endl;
}