c语言指针编程练习题doc.docx

上传人:b****8 文档编号:23726203 上传时间:2023-05-20 格式:DOCX 页数:14 大小:18.44KB
下载 相关 举报
c语言指针编程练习题doc.docx_第1页
第1页 / 共14页
c语言指针编程练习题doc.docx_第2页
第2页 / 共14页
c语言指针编程练习题doc.docx_第3页
第3页 / 共14页
c语言指针编程练习题doc.docx_第4页
第4页 / 共14页
c语言指针编程练习题doc.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

c语言指针编程练习题doc.docx

《c语言指针编程练习题doc.docx》由会员分享,可在线阅读,更多相关《c语言指针编程练习题doc.docx(14页珍藏版)》请在冰豆网上搜索。

c语言指针编程练习题doc.docx

c语言指针编程练习题doc

C语言指针编程练习题

2.从命令行输入两个实型数据,请比较大小并输出。

参考答案

3.输入3个数a,b,c,按大小顺序输出。

利用指针方法参考答案

4.输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

参考答案

5.有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数参考答案

6.有n个人围成一圈,顺序排号。

从第一个人开始报数,凡报到3的人

退出圈子,问最后留下的是原来第几号的那位。

参考答案

7.写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。

参考答案

8.编写一个函数,输入n为偶数时,调用函数求

1/2+1/4+当输入n为奇数时,调

用函数l/l+l/3+-+l/n参考答案

9.八进制转换为十进制参考答案

10.编一个函数fun,函数的功能是分别求出数组中所有奇数之

和以及所有偶数之和。

形参n给了数组中数据的个数:

利用指针odd返回奇数之和,利用指针even返回偶数之和。

例如:

数组中的值依次为:

1,8,2,3,11,6;则利用指针odd返回奇数之和24;利用指针even返回偶数之和8。

参考答案

11.复制字符串。

参考答案

一、用指针方法编写一个程序,输入3个整数,将它们按由小到大的顺序输出^include

voidswap

inttemp:

temp-*pa;

*pa-*pb;

*pb-temp:

}

voidmain

inta,b,c,temp;

scanf;

if

swap;

if

swap;

if

swap;

printf;

}

二、C语言用指针方法输入3个字符串按由小到大顺序输出

ttinclude“stdio.h"

ttinclude“string,h"

intmain

char*t;

char*pl=NULL,*p2二NULL,*p3二NULL;

charchi[20]={0},ch2[20]={0},ch3[20]={0};

pl-chl:

p2-ch2;

p3-ch3;

printf;

scanf;

fflush;

printf;

scanf;

fflush;

printf;

scanf;

}

fflush:

if>0)(t-pl;pl-p2;p2-t:

}if>0)(t-pl:

pl-p3;p3-t:

}if>0){t-p2:

p2-p3;p3-t:

}printf:

return0:

9.4编程输入一行文字,找出其中的大写字母,小写字母,空格,数字,及其他字符的个数

ttinclude

voidmain

inta-0,b-0,c-0,d-0,e-0,i-0:

char*p,s[20];

while)!

-'\n')i++;

P二s;

while

if

a++;

elseif

b++;

elseif

C++;

elseif

d++;

elsee++;

p++;

}

printf;

printf;

}

9.5写一个函数,将3矩阵转置

ttinclude“stdio.h"

voidTranspose[3])

inttemp;

inti,j;

for/*转置*/

for

temp-*+i);

*+i)=*+j);

*+j)-temp:

voidmain

inta⑶⑶={{1,2,3},{4,5,6},{7,8,9}};

Transpose;

for

for

printf;

}

printf;

}

}

}.6用指向一维数组的指针做函数参数

^include

^include

intmain

voidsort[6]);〃一维数组的指针做函数参数

inti:

charstr[10][6]:

char[6];//定义一维数组的指

针做函数参数

printf;

for

scanf;

p=str;//将str—维数组指针,赋值给p;

sort;

printf;

for

printf;

return0:

}

voidsort[6])//s指向一维数组的指针做函数参数;

inti,j;

chartemp[6],*t;

t-temp;

for//i应该小于9;如果小于10,那么就比较了9+1次;按照冒泡法则,for//第一次比较需要9次就是i=0到i二8共九次;第二次需要比较8次;依次类推;

if>0)

strcpy;

strcpy;

strcpy;

}

}

9.7编一程序,用指针数组在主函数中输入十个等长的字符串。

用另一函数对它们排序,然后在主函数中输出10个己排好序的字符串

〃用指针数组处理

ttinclude

ttinclude

intmain

voidsort:

inti:

charstr[10][6],*p[10];

printf;

for//首先将10个str的首地址赋值给10个p[i];

p[i]=str[i];//将第i个字符串的首地址赋予指针数组p的第i个元素;

for

scanf:

//scanf输入到&p[i]

sort;

printf;

for

printf;//输出到p[i];

}

voidsort

char*temp;

inti,j;

for

for

if,*)>0)

temp=*;//*指向数组指针,我想应该是字符串的首地址;所以可以直接赋值给temp指针;

*二*;

*=temp;

9.8指针将n个数按输入时顺序的逆序排列,用函数

实现

ttinclude

一、选择题

