计算机专业基础知识掌握描述,计算机专业基础自测题库(1)---程序设计基础...

来自微信公众账号:开点工作室(kaidiancs)

导语:计算机专业基础包括了程序设计,数据结构,算法,操作系统,计算机系统,计算机网络,编译原理,数据库技术等内容,是每个计算机专业学生必须要认真学习和熟练掌握的基本功,也是IT企业招聘程序员进行笔试面试的必考内容。临近期末,为了能让大家更好的复习专业基础知识,我们将陆续推送一批高质量的计算机专业基础知识练习题,大家可以测评一下自己基础知识的掌握情况,打造自己的专业知识题库为准备明年的春季招聘查漏补缺。今天推出第一期,有关程序设计基础知识的测试题目,内容包括C语言和数据结构。

1.下列运算符中优先级别最高的是

A.<

B.!

C.!=

D.&&

2.if语句的格式如下

if ( 表达式 ) 语句

其中的“表达式”

A.必须是逻辑表达式

B.必须是关系表达式

C.可以是逻辑表达式或关系表达式

D.可以是任意合法的表达式

3.C语言中数组名作为函数参数时,其数据传递方式是

A.地址传递

B.单向值传递

C.返回值传递

D.全局变量传递

4.下面程序的运行结果是

main ( )

{   int a=3, b=4, *q=&b;

*q= a+b;  a = 5;

q =(a

printf ( "%d %d %d\n", a, b, *q );

}

A.3 4 4

B.3 4 5

C.5 7 5

D.5 7 7

5.已知:

struct date

{   int year;

int month;

int day;

} d, *p = &d;

下列引用结构成员的表达式中,错误的是

A.*p->year

B.d.day

C.p->month

D.(*p).year

6.在下列时间复杂度中,最大的是

A.O(n)

B.O( n log2 n)

C.O(n2)

D.O(2n)

7.在长度为n的链表的第i个节点后插入一个新节点,需要移动的节点数是

A.0

B.i

C.n-i

D.n-i+1

8.下列关于循环队列的叙述中,正确的是

A.队头指针固定不变,队尾指针随队列长度变化

B.队尾指针固定不变,队头指针随队列长度变化

C.队头指针可以大于队尾指针,也可以小于队尾指针

D.队头指针只能小于等于队尾指针,两者的差值为队长

9.下列关于哈夫曼树的叙述中,错误的是

A.哈夫曼树中没有度为1的节点

B.哈夫曼树是带权路径长度最小的二叉树

C.一组互不相同的权值可唯一确定一棵哈夫曼树

D.哈夫曼树的节点总数等于叶节点数的2倍减1

10.下图中不同的最小生成树的个数是

format,png                                       

A.2

B.3

C.4

D.5

11.下列关于折半查找算法的叙述中,正确的是

A.可以用于有序的顺序表,也可以用于有序的链表

B.可以用于有序的顺序表,但不能用于有序的链表

C.可以用于无序的顺序表,也可以用于无序的链表

D.可以用于无序的顺序表,但不能用于无序的链表

12.如果说一个排序算法是稳定的,则它的含义是

A.待排序记录的关键字均互不相同

B.关键字相同的记录在排序前后的相对位置不变

C.该排序算法既可用于内排序,也可用于外排序

D.该排序算法既可用于顺序存储,也可用于链式存储

二.填空题

13.已知int a=5,b=8, c; 表达式 c= a/b*b的值是______。

14.C语言中强制退出当前循环可使用的语句是__________。

15.已知char a='A';语句printf ("%c",a+3 ); 的输出结果是______。

16.已知chars1[20]="Good", *s2="Luck!"; 函数strlen ( strcat (s1, s2 ))的值是______。

17.对以下二叉树进行后序遍历,得到的序列是_____________。

format,png 18.具有n个顶点的完全无向图,其顶点的度之和是______。

19.直接选择排序的时间复杂度为______。

三.简答题

20.已知顺序栈s的定义如下:

struct {

datatypedata[N];       /* 栈内最多存放N个元素 */

inttop;  /* 栈顶指针,指向栈顶元素 */

} s;           /* 栈名为s */

要求:

(1)给出判断栈空的条件;

(2)给出退栈操作的算法描述。

21.已知序列(20, 15, 18, 30, 25, 70, 80, 65),按给定顺序构造一棵二叉排序树,并给出成功查找时的平均查找长度。

四.程序分析题

22.请写出下列程序的输出结果。

void  f30 ( int x[ ], int y[ ],int n, int m )

{     int i, count=0;

for ( i = 0 ; i < n ; i++ )

if ( x[i] > m )

y[ ++count ] = x[i];

y[0] = count;

}

main( )

{   int a[10] = {156, 12, 89, 44, 38, 45, 31, 27,55, 72}, b[11];

f30 ( a, b, 10, 50 );

for ( int i = 1 ; i < b[0] ; i++ )

printf ( "%d, ", b[i] );

printf ( "%d\n", b[ b[0] ] );

}

23.请写出下列程序的输出结果。

#include

main( )

{   int a[10] = { 79, 64, 15, 21, 67, 91, 39, 180,55, 49 };

int i, x, y;

if ( a[0] < a[1] )

{ x = a[0];  y = a[1]; }

else  { x = a[1];  y = a[0]; }

printf ( "%d, %d, ", x, y );

for ( i = 2 ; i < 10 ; i++)

if ( a[i] < x )

x = a[i];

else

if ( a[i] > y )

y = a[i];

printf ( "%d, %d\n", x, y );

}

}

