数据结构---测试题

C语言与数据结构试题算法

1.下面程序的输出结果是_____d_____
int i=0,j=0,a=6;
if((++i>0)||(++j>0)) a++;
printf("i=%d,j=%d,a=d%\n",i,j,a);

A、i=0,j=0,a=6  B、i=1,j=0,a=7
C、i=1,j=1,a=6  D、i=1,j=1,a=7数组

2.下面各语句行中,正确执行字符串操做的语句行是b数据结构

A)char st[4][5]={"ABCDE"};函数

B)char s[5]={'A','B','C','D','E'};
C)char *s;s=“ABCDE”;
D)char *s;scanf(“%S”,S);spa

3. 设有以下定义:
  int (*ptr)*(c);
  则如下叙述中正确的是
A)ptr是指向一维组数的指针变量3d

B)ptr是指向int型数据的指针变量
C)ptr是指向函数的指针,该函数返回一个int型数据
D)ptr是一个函数名,该函数的返回值是指向int型数据的指针指针

4.设有如下定义:
typedef union{ int k[5];char c;} DATE;
struct date { int cat;DATE cow;double dog;}too;
DATE max;
则下列语句的执行结果是排序

printf("%d",sizeof(struct date)+sizeof(max));
 A) 25   B) 30   C) 18    D) 8队列

5. 设有如下说明语句
则下面叙述中正确的是
typedef  struct 
{   int  n;
    char  ch[8];
}PER;
A) PER 是结构体变量名              B) PER是结构体类型名
C) typedef  struct 是结构体类型    D) struct 是结构体类型名内存

6. 在C语言中,char型数据在内存中的存储形式是:
A)补码    B)反码     C)原码    D)ASCII码

7. 如下程序的运行结果是 :
main()   
{  int m=5;
   if(m++>5)  printf(" %d\n",m);
   e1se       printf("%d\n",m--); }
A)4    B)5    C)6    D)7

8. 下面程序段:  d 
  for(t=1;t<=100;t++)
  {  scanf("%d",&x);
     if(x<0)  continue;
     printf("%3d",t);  }
A) 当x<0时整个循环结束
B) x>=0时什么也不输出
C) printf函数永远也不执行
D) 最多容许输出100个非负整数

9. main()
{ int num= 0;
while(num<=2)
{ num++; printf("%d\n",num);
}
以上程序的输出结果是     A) 1   B) 1    C)1    D) l

                            2      2      2

                            3      3

                            4

10. 如下程序的输出结果是
  A) 20          B) 24           C) 25           D) 15
int   f()
{   static  int  i=0;
int  s=1;
s+=i;  i++;
return  s;
}
 main()
{   int  i,a=0;
for(i=0;i<5;i++)  a+=f();
printf("%d\n",a);
}

11. 如有下面的程序片断:
   int a[12]={0}, *p[3], **pp, i;
   for(i=0; i<3; i++)
     p[i]=&a[i*4];
   pp=p;
 则对数组元素的错误引用是d
  A)pp[0][1]   B)a[10]     C)p[3][1]   D)*(*(p+2)+2)



12. 如有定义: float w;  int a, b; 则合法的switch语句是
A) switch(w)                    B) switch(a);
  { case 1.0: printf("*\n");      { case 1 printf("*\n");
    case 2.0: printf("**\n");       case 2 printf("**\n");
  }                               }
C) switch(b);                    D) switch(a+b)
   { case 1:   printf("*\n");      { case 1:  printf("*\n");
     default:  printf("\n");         case 2:  printf("**\n");
     case 1+2: printf("**\n");       default: printf("\n");
   }                               }

13. 不能把字符串:Hello!赋给数组b的语句是
A) char b[10]={'H','e','l','l','o','!'};
B) char b[10];b="Hello!";
C) char b[10];strcpy(b,"Hello!");
D) char b[10]="Hello!";

