1、1.假如假如p是一个指针变量,下列表达式中正确的是是一个指针变量,下列表达式中正确的是_。A*(p-)-=2 B(+p)+C+(p+)D+p+2.假定有数组假定有数组a37,下列表达式中下列表达式中_是错误的。是错误的。A *(*a+2)B*(*(a+1)C*(&a00+2)D *(a+2)5答案:答案:A答案:答案:D练习题练习题3.对表达式对表达式 double (*f)(int,char*)的正确理解为的正确理解为_。A f 是一个返回双精度指针的函数是一个返回双精度指针的函数 B f 是一个需要两个参数的函数是一个需要两个参数的函数,该函数为该函数为double型型 C 该函数是一个返
2、回该函数是一个返回double型的需要两个参数的双精度指针型的需要两个参数的双精度指针 D f 是一个需要两个参数的返回是一个需要两个参数的返回double型的函数指针型的函数指针答案:答案:D4.设有设有int a,*p=&a;下列表达式中,不正确表达式是(下列表达式中,不正确表达式是()A&(*p)B&(*a)C *(&p)D *(&a)5.已知已知int a55,int(*pa)5;正确赋值语句是(正确赋值语句是()A pa=a1;B pa=*(a+1);C pa=&(a+1);D pa=a+1;答案:答案:B答案:答案:D6.假定有数组假定有数组int a44,下列表达式中下列表达式中
3、_不是不是a23的地址。的地址。A a2+3 B *(a+2)+3 C&a23 D *(a2+3)答案:答案:D7.已知函数已知函数fp原型是:原型是:int fp(double*(*)10),下列数组下列数组_可作为参数可作为参数:A double*arr10;B double*arr510;C double arr510;D double*arr10;8.假定有假定有int a37,*pt,(*pa)7;下列语句下列语句_是错误的。是错误的。A pt=&a00;B pt=a0;C pa=a;D pt=a;答案:答案:B答案:答案:D9.对表达式对表达式 char*(*pa3)(char*)
4、的正确理解为的正确理解为_。A pa 是一个返指针的函数数组,需要一个字符指针参数是一个返指针的函数数组,需要一个字符指针参数 B pa 是一个需要字符指针参数的函数是一个需要字符指针参数的函数,该函数返回该函数返回char*型型 C 该函数是一个返回该函数是一个返回char*型的需要一个型的需要一个char*参数指针数组参数指针数组 D 由由3个指针组成的数组,每个指针指向返回个指针组成的数组,每个指针指向返回char*型,需要型,需要char*型参数的函数型参数的函数答案:答案:D10.假如有语句假如有语句char*s1=“abc”;char s2=“xyz”;下列下列_语句是错误的。语句
5、是错误的。A*s1+;B*s2+;C*(s1+1);D*(s2+1);11.执行下列语句后,屏幕上输出的是执行下列语句后,屏幕上输出的是_。#define TEST char s=“xyz”,*p=s;#ifndef TEST while(*p+);while(-p=s)printf(“%c”,*p);#else while(*p)printf(“%c”,*p+);#endif A xyz B zyx C 无输出无输出 D 乱码乱码答案:答案:B答案:答案:A12.对表达式对表达式 int*(*fp5)(char*)的正确理解为的正确理解为_。A fp 是一个返指针的函数,需要一个字符型指针参
6、数是一个返指针的函数,需要一个字符型指针参数 B fp 是一个需要字符型指针参数的函数是一个需要字符型指针参数的函数,该函数返回该函数返回int*型型 C fp是一个指向一个返回是一个指向一个返回int*型的需要一个型的需要一个char*参数的函数参数的函数指针指针 D fp 是一个指针数组、数组的元素是指向返回是一个指针数组、数组的元素是指向返回int*,需要需要char*做参数的函数的指针做参数的函数的指针答案:答案:D13.已知函数已知函数fn原型是:原型是:char*fn(char*(*)(char),char*),且且有有char*v1;char*v2;char*fp(char);正
7、确的函数调用语句是(正确的函数调用语句是()A fn(fp(3),v2);B fn(v1,v2);C fn(fp,&v2);D fn(fp,v1);答案:答案:D14.设有设有int arr33,*p,(*pa)3;表达式表达式()的类型是的类型是int*型型:A arr B&arr0 C&arr00;D pa答案:答案:C改错改错1./*strcmp:return 0 if s 0 if st*/#include int strcmp(char*s,char*t)for(;*s=*t;s+,t+)if(*s=0)return 0;return*(s t);答案:9./*strcmp:retu
8、rn 0 if s 0 if st*/#include int strcmp(char*s,char*t)for(;*s=*t;s+,t+)if(*s=0)return 0;if(*s=0)return*(s t);return*s *t;改错改错2.下列函数的功能是用冒泡法对下列函数的功能是用冒泡法对6个字符串由小到大排序。个字符串由小到大排序。void bubblesort(int*a6)int i,j;char*p;for(j=0;j 5;j+)for(i=j+1;i 0)p=*(a+j);*(a+j)=a+i;*(a+I)=p;答案:void bubblesort(char*a6)in
9、t i,j;char*p;for(j=0;j 5;j+)for(i=j+1;i 0)if(strcmp(*(a+j),*(a+i)0)p=*(a+j);*(a+j)=a+i;*(a+i)=p;*(a+j)=*(a+i);改错改错3.函数函数revs将一个字符串反转将一个字符串反转void revs(char*s)char t,*p=s;while(*p+);p-;while(p-s)t=*p;*p=*s;*s=t;答案:void revs(char*s)char t,*p=s;while(*p+);p-;while(p-s)改为 (-p s)t=*p;*p=*s;*s=t;*s+=t;或*s=
10、t;s+;改错改错4.下列程序的功能是将两个字符串链接起来下列程序的功能是将两个字符串链接起来#include void strcat(char*s,char*t)for(;*s+;);s+;while(*s=*t)s+;t+;答案:#include void strcat(char*s,char*t)for(;*s+;);s+;删除该行while(*s=*t)将s+;t+;用 扩起来 s+;t+;改错改错5.函数函数double fn(int*x)的功能是计算整型数组的功能是计算整型数组x中所有正中所有正数的平均值并返回。该数组用数的平均值并返回。该数组用0作为结束标志。作为结束标志。dou
11、ble fn(int*x)int sum=0.0;int c=0;while(*x)if(*x 0)sum+=*x;c+;x+;sum=c;return sum;答案:double fn(int*x)int sum=0.0;int c=0;float sum=0.0;while(*x)if(*x 0)sum+=*x;c+;x+;sum=c;return sum;sum/=c;分析下面程序的运行结果分析下面程序的运行结果int a3 3=10,9,8,7,6,5,4,3,2;int *pa3=a0,a1,a2;int *p=a0;main()int i;for(i=0;i3;i+)printf(
12、%dt%dt%dn,*ai,*(*(pa+i),p i);10 10 107 7 94 4 8六六.假定内存的初始分配如下图左方所示,执行下述语句后,假定内存的初始分配如下图左方所示,执行下述语句后,分析内存分配情况分析内存分配情况,将结果写在右边内存示意图相应位置。将结果写在右边内存示意图相应位置。short*pi,*pj,t;long*pl;double*pd;*pd+=(double)*pi;pi=&t;*pi=(short)*pl;pj=pi;*pj/=3;+pj;+*pj;六六.假定内存的初始分配如下图左方所示,执行下述语句后,假定内存的初始分配如下图左方所示,执行下述语句后,分析内
13、存分配情况分析内存分配情况,将结果写在右边内存示意图相应位置。将结果写在右边内存示意图相应位置。short*pi,*pj,t;long*pl;double*pd;*pd+=(double)*pi;pi=&t;*pi=(short)*pl;pj=pi;*pj/=3;+pj;+*pj;编写一个函数编写一个函数delodds。功能是从字符串。功能是从字符串s中删除中删除所有所有ASCII码位奇数的字符,串中剩余字符形成一码位奇数的字符,串中剩余字符形成一个新串放在个新串放在t所指的数组中。函数原型如下:(所指的数组中。函数原型如下:(10分)分)void delidds(char*s,char t)
14、void delodds(char*s,char t)int i,j=0,n;n=strlen(s);for(i=0;i n;i+)if(si%2=0)tj+=si;tj=0;六六.分析下面程序的运行结果分析下面程序的运行结果(10分分)#include void main()char s1=“gawsie”;char s2=“bletonism”;char*ps;int i=0;for(ps=s1;*ps;ps+)if(*ps=a|*ps=e)putchar(*ps);else (*ps)-;putchar(*ps);putchar(n);while(s2i)printf(“%c”,i%3?s2i:*);i+;faavrhee*le*on*sm