24.下列程序的功能是将带头节点的单链表head倒置后输出,请将程序空白处补充完整。

#include

structnode

{   int data;

struct node *next;

};

void f33 ( struct node *head )

{   struct node *h =head->next, *p, *q = ______;  ①

while ( ______ )  ②

{   p= h;

h = h->next;

p->next = q;

______;   ③

}

head->next = q;

}

void main ( )

{   struct node a[5] = {{0,&a[1]},{2,&a[2]},{4,&a[3]},{6,&a[4]},{8,NULL}};

struct node *head= a;      /* a[0]为头节点 */

f33 ( head );

head = head->next;

while ( head )

{   printf( "%d ", head->data );

______;   ④

}

printf ( "\n" );

}

五.程序设计题

25.设二叉树以二叉链表进行存储,节点结构如下:Lchild

data

Rchild

其中data的数据类型为int。要求:

(1)请给出该二叉树节点类型的C语言描述;

(2)编写一个递归函数count2计算给定二叉树中度为2的节点。

参考答案:

一、单项选择题

1.B

2.D

3.A

4.C

5.A

6.D

7.A

8.C

9.C

10.A

11.B

12.B

二、填空题

13.0

14.break(或goto)

15.D

16.9

17.d b e g f c a

18.n(n-1)

19.O(n2)

三.简答题

20.【参考答案1】

(1)

栈空的判断条件是:s.top == -1;

(2)

void pop( s, x )

{  if ( s.top == -1 )  下溢;

else  x= s.data[s.top--];

}

【参考答案2】

(1)

栈空的判断条件是:s.top == 0;

(2)

void pop( s,x )

{  if ( s.top == 0 )  下溢;

else

{   s.top --;

x =s.data[s.top];

}

}

21.

format,png     平均查找长度=(1+2*2+3*3+2*4)/ 8 = 22 / 8 = 2.75          

四、程序分析题

22.结果输出为:156,89, 55, 72

23.结果输出为:64, 79,15, 180

24.① NULL

② h或 h != NULL

③ q = p

④ head = head->next

五.程序设计题

25.【参考程序】

struct node

{     int data;

struct node * Lchild, * Rchild;

};

int n = 0;      /* 外部变量,计算二叉树中度为2的节点数量 */

void count2 ( struct node * BT )        /* 按照后序遍历的思想进行计数 */

{          if ( BT != NULL )

{   if ( BT->Lchild != NULL&& BT->Rchild != NULL )

n++;

if( BT->Lchild != NULL )

count2( BT->Lchild );

if( BT->Rchild != NULL )

count2( BT->Rchild );

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值