14. #include<stdio.h>
main()
{ int a,b,c,d;
  scanf("%d%d",&a,&b);
  c=gbs(a,b);
  d=gys(a,b);
  printf("a=%db=%d gbs=%d gys=%d\n",a,b,c,d);
}
gbs(a,b)
int a,b;
{ int c;
  a=a>0?a:-a;
  b=b>0?b:-b;
  c=a*b;
  if(c==0) return(0);
  while(a!=b) if(a>b) a-=b;
  else b-=a;
  return(c/a);
}
gys(a,b)
int a,b;
{ if(a*b==0) return(0);
  a=a>0?a:-a;
  b=b>0?b:-b;
  while(a!=b) if(a>b) a-=b;else b-=a;
  return(a);
}
请写出上面程序的运行结果:
A、a=30  b=63  gbs=189  gys=9
B、a=27  b=63  gbs=190  gys=10
C、a=27  b=63  gbs=189  gys=9

D、a=27  b=63  gbs=188  gys=10

15. 判断字符串a和b是否相等,应当使用_____.
A)  if(a==b)         B)  if(a=b)
C)  if(strcpy(a,b))  D)  if(!strcmp(a,b))

16.有下面的程序段
char  a[3],b[]="china";   a=b;
printf("%s",a);
则_____.
A)运行后将输出Chm      B)运行后将输出Ch
C)运行后将输出Chi      D)编译出错

17. 如有下面的说明和定义,
则sizeof(struct test )的值是____       A)12   B)16  C)14  D)9
struct test
{   int  ml; char  m2;  float  m3;
union uu {char ul[5]; int  u2[2];} ua;
}   myaa;

18. 如有如下定义和语句:a
int w[2][3],(*pw)[3];
pw=w;
则对w数组元素非法引用是
 A)*(w[0]+2)  B)*(pw+1)[2]  C)pw[0][0]  D)*(pw[1]+2)

19. 如有如下说明和定义,
在必要的赋值以后,对fun函数的正确调用语句是
fun(int *c){ }
main()
{ int (*a)()=fun,*b(),w[10],c;

}
A) a=a(w); B) (*a)(&c); C) b=*b(w); D) fun (b);

20. 如有如下说明:
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则数值为6的表达式是
A) *p+6 B) *(p+6) C) *p+=5 D) p+5

21. 若指针p已正肯定义,要使p指向两个连续的整型动态存储单元,不正确的语句是
A) p=2*(int*)malloc(sizeof(int));

B) p=(int*)malloc(2*sizeof(int));
C) p=(int*)malloc(2*2);
D) p=(int*)malloc(2,sizeof(int));

22.设已有定义: char *st="how are you"; 下列程序段中正确的是
A) char a[11], *p; strcpy(p=a+1,&st[4]);

B) char a[11]; strcpy(++a, st);
C) char a[11]; strcpy(a, st);
D) char a[], *p; strcpy(p=&a[1],st+2);

23.以下程序的输出结果是    A) 运行错误 B) 100 C) i的地址 D) j的地址
#include<stdio.h>
main()
{ int **k, *j, i=100;
j=&i; k=&j;
printf("%d\n", **k);
}

24.设一整型(int)变量占用2个字节则下述共同体变量x所占用内存字节数为________。
union exp
{ int i;
  float j;
  double k;
}x;
    A、14个     B、7个
    C、8个      D、随机而定567

25.设x的值为4,则表达式(++x)+(++x)+(++x)的值是
  A:12;    B:18;    C:16;    D:21                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                

26.设p1和p2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是
  A) k=*p1+*p2;  B) p2=k;  C) p1=p2;   D) k=*p1 * (*p2);

27.设有以下枚举类型定义:
enum language { Basic=3,Assembly,Ada=100,COBOL,Fortran};
枚举量Fortran的值为
   A) 4   B) 7   C) 102   D) 103

28.设有以下函数定义:
int f(char *s)
{ char *p=s;
while(*p!='\0') p++;
return(p-s); }
若是在主程序中用下面的语句调用上述函数,则输出结果为 
A) 3  B) 6  C) 8  D) 0
printf("%d\n",f("goodbey!"));

29.设有说明int(*ptr)[m];其中的标识符ptr是(  )。
(A) M个指向整型变量的指针
(B) 指向M个整型变量的函数指针
(C) 一个指向具备M个整型元素的一维数组的指针
(D) 具备M个指针元素的一维指针数组,每一个元素都只能指向整型量

30.为表示关系x≥y≥z,应使用C语言表达式
A) (x>=y)&&(y>=z) B(x>=y)AND(y>=z) C)(x>=y>=z) D)(x>=y)&(y>=z)

31.在数据结构中,从逻辑上能够把数据结构分为       

A.动态结构和静态结构       B.紧凑结构和非紧凑结构

C.线性结构和非线性结构     D.内部结构和外部结构

 

32. 不带头结点的单链表head为空的断定条件是  

 A.head == NULL           B head->next ==NULL

C.head->next ==head        D head!=NULL

33. 带头结点的单链表head为空的断定条件是 

A.head == NULL           B head->next ==NULL

C.head->next ==head        D head!=NULL

34. 在循环双链表的p所指的结点以前插入s所指结点的操做是

A.p->prior = s;s->next = p;p->prior->next = s;s->prior = p->prior

B.p->prior = s;p->prior->next = s;s->next = p;s->prior = p->prior

C.s->next = p;s->prior = p->prior;p->prior = s;p->prior->next = s

D.s->next = p;s->prior = p->prior;p->prior->next = s;p->prior = s

35.若是最经常使用的操做是取第i个结点及其前驱,则采用    存储方式最节省时间。

A.单链表   B.双链表    C.单循环链表    D. 顺序表

36.在长度为n的顺序表的第i个位置上插入一个元素(1≤ i ≤n+1),元素的移动次数为:      。

A.n – i + 1        B.n – i          C.i              D.i – 1

37.在单链表指针为p的结点以后插入指针为s的结点,正确的操做是    

A.p->next=s;s->next=p->next      B. s->next=p->next ;p->next=s;

C.p->next=s;p->next=s->next      D.p->next=s->next;p->next=s

38.栈和队列的共同点是    

A.都是先进后出                       B.都是先进先出

C.只容许在端点处插入和删除元素       D.没有共同点

39.若已知一个栈的进栈序列是1,2,3,,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为      

A.i   B.n-i   C.n-i+1   D.不肯定

40.设有两个串p和q,求q在p中首次出现的位置的运算称为     

A.链接     B. 模式匹配   C.求子串    D.求串长

41.树最适合用来表示    

A.有序数据元素                        B.无序数据元素

C.元素之间具备分支层次关系的数据      D.元素之间无联系的数据

22222

42.深度为5的二叉树至多有   b   个结点。

A.16    B. 32   C.  31     C.   10

 

43.具备10个叶子结点的二叉树中有      个度为2的结点。

A.8     B.9     C.10   D.11

44.在一个无向图中,全部顶点的度数之和等于全部边数的    倍。

A.1/2   B 1    C 2     D  4

45.某二叉树结点的中序序列为ABCDEFG,后序序列为BDCAFGE,则其左子树中结点数目为:      

A.3             B.2             C.4              D.5

46.采用邻接表存储的图的深度优先遍历算法相似于二叉树的___ ____。

A.先序遍历     B.中序遍历     C.后序遍历     D.按层遍历

47.对线性表进行折半查找时,要求线性表必须     

A  以顺序方式存储             B  以顺序方式存储,且结点按关键字有序排列

C  以链式方式存储             D  以链式方式存储,且结点按关键字有序排列

48.排序方法中,从未排序序列中依次取出元素与已排序序列中的元素进行比较,将其放入已排序序列的正确位置上的方法,称为       

A.希尔排序     B。冒泡排序     C插入排序       D。选择排序

 

49.算法分析的目的是     ,算法分析的两个主要方面是    

(1)A.找出数据结构的合理性       B.研究算法中的输入和输出的关系

C.分析算法的效率以求改进     C.分析算法的易读性和文档性

(2)A.空间复杂度和时间复杂度     B.正确性和简明性

     C.可读性和文档性             D.数据复杂性和程序复杂性

相关文章
相关标签/搜索