程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++基礎學習筆記(3)--指針(測試題)

C++基礎學習筆記(3)--指針(測試題)

編輯:C++入門知識

一、選擇題

1、 若有以下說明和語句,且0<=i<10,則對數組元素的錯誤引用是( C    )。

    int a[]={1,2,3,4,5,6,7,8,9,0},*p,i;

    p=a;

 (A)*(a+i)       (B) a[p-a]    (C)p+i     (D)*(&a[i])

 

2、 若有以下說明和語句,且0<=i<10,則不是對數組元素地址的正確表示的是(   B )。

    int a[]={1,2,3,4,5,6,7,8,9,0},*p,i;

    p=a;

 (A)&(a+1)    (B)a++    (C)&p    (D)&p[i]

 

3、 下面的程序中有錯誤(每行程序前面的數字表示行號)的是( A )。

    1 #include <stdio.h>

    2   int main( )

    3 {

    4    float a[3]={0.0};

    5    int i;

    6    for(i=0;i<3;i++)scanf("%f",&a[i]);

    7   for(i=1;i<3;i++)a[0]=a[0]+a[i];

    8    printf("%f ",a[0]);

    9 }

    (A)沒    (B)第4行    (C)第7行    (D)第8行

 

4、 在以下說明中,標識符prt( C )。

    int(*prt)[3];

    (A)說明不合法

    (B)是一個指針數組名,每個元素是一個指向整型變量的指針

    (C)是一個指針,它指向一個具有3個元素的一維數組

    (D)是一個指向整型變量的指針

 

5、 以下說明與( C )中的說明等價。

    Int *p[4];

    (A) int p[4]    (B) int *p    (C)int *(p[4])    (D)int(*p)[4]

  

6、若有說明:int a[4] [10];則對數組元素a[i][j](0≤i<4, 0≤j<10)錯誤引用的是( B   )。

    (A)*(&a[0][0]+10*i+j)    (B)*(a+i)[j]    (c)*(*(a+i)+j)    (D)*(a[i]+j)

 

7、下面為不正確的字符串賦值或賦初值方式是( C   )。

    (A) char*str;str="string";        (B) char str[7]={s,t,r,i,n,g};

    (C) char strl[10];strl="string";    (D) char strl[]="string",str2[ ]="12345678";

       strcpy (str2,strl);

 

8、若有以下說明,則不是對strcpy庫函數正確調用的是( BCD   )(多選)。

    char *strl="copy", str2[10],* str3="hijklmn",*str4,*str5="abcd";

    (A) strcpy(str2,strl);    (B) strcpy(str3,strl);

    (C) strcpy(str4,strl);    (D) strcpy(str5,strl);

9、若有以下的說明,則對字符串中字符正確引用的是( ABC )。(多項選擇)

 其中0≤i<6。

     char *strp="string";

    (A) *strp    (B)*(strp+i)    (C) strp[i]    (D) strp

 

10、若有語句int *point,a=4;和point=&a;下面均代表地址的一組選項是( D )。

(A) a,point,*&a    (B)&*a,&a,*point

(C) *&point,*point,&a    (D) &a,&*point,point

 

二、讀程序分析程序的運行結果

11、 以下程序的輸出結果是( D   )。

int main( )

{

    int a[]={1,2,3,4,5,6},*p;

    p=a;*(p+3)+=2;

    printf("%d,%d ",*p,*(p+3));

}

(A)0,5    (B)l,5    (C)0,6    (D)1,6

 

12、 以下程序的輸出結果是( D )。

int main( )

{

    int a[12]= { 1,2,3,4,5,6,7,8,9,10, 11,12},*p[4], i;

    for(i=0;i<4;i++)p[i]=&a[i*3];

    printf("%d ",p[3][2]);

}

(A)輸出項不合法,輸出結果不定    (B)6    (C)8    (D) 12

 

13、 以下程序的輸出結果為(   A )。

char *alpha[6]={ "ABCD","EFGH","IJKL","MNOP","QRST","UVWX"};

char **p;

int main( )

{

     int i;

     p=alpha;

     for(i=0;i<4;i++)printf("%c",*(p[i] ));

     printf(" ");

}

 

(A) AEIM    (B) BFJN    (C) ABCD    (D) DHLP

 

三、讀程序選擇填空

14、  以下程序可找出數組中的最大值和此元素的下標,數組元素的值由鍵盤輸入。請從對應的一組選擇項中,選擇正確的選項填空。

int main()

{

       int a[10],*p,*s,i;

    printf("Enter a[0] a[1] … a[9l: ");

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

    scanf("%d", C   );    

    for(p=a,s=a; A <10;p++)  

    if(*p>*s)s=    A    ;         

    printf("max=%d,index=%d ", C , C  );

}

 

    (1)(A)*(a+i)    (B)p+i    (C)a+i    (D)a[i]

    (2) (A) p-a     (B) s-a    (C) a-p    (D) a-s

    (3)(A)p        (B)a[p]   (C)a[s]    (D) a-p

    (4)(A)a[p-a]    (B)a[p]    (C)*s    (D)a[s]

    (5) (A) p-a     (B)p      (C) s-a    (D) a-s

 

 

15、 以下程序可輸出兩個整數中大的那個數,兩個整數由鍵盤輸入。請從對應的一組選擇項中,選擇正確的選項填空。

int main()

{

       int a,b,*pl,*p2;

pl= D malloc(sizeof(int));p2=  D malloc(sizeof(int));  

printf(" Enter pl p2: ");

    scanf("%d%d ", B    );

    if(*p2>*pl)*pl=*p2;

    free(p2);

    printf("max=%d ", A  );   

}

    (l) (A) int        (B) int*      (C)(int)        (D)(int*)

    (2)(A)*p1,*p2   (B) pl,p2     (C)&p1,&p2    (D)&a,&b

    (3)(A)*p1        (B)*p2       (C) p1         (D) p2

 

 

四、讀程序回答問題

16、下面程序的輸出是( 6    )。

int main( )

{

    int a[]={2,4,6},*ptr=&a[0],x=8,y,z;

    for(y=0;y<3;y++)

              z=(*(ptr+y)<x)?*(ptr+y):x;

    printf("%d ",z);

}

 

17、下面程序的輸出結果是(   eybdooG     )。

int main( )

{

       static char b[ ]="Goodbye";

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved