return num; }
① A) str[i]==substr[i] B) str[i]!=‘\\0’
C) str[i]==‘\\0’ D) str[i]>substr[i] ② A) j=i+1 B) j=i C) j=i+10 D) j=1 ③ A) k B) k++ C) k+1 D) ++k
53. 以下Delblank函数的功能是删除字符串s中的所有空格(包括Tab、回车符和换行符)。
void Delblank(char *s) { int i,t; char c[80];
for(i=0,t=0; ① ;i++)
if(!isspace( ② ))c[t++]=s[i]; c[t]=‘\\0’; strcpy(s,c); }
① A) s[i] B) !s[i] C) s[i]=‘\\0’ D) s[i]==‘\\0’ ② A) s+i B) *c[i] C) *(s+i)=‘\\0’ D) *(s+i) 54. 以下conj函数的功能是将两个字符串s和t连接起来。
char *conj(char *s,char *t) { char *p=s; while(*s) ① ; while(*t)
{*s= ② ;s++;t++;} *s=‘\\0’; ③ ; }
① A) s-- B) s++ C) s D) *s
② A) *t B) t C) t-- D) *t++
③ A) return s B) return t C) return p D) return p-t 55. 下列程序的输出结果是 。
#include
{int **k,*a,b=100;a=&b; k=&a;printf(“%d\\n”,**k);}
A) 运行出错 B) 100 C) a的地址 D) b的地址 56. 下列程序的输出结果是 ( )
#include
{int *w;*a=*a+*a;*w=*a; *a=*b; *b=*w;} main()
{int x=9,y=5,*px=&x,*py=&y;fun(px,py);printf(“%d, %d\\n”,x,y);} A)出错 B) 18, 5 C) 5, 9 D) 5, 18 57. 若定义了以下函数:
void f(??) {??
p=(double *)malloc(10*sizeof(double)); ?? }
p是该函数的形参,要求通过p把动态分配存储单元的地址传回主调函数,则形参p的正确定义应当是( )
A) double *p B) float **p C) double **p D) float *p
二、判断题
1.( )指针变量里存放的是地址值,因此指针变量只能是int型的。 2.( )在C语言中,所谓指针型数据,即指该数据是一个地址。 3.( )有一个一维数组a[10],那么a与&a[0]等价。
4.( )如有说明:int b[10], *p = b;表明在使用时b与p就完全等价了。
5.( )数组中的每一个元素相当于一个变量。若要让一个指针变量指向它,必须用“&数组元素”的方法
向该指针变量赋值。
6.( )有如下程序段:int i, j = 2, k, *p = &i;k = *p + j;这里出现的两个“*”号,含义是一样的。 7.( )在C语言中,每一个变量在内存里占用的单元数都是相同的。 8.( )通过指针变量,就能间接地得到它所指向的变量的内容。
9.( )说明语句:int *p, p1, p2;只说明了一个能指向int型变量的指针。 10.( )有说明:int *p;且p指向地址为1500的内存单元,那么经过操作“p++;”后,p将指向1501的
内存单元。
11.( )数组元素可以是不同数据类型的。
12.( )如果初值表中的初值个数少于数组长度,那么C语言编译程序会自动把剩余的元素初始化为初值
表中的最后一个值。
13.( )主调函数把单个数组元素传递给修改该元素值的被调函数时,主调函数就能够得到修改后的值。 14.( )设p是指向数组a的指针变量,则a[i]和p[i]等价。 15.( )一个变量的指针就是该变量的地址。
16.( )若定义int **p;则程序中调用*p时,它代表的是p的地址。
17.( )若指针占用的内存大小为2Byte,则指向它的二重指针占用内存大小为4Byte . 18.( )带参main函数中的形参的值可以在程序中得到。
19.( )main(argc,argv)中的参数argv的定义格式为char argv[]。 20.( )int **p;表示定义一个*p指针变量。
21.( )在C语言中允许将一个整数赋给指针变量。
22.( )一个指针变量加1表示将该指针变量的原值(地址)加1。 23.( )int *p();表示定义一个指向函数的指针变量p。
24.( )当函数实参中使用指针变量时,形参变量也必须使用指针变量。 25.( )*p++等价于(*p)++。
26.( )使用指针技术,可以通过修改形参变量的值达到修改实参变量的值的目的。。
27.( )因为用字符数组和字符指针变量都能实现字符串的存储和运算,因此它们二者是完全等价的。 28.( )对指向函数的指针变量,像p+n、p++、p- -等运算是无意义的。
29.( )main(int argc,char *argv[])中的参数argc表示命令行只参数的个数。 30.( )在int a[3][4];中a+i和*(a+i)的含义是不一样的。 31.( )char *p[10];定义了一个指向字符数组的指针变量。
32.( )将指向函数的指针作为函数的参数,虽然可以提高效率,但是容易造成混乱,所以不符合结构化程序设计的原则。
33.( )数组名实际上是此数组的首地址,所以数组名相当于一个指针变量。 34.( )若定义数组a[2][3],则a+1和*(a+1)完全等价。
35.( )函数的形参为一个数组,则调用此函数时将数组名作为对应的实参。