教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 实用模板 >

6.C语言指针练习题(2)

来源:网络收集 时间:2026-02-06
导读: a[2]=30 *(a+2)=30 *(p+2)=30 p[2]=30 a[3]=40 *(a+3)=40 *(p+3)=40 p[3]=40 a[4]=50 *(a+4)=50 *(p+4)=50 p[4]=50 a[5]=60 *(a+5)=60 *(p+5)=60 p[5]=60 分析:分析程序根据指针与数组关系,引用数据可以有四种不

a[2]=30 *(a+2)=30 *(p+2)=30 p[2]=30 a[3]=40 *(a+3)=40 *(p+3)=40 p[3]=40 a[4]=50 *(a+4)=50 *(p+4)=50 p[4]=50 a[5]=60 *(a+5)=60 *(p+5)=60 p[5]=60

分析:分析程序根据指针与数组关系,引用数据可以有四种不同的表示方法:使用数组下标变量;使用数据固有的指针——数组名间接引用;使用指向数组的指针的间接引用;使用指向数组的指针下标引用。

例题9:指出下列程序运行结果: #include

int b[4][4]={{10,11,12,13},{14,15,16,17},{18,19,20,21},{22,23,24,25}}; void main()

{int (*a)[4],*p;

a=b; //指针变量a,取得二维数组第一行地址 p=a[1]; //指针变量p,取得二维数组第二行第一列地址 for( int I=1;I<=4;p=p+1,I++) //A行 cout<<*p<<'\\t'; cout<

for( I=0;I<=3;I++) //B行 {cout<<*(*a+1)<<'\\t'; a++;} //C行 cout< } 运行结果是:

14 15 16 17 11 15 19 23

分析:根据题意,指针变量p取得二维数组第二行第一列地址,进行循环语句后,每循环一次,指针变量下移一个元素,A行循环输出是14,15,16,17。指向一维数组指针a,取得二维

数组第一行地址,由指向一维数组指针定义,*a+1表示该行第一列元素地址,*(*a+1)表示该地址的值,所以B行输出是11,15,19,23。

例题10:写出下列程序运行结果:

#include

void fun(int *& a, int &m) { a=new int[m]; //A

int * p=a;

for(int i=0;i

*p++=i*i+1;

}

void main()

{ int *b,n=5; fun(b,n);

for(int i=0;i

cout< cout<

delete[]b; //B }

运行结果是: 1 2 5 10 17

分析:指针变量在函数main中没有取得地址,所以在A行中,对被调用函数fun给对应的形参指针变量申请地址,即指针变量b和形参指针变量p指向同一组地址。B行对申请地址释放。

例题11:下列函数change的功能是,将字符串中的小写字母转成大写字母,请填空。 #include #include

void change( ) //1 {int i=0;

for(i=0; ;i++) //2 if(a[i]>='a'&&a[i]<='z')

; //3 }

void main() {char p[80]; cout<<\

cin.getline(p,80) ; //读一行字符,中间可以有空格 change(p);

cout< }

如程序运行时得到以下结果: 请输入一行字符: This is a book.. THIS IS A BOOK.

答案:(1)char *a 或 char a[80]

(2) a[i] 或 a[i]!=’\\0’

(3) a[i]= a[i] –32或a[i]-= a[i] 分析:

(1) 由指针和字符串关系知:当实参是数组,形参可以是字符串变量,也可以是字符指针变量。

(2) 循环语句结束条件是字符标记’\\0’。

(3) 大写字母的ASCII码比小室字母的ASCII码小32。

例题12:下列函数swap实现数据交换功能功能,请填空。 #include

void swap(int *p,int *q) {int temp; temp=*p;

; //1 ; //2 }

void main() {int a,b; int *p1,*p2;

cout<<\请输入两个正数:\ cin>>a>>b; p1=&a; p2=&b; swap(p1,p2);

cout<<\结果a和b的值:\}

如程序运行时得到以下结果: 请输入两个正数:10 20 结果a和b的值:20,10 答案:

(1) (1) *p=*q (2) (2) *q=temp;

分析:实参和形参都是指针变量,所以指针变量p1和p指向同一个地址,同样p2和q也指向同一个地址。函数swap()是交换两个数,故应填写语句*p=*q、*q=temp。

例题13:下列函数sort实现对字符串按字典顺序由小到大排序,请填空。 #include #include

void sort( ) //1 {char ; //2 int i,j;

for(i=0;i for(j=0;j if(strcmp( ) //3 { temp=p[j];

; //4

p[j+1]=temp;

} }

void main() {

char *a[5]={\ sort(a,5);

for(int i=0;i<5;i++) cout< }

程序运行结果如下: apen cadre soldier

…… 此处隐藏:132字,全部文档内容请下载后查看。喜欢就下载吧 ……
6.C语言指针练习题(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/521220.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)