C语言指针经典练习题-及答案 下载本文

B) pa是一个指向某数组中第5个元素的指针,该元素是int型变量 C) pa [5]表示某个元素的第5个元素的值

D) pa是一个具有5个元素的指针数组,每个元素是一个int型指针 44、若有以下定义,且0≤i<4,则不正确的赋值语句是__ __. int b[4][6], *p, *q[4];

A) q[i] = b[i]; B) p = b;

C) p = b[i] D) q[i] = &b[0][0];

45、若要对a进行++运算,则a应具有下面说明____. A) int a[3][2]; B) char *a[ ] = {“12”,”ab”}; C) char (*a)[3]; D) int b[10], *a = b; 46、若有以下说明语句:

char *language[ ] = {“FORTRAN”,”BASIC”,’’PASCAL”,’’JAVA”,”C”}; char **q;

q = language + 2;

则语句printf(“%o\\n”, *q) 输出的是_ __. A) language[2]元素的地址; B)字符串PASCAL

C) language[2]元素的值,它是字符串PASCAL的首地址 D)格式说明不正确,无法得到确定的输出

47、若有以下程序: void main() {

char *a[3] = {\ char **ptr = a;

printf(\ %s\}

这段程序的输出是() A) I l B) o o C)o love D) I love

二、程序题

1、计算字符串中子串出现的次数。要求:用一个子函数subString()实现,参数为指向字符串和要查找的子串的指针,返回次数。

加密程序:由键盘输入明文,通过加密程序转换成密文并输出到屏幕上。 算法:明文中的字母转换成其后的第4个字母,例如,A变成E(a变成e),Z变成D,非字母字符不变;同时将密文每两个字符之间插入一个空格。例如,China转换成密文为G l m r e。要求:在函数change中完成字母转换,在函数insert中完成增加空格,用指针传递参数。

字符替换。要求用函数replace将用户输入的字符串中的字符t(T)都替换为e(E),并返回替换字符的个数。

编写一个程序,输入星期,输出该星期的英文名。用指针数组处理。

9

5、有5个字符串,首先将它们按照字符串中的字符个数由小到大排列,再分别取出每个字符串的第三个字母合并成一个新的字符串输出(若少于三个字符的输出空格)。要求:利用字符串指针和指针数组实现。

定义一个动态数组,长度为变量n,用随机数给数组各元素赋值,然后对数组各单元排序,定义swap函数交换数据单元,要求参数使用指针传递。

实现模拟彩票的程序设计:随机产生6个数字,与用户输入的数字进行比较,输它们相同的数字个数(使用动态内存分配)。 题号 答案 1 B 2 D 3 D 4 B 5 D 6 A 7 B 8 C 9 C 10 A 11 D 12 D 13 A 14 B 15 A 16 D 17 4,12 18 D 19 D 20 8,8 21 B 22 C 23 C 24 A 25 D 26 B 27 C 28 D 29 B 30 C 31 C 32 D 33 D

10

34 A 35 D 36 B 37 D 38 D 39 C 40 A 41 E 42 A 43 D 44 B 45 D 46 C 47 C 11