C语言期末和考研考试常见错题集一

错题集一

一、选择题

1.下列程序段执行后s值为(   )

int  i=1, s=0;

do {

     if(!(i%2))  continue;  

     s += i;

} while(++i<10);

A.1        B.45        C.25       D.以上均不是

2.对于如下说明,则有意义的表达式是(   )

int  b=3, c=5, d=8, p[3], *a[3]={&b, &c, &d};

A.p=a        B.p[0]=a        C.p[0]=**a        D.a[0]*=2

3.对于以下结构定义:

struct {  int  x;    int  y;

} s[10], *p=s, *q=s+1;则表达式(int *)q - (int *)p的值等于(    )

A. 1    B. 2    C. 4    D.表达式语法有错

4.下列程序执行后的输出结果是(  )

int  a=1;

fun(int  k)

{  static  int  a=5;

   a+=k; 

 printf("%d ", a);

   return  a;

}

void  main()

{  int  b=3;

   printf("%d\n", fun(b+fun(a)));

}

A.699      B.669      C.61515      D.6615

5.对于struct node{  char s[10];  int i;  } p[4]; 下列哪个赋值是正确的(  )

A.p->i=2        B.p[0].s="abc"        C.p[0]->i=2        D.p->s='a'

6.已知某函数内有声明:int  a[3][3], (*ptr)[3]=a, *p=a; ,则能正确引用数组元素a[1][2]的是(  )

A.*(++ptr)[2]       B.*(++p+2)       C.*(*++ptr+2)       D.*(*++a+2)

7.若程序中有如下函数定义:

void  fun(int p[10], int n)

{  int  j;

   for(j=0; j<n; j++)  p[j]=0;

}且主函数中有声明:int a, b[10];,则主函数中对fun函数的调用正确的是(   )

A.a=f(b,1);        B.f(b[10],1);        C.f(a,1);        D.f(&a,1)

8. 若有以下定义和语句:

int s[4][5], (*ps)[5];  ps=s;则对s数组元素的正确引用形式是(   )

A.ps+1        B.*(ps+3)        C.ps[0][2]        D.*(ps+1)+3

9. 下列程序执行后的输出结果是(   )

#define  max(x)  x*(x-1)

void  main()

{  int  a=1, b=2;

   printf(“%d\n”, max(1+a+b));

}

A.6        B.8        C.10        D.12

10. 对于struct node { char  s[10];  int  i; }p[4]; 下列不正确的赋值是(  )

A.p[0].i=2      B.p[0].s=“abc”      C.p->i=2      D.*(p->s)='a'

11.下列程序执行后的输出结果是(    )

#include "stdio.h"

void  main()

   int  a[6], i;

   for(i=1; i<6; i++)

   { 

     a[i]=9*(i-2+4*(i>3)%5);

      printf("%2d", a[i]);

   }

}

A.-9 0 9 5 4 3 6    B.-18 -9 0 9 54    C.-9 0 95463    D.-9095463

12.对于以下递归函数f,调用f(4),其返回值为(   )

int  f(int n)

   if(n)  return f(n-2)+n;

    else  return n;

}

A.6        B. 4        C. 0        D. 无限递归

13.对于如下说明,则有意义的正确表达式是(    )

int  *p[3], a[3];

A.p=a        B.p[0]=a[0]        C.p[0]=a        D.p[0]*=2

14. 对于以下结构定义,++p->str中的++加在(  )

struct {  int len;  char *str;  } *p;

A.指针str上     B.指针p上     C.str指的内容上     D.以上均不是

15. 若有以下说明:

int w[3][4] = { {0,1}, {2,4}, {5,8}};

int (*p)[4] = w;则数值为 4的表达式是( )。

A) *w[1]+1   B) p++,*(p+1)   C) w[2][2]   D) p[1][1]

16. 以下程序运行后,输出结果是( )

#include  <stdio.h>

int main( )

{

   int y=18, i=0, j, a[8];

   do {

   a[i]=y%2;

   i++;

   y=y/2;

} while(y>=1);

for(j=i-1; j>=0; j--)

    printf("%d", a[j]);

    printf("\n")

          return 0;

}

A)10000   B)10010   C)00110   D)10100

17. 以下程序的输出结果是( )。

#include <stdio.h>

int main(){

int a=2,c=5;

printf("a=%%d,b=%%d\n", a, c);return 0;}

A) a=%2,b=%5   B) a=2,b=5   C) a=%%d,b=%%d   D) a=%d,b=%d

18. 设有以下定义:

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

int (*prt)[3]=a, *p=a[0];

则下列能够正确表示数组元素 a[1][2]的表达式是( )

A) *((*prt+1)[2])   B) *(*(p+5))

C) (*prt+1)+2       D) *(*(a+1)+2)

19. 若有定义: float w; int num; char s; 则合法的switch语句是_______。

A. switch(w) { case 1.0: printf("*\n"); case 2.0: printf("**\n"); }

B. switch(num); { case 1 printf("*\n"); case 2 printf("**\n"); }

C.switch(s) { case 'a': printf("*\n"); case 'b': printf("**\n"); default: printf("\n");}

D. switch(num+1) { case 1: printf("*\n"); case 1: printf("**\n");default: printf("\n"); }

20. 设有语句:int x[]={0,1,2,3,4,5,6,7,8,9}, *p=x+5;  while(*p++<7);

则语句 printf("%d",*p--);的输出结果为_______。

A. 出错

B. x[7]的地址

C. 7

D. 8

  • 9
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值