posts - 12,  comments - 21,  trackbacks - 0

C/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\n",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](0i<4, 0j<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 )。(多项选择)

 其中0i<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\n",*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\n",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("\n");

}

 

(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\n", 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("\nEnter pl p2: ");

    scanf("%d%d ", B    )

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

    free(p2);

    printf("max=%d\n", 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\n",z);

}

 

17下面程序的输出结果是(   eybdooG     )

int main( )

{

       static char b[ ]="Goodbye";

    char *chp=&b[7];

    while(--chp>=&b[0])putchar (*chp);

    putchar('\n');

}

 

18、下列程序的输出结果是(     60        )

int main()

{

    int a[3][4]={ 1,3,5,7 ,9, 11,13,15 ,17,19,21,23};

    int(*p)[4]=a,i,j,k=0;

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

      for(j=0;j<2;j++)

        k=k+*(*(p+i)+j);

    printf("%d\n",k);

}

posted on 2011-05-31 21:57 DoubleW 阅读(1486) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2011年5月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

常用链接

留言簿(3)

随笔档案(12)

文章档案(2)

最新随笔

搜索

  •  

积分与排名

  • 积分 - 22853
  • 排名 - 659

最新随笔

最新评论

阅读排行榜

评论排行榜