數據結構---測試題

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.數據複雜性和程序複雜性

相關文章
相關標籤/搜索