试题四
阅读下列程序说明和 C 代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
[程序 4 说明]
本程序用古典的 Eratosthenes 的筛法求从 2 起到指定范围内的素数。如果要找出 2 至
10 中的素数,开始时筛中有 2 到 10 的数,然后取走筛中的最小的数 2,宣布它是素数,并
把该素数的倍数都取走。这样,第一步以后,筛子中还留下奇数 3、5、7、9:重复上述步
骤,再取走最小数 3,宣布它为素数,并取走 3 的倍数,于是留下 5、7。反复重复上述步骤,
直至筛中为空时,工作结束,求得 2 至 10 中的全部素数。
程序中用数组 sieve 表示筛子,数组元素 sieve[i]的值为 1 时,表示数 i 在筛子中,值为
-1 时表示数 i 已被取走。
[程序 4]
#include
#define MAX 22500
main()
{
/*range 指出在多大的范围内寻找素数 */
unsigned int i , range , factor , k ;
int sieve[MAX] ;
printf(“please input the range : ”);
scanf(“%d”,&range);
for (i=2 ; i<=range ; i++)
/* 筛子初始化 */
(1) ;
factor=2 ;
while (factor<=range) {
if (
(2)
)
{
/*筛子最小数是素数 */
printf(“%d\t”,factor);
k=factor;
while (k<=range)
{
/*移走素数的倍数 */
(3)
;
/*筛中的个数减一 */
k=
(4)
;
}
}
(5)
;
}
试题五
阅读下列函数说明和 C 代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
设二叉树的结点数据类型为:
typedef struct node{
char data;
struct node *left;
struct node *right:
}BTREE;
[函数 5.1 说明]
函数 void SortTreelnsert(BTREE **tree,BTREE*s)采用递归方法,将结点 s 插入以
*tree 为根结点指针的二叉排序树(二叉查找树)中。
[函数 5.1)
void SortTreelnsert(BTREE **tree,BTREE *S)
{ if(*tree = = NULL)
*tree=S;
else if(S->data<(*tree)->data)
SortTreelnsert( (1) ,S);
else if(S->data>(*tree)->data)
SortTreelnsert(
(2) ,S);
}
[函数 5.2 说明]
函数 void TraversalTree(BTREE *tree)用非递归方法,对以 tree 为根结点指针的二
叉树进行后序遍历。
[函数 5,2]
void TraversalTree(BTREE *tree)
{
BTREE *stack[1000],*p;
int tag[1000],top=0;
p=tree;
do
{
while(p!=NULL){
stack[++top]=p;
(3)
;
tag[hop]=0; /*标志栈顶结点的左子树已进行过后序遍历*/ :
}
while(top>0 &&
(4)
){
/* 栈顶结点的右子树是否被后序遍历过*/
p=stack[top--];
putchar(p->data);
/*对栈顶结点的右子树进行后序遍历*/
}
if (top>0) {
(5)
;
tag[top]=1;
}
}while(top>0);
}
试题一
(1) 3
(2) 4
(3) 1111
(4) 或(加)
(5) 与(乘)
试题三
(1) i-1
(2) a[j+1] = a[j]
(3) a[j+1] = t
(4) k > 1
(5) a+1 , k-2
试题五
(1) &((*tree) -> left)
(2) &((*tree) -> right)
参考答案
试题二
(1) s1++
(2) *s1= *s2
(3) n<=0 ? ? n>=MAXLINE
(4) a[i] > a[*index]
(5) a[*index]
试题四
(1) sieve[i] = 1
(2) sieve[factor] == 1 或 sieve[factor] >
0 或
0 或
sieve[factor] != -1
sieve[factor]
>=
(3) sieve[k] = -1
(4) k+factor
(5) factor++
(4)tag[top]
tag[top] != 0
==
1 或 tag[top] 或
(3) p = p -> left 或 p = stack[top] -> left (5) p = stack[ top ] -> right