C语言指针经典练习题-及答案(2)

2018-12-05 20:58

return 0; }

A)hello B)null C)h D)发生异常 36.下段程序的运行结果是 void main() {

char *p,*q;

char str[]=\q = p = str; p++; print(q); print(p); }

void print(char *s) {

printf(“%s”,s); }

A)H e

B)Hello,World ello,World C)Hello,World Hello,World D)ello,World ell,World 37.有以下程序 void fun(char *c,int d) {

*c=*c+1; d=d+1;

printf(\}

void main() {

char a='A',b='a'; fun(&b,a);

printf(\}

程序运行后的输出结果是___。

A) B,a,B,a B) a,B,a,B C) A,b,A,b D) b,B,A,b

38、下面选项属于函数指针的是: A、(int*)p(int, int) B、int *p(int, int) C、两者都是 D、两者都不是

39、若有函数max(a,b),并且已使函数指针变量p指向函数max,当调用该函数时,正确的调用方法是__ __.

A)(*p)max(a,b); B)*pmax(a,b); C) (*p)(a,b); D) *p(a,b);

40、下面几个选项中的代码能通过编译的是 : A)int* fun()

{

int s[3]={1,3,4};; return s; }

int main() {

int * result; result = fun();

for(int i =0;i<3;i++) printf(\ return 0; }

B)int& fun() {

int s[3]={1,3,4};; return s; }

int main() {

int * result; result = fun();

for(int i =0;i<3;i++) printf(\ return 0; }

C)int* fun() {

int s[3]={1,3,4};; return &s; }

int main() {

int * result; result = fun();

for(int i =0;i<3;i++) printf(\ return 0; }

D)int& fun() {

int s[3]={1,3,4};; return &s; }

int main()

{

int * result; result = fun();

for(int i =0;i<3;i++) printf(\ return 0; }

41、下列选项中声明了一个指针数组的是: A)int *p[2]; B)int (*p)[2]; C)typedef int* intPtr; intPtr p[2]; D)A和B E)A和C F)B和C

42、下面代码能通过编译的是: A)int main() {

int a[3]={1,2,3};

int *b[3]={&a[1],&a[2],&a[3]}; int **p = b; return 0; }

B)int main() {

int a[3]={1,2,3};

int *b[3]={a[1],a[2],a[3]}; int **p = b; return 0; }

C)int main() {

int a[3]={1,2,3};

int *b[3]={&a[1],&a[2],&a[3]}; int *p = b; return 0; }

D)int main() {

int a[3]={1,2,3};

int *b[3]={&a[1],&a[2],&a[3]}; int *p = &b; return 0; }

43、对于语句int *pa[5];下列描述中正确的是_ __.

A) pa是一个指向数组的指针,所指向的数组是5个int型元素int (*p)[5]

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),并返回替换字符的个数。

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

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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 A D B D D C A E A D B D C C


C语言指针经典练习题-及答案(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:佳能 IP1180 IP1880 IP2580 清零软件废墨清零方法

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: