C程序设计语言练习题
第三部分
63.已知:int x; 则下面说明指针变量pb的语句      是正确的。
A) int pb=&x;        B)int *pb=x;        C)int *pb=&x        D)*pb=*x;
64.有如下程序段:
int *p,a,b=1;
p=&a;*p=10;a=*p+b;
执行该程序段后,a值是     
A) 12            B) 11            C) 10            D) 编译出错
65.若有说明:int i,j=2,*p=&i;,则能完成i=j赋值功能的语句是   
A) i=*p;  B) *p=*&j;    C) i=&j;      D) i=**p;
66.已知:int a,*p=&a; 则为了得到变量a的值,下列错误的表达式为______
A) *&p            B) *p            C) p[0]            D) *&a
67.已知static int a[2][3]={2,4,6,8,10,12};正确表示数组元素地址的是__
A) *(a+1)        B) a[1]+2        C) a[1]+3        D) a[0][0]
68.已知int a[3][4],*p=*a; p+=6;那么*p______的值相同。
A) *(a+6)        B) *(&a[0]+6)        C) *(a[1]+2)        D) *(&a[0][0]+6)
69.已知说明int (*p)[M]; 其中p______
A) M个指向整型变量的指针
B) 指向M个整型变量的函数指针
C) 一个指向具有M个整型元素的一维数组的指针
D) 具有M个指针元素的一维指针数组,每个元素都只能指向整型变量
70.若有定义和语句:int c[4][5], (*cp)[5]; cp=c;则对c数组元素的引用正确的是哪个?
A)cp+1          B)*(cp+3)            C)*(cp+1)+3          D)*(*cp+2)
71.设有以下定义
  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)
72.若有以下定义和语句:
  int w [2][3],(*pw)[3];  pw=w;
则对w数组元素的非法引用是_________
A) *(pw[0]+2)        B) *(pw+1)[2]        C) pw[0][0]        D)*(pw[1]+2)
73.若有以下说明和定义:
  fun(int *c)  {}
  void main()
    {int(*a)(int*)=fun,*b(),w[10],c;
              :
    }
  在必要的赋值之后,对fun()函数的正确调用语句是______
A)a=a(w);      B)(*a)(&c);      C)b=*b(w);      D)fun(b);
74.已知double *p[6]; 它的含义是______
A) p是指向double类型变量的指针        B) pdouble类型数组
C) pdouble类型指针数组                D) pdouble类型数组指针
75.设有定义:int n=0,*p=&n,**q=&p; ______是正确的赋值语句。
A) p=1;          B) *q=2;            C) q=p;          D) *p=5;
76.以下选项中,错误的赋值是_________
A) char s1[10]; s1=Ctest;       
B) char s2[]={‘C’,‘t’,‘e’,‘s’,‘t’};
C) char s3[20]=Ctest;           
D) char *s[4]={Ctest\n};
77.若有定义和语句:
int **pp,*p,a=10,b=20;
pp=&p; p=&b;printf(%d%d\n,*p,**pp);
则输出的结果是______
A) 10,20          B) 10,10            C) 20,10          D) 20,20
78.以下程序编译连接后生成的可执行文件是,若运行时输入带参数的命令行是:ex1 abcd efg 10<回车> ,则运行的结果是什么?9
#include <string.h>
main(int argc,char *argv[])
{int i,len=0;
for(i=1;i<argc;i++) len+=strlen(argv[i]);
printf("%d\n",len);
}
79.说明语句int (*p)();的含义是______
A) p是一个指向一维数组的指针变量
B) p是一个指针变量,指向一个整型数据
C) p是一个指向函数的指针,该函数的返回值是一个整型数据
D) 以上都不对
80.说明语句int *(*p)();的含义是______
A) p是一个指向int 型数组的指针
B) p是一个指针变量,它构成了指针数组
C) p是一个指向函数的指针,该函数的返回值是一个整型数据
D) p是一个指向函数的指针,该函数的返回值是一个指向整型数据的指针
81.说明语句void *f();的含义是______
A) 函数f的返回值是一个通用型的指针
B) 函数f的返回值可以是任意的数据类型
C) 函数f没有返回值
D) 指针f指向一个函数,该函数无返回值
82.已知char **s; 正确的语句是_______
As=book                B*s=book;       
C**s=book            Dstrcpy(*s, book);
83.阅读以下函数,说出每个函数的作用
(1)计算1+2+3+.....+n
  sum(int n)
  { if(n==1) return 1;
    else return sum(n-1)+n;
  }
(2)计算字符串的长度
int strtry(char *s)
{ if(*s==’\0’) return 0;
  else return strtry(s+1)+1;
}
(3)n个元素的数组逆置
void change(int *a,int n)
{ int t;
  t=*a; *a=*(a+n-1); *(a+n-1)=t;
  if(n>2) change(a+1,n-2);
}
(4) 字符串的长度加1
ABC(char *ps)
{ char *p;
p=ps;
while(*p++);
return p-ps;
}
84.对于基类型相同的两个指针变量之间,不能进行的运算是______
A) <            B) =            C) +            D) -
85.不合法的main函数命令行参数表示形式是
A) main(int a,char *c[])      B) main(int arc,char **arv)
C) main(int argc,char *argv)  D) main(int argv,char *argc[])
86.写出下面各程序段的输出结果
(1)
static char a[]=Basic;
char *p;
for(p=a; p<a+5; p++)  printf(%s\n,p);
for(p=a; p<a+5; p++)  printf(%c\n,*p);
Basic
asic
sic
ic
c
B
a
s
c语言中structi
c
(2) a=36 b=16 c=19

void main()
{ int a=1,b=2,c;
    c=func(a,&b);
    b=func(c,&a);
    a=func(b,&c);
printf("a=%d,b=%d,c=%d",a,b,c);   
}
int func(int a,int *p)
{ a++;
  *p=a+2;
  return(*p+a);
}

(3) 2 1 4 3

void fun (int *x,int *y)
  {printf(%d %d,*x,*y);
    *x=3;
*y=4;
  }
main()
  {int x=1,y=2;
fun(&y,&x);
printf(%d %d,x,y);
  }

(4)5

ss(char *s)
  {char *p=s;
  while (*p) p++;
  return (p-s);
}
main()
{ char *a= abded;
    int i;
    i=ss(a);
    printf(%d\n,i);
  }

(5)0

  void fun(int *n)
  { while((*n)--);
      printf(%d,++(*n));
  }
  main()
    {int a=100;
    fun(&a);
    }

(6) 2 4

main()
{int a[5]={2,4,6,8,10},*p,**k;
p=a;    k=&p;
printf(%d,*(p++));
printf(%d\n,**k);
}

(7) 9

main()
{int a[2][3]={1,3,5,7,9,11},*s[2],**pp,*p;
s[0]=a[0],s[1]=a[1];
pp=s;
p=(int*)malloc(sizeof(int));
**pp= s[1][1];
p=*pp;
printf(%d\n,*p);
}

8字符串的长度

func( char str[] )
    {int num=0;
    while (*(str+num)!=‘\0’) 
num++;
    return (num);
    }
  main()
  {char str[10],*p=str;
  gets(p);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。