1.变量的指针,其含义是指该变量的.

a)值b)地址

c)名d)一个标志

2.若有语句intpoint,a=4;和point=&a;下面均代表地址的一组选项是.a)a,point,*&a

b)&*a,&a,*point

c)*&point,*point,&ad)&a,&*point,point

3.若有说明;int*p,m=5,n;以下正确的程序段的是

scanf;

a)*p表示的是指针变量p的地址

b)*p表示的是变量a的值,而不是变量a的地址

c)*p表示的是指针变量p的值

d)*p只能用来说明p是一个指针变量

5.己有变量定义和函数调用语句:

inta=25;print_value;下面函数的正确输出结果是.

voidprint_value

(printf;}

a)23b)c)d)26

6.若有说明:

long*p,a;则不能通过scanf语句正确给输入项读入数据的程序段是

A)*p=&a;scanf;

B)p-malloc;scanf;

C)scanf;

D)scanf;

7.有以下程序

ttinclude

main

{intm-1,n-2,*p=&m,*q=&n,*r;

r=P;P=q;q=r;

printf;

}

程序运行后的输出结果是

A)1,2,1,2

C)2,1,2,1

8.有以下程序

main{inta-1,b-3,c-5:

int*pl=&a,*p2=&b,*p=&c;*p二*pl*;printf;}

执行后的输出结果是

A)1

9.有以下程序

main

{inta,k=4,m=4,*pl=&k,*p2=&m;

printf;

}

程序运行后的输出结果是

A)4

10.在16位编译系统上,若有定义inta[]={10,20,30},*p=&a;,当执行p++;后,下列说法错误的

A)p向高地址移了一个字节

C)p向高地址移了两个字节

B)p向高地址移了一个存储单元D)p与a+1等价B)1C)0D)运行时出错,无定值B)203D)B)1,2,2,1D)2,1,1,2

11.有以下程序段

inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b:

b=p[5];

b中的值是

A)5B)C)D)9

12.若有以下定义,则对a数组元素的正确引用是

inta[5],*p=a;

a)*&a[5]b)a+c)*d)*

13.若有以下定义,则p+5表示.

inta[10],*p=a;

a)元素a[5]的地址b)元素a[5]的值

c)元素a[6]的地址d)元素a[6]的值

14.设已有定义:

inta[10]={15,12,7,31,47,20,16,28,13,19},*p;下列语句中正确的是

A)for:

a++);

B)for:

p++);

C)for:

D)for:

15.有以下程序段

ttinclude

intmain

{intx□={10,0,0};

int*px-x;

printf:

printf:

px-x;

printf++):

printf:

px-x;

printf:

printf:

px-x;

printf:

printf:

return0:

}

程序运行后的输出结果是

A)11,11,11,12,12,20,20,20

B)20,10,11,10,11,10,11,10C)

11,11,11,12,12,13,20,20D)20,10,11,20,11,12,20,20

16.设有如下定义:

intarr[]=(6,7,8,9,10};

int*ptr;

ptr=arr;

*+=2;

printf);

则程序段的输出结果为

A)8,10B)6,8C)7,D)6,10

17.若有定义:

inta□={2,4,6,8,10,12},*p=a;则*的值是•*的值是.

18.若有以下说明和语句,intc[4][5],[5];p=c;能正确引用c数组元素的是.

A)p+lB)*C)*+3D)*)

19.若有定义:

inta[2][3],则对a数组的第i行j列元素地址的正确引用为.a)*b)c)*d)a[i]+j

20.若有以下定义:

inta[2][3]={2,4,6,8,10,12};则的值是.*+0)的值是.

21.有以下定义

chara[10],*b=a;

不能给数组a输入字符串的语句是

A)getsB)getsC)gets;D)gets;

22.下面程序段的运行结果是.

char*s="abcde";

c)字符'c'的地址d)无确

s+-2;printf;

a)cdeb)字符,c

定的输出结果

23.以下程序段中,不能正确赋字符串的是

char

char

卜列

A)chars[10]-"abcdefg";B)t[]-"abcdefg",*s=t;

C)chars[10]:

s-"abcdefg";D)s[10];strcpy;

24.设已有定义:

char*st二“howareyou";程序段中正确的是

A)chara[ll],*p;strcpy;

B)chara[l1]:

strcpy:

C)chara[ll]:

strcpy;

D)chara[],*p;strcpy;

25.有以下程序

main

chara[]-"programming",b[]-"language"

char*pl,*p2;

inti:

pl-a;p2-b;

for

if=*)

printf);

输出结果是

A)gmB)rgC)orD)ga

26.设pl和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是.

a)c二*pl+*p2;b)p2-cc)pl二p2d)c二*pl*;

27.以下正确的程序段是.

a)charstr[20]:

b)char*p;

scanf;scanf;

c)charstr[20];

d)charstr[20],*p-str:

scanf;scanf;

28.若有说明语句

chara□二“Itismine";

char*p="Itismine";

则以下不正确的叙述是.

a)a+l表示的是字符t的地址

b)p指向另外的字符串时,字符串的长度不受限制

c)p变量中存放的地址值可以改变

d)a中只能存放10个字符

29.下面程序的运行结果是

ttinclude

ttinclude

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 公共行政管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1