




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
例6.1 通过指针变量访问整型变量。#include using namespace std;int main( )int a,b; /定义整型变量a,bint *pointer_1,*pointer_2; /定义指针变量*pointer_1,*pointer_2 a=100;b=10; /对a,b赋值pointer_1=&a; /把变量的地址赋给pointer_1pointer_2=&b; /把变量的地址赋给pointer_2couta bendl; /输出a和b的值cout*pointer_1 *pointer_2endl; /输出*pointer_1和*pointer_2的值return 0;例6.2 输入a和b两个整数,按先大后小的顺序输出a和b(用指针变量处理)。#include using namespace std;int main( )int *p1,*p2,*p,a,b;cinab; /输入两个整数p1=&a; /使p1指向ap2=&b; /使p2指向bif(ab) /如果ab就使p1与p2的值交换p=p1;p1=p2;p2=p; /将p1的指向与p2的指向交换couta=a b=bendl;coutmax=*p1 min=*p2endl;return 0;例6.3 题目同例6.2,即对输入的两个整数按大小顺序输出。这里用函数处理,而且用指针类型的数据作函数参数。程序如下: #include using namespace std;int main( ) void swap(int *p1,int *p2); /函数声明int *pointer_1,*pointer_2,a,b; /定义指针变量pointer_1,pointer_2,整型变量a,bcinab;pointer_1=&a; /使pointer_1指向apointer_2=&b; /使pointer_2指向bif(ab) swap(pointer_1,pointer_2); /如果ab,使*pointer_1和*pointer_2互换coutmax=a min=bendl;/a已是大数,b是小数 return 0;void swap(int *p1,int *p2) /函数的作用是将*p1的值与*p2的值交换 int temp;temp=*p1; *p1=*p2;*p2=temp; 例6.4 输入a,b,c 3个整数,按由大到小的顺序输出。用上面介绍的方法,用3个指针变量指向3个整型变量,然后用swap函数来实现互换3个整型变量的值。程序如下: #include using namespace std;int main( ) void exchange(int *,int *,int *); /对exchange函数的声明int a,b,c,*p1,*p2,*p3;cinabc; /输入3个整数p1=&a;p2=&b;p3=&c; /指向3个整型变量exchange(p1,p2,p3); /交换p1,p2,p3指向的3个整型变量的值couta b cendl; /按由大到小的顺序输出3个整数void exchange(int *q1,int *q2,int *q3)void swap(int *,int *); /对swap函数的声明if(*q1*q2) swap(q1,q2); /调用swap,将q1与q2所指向的变量的值互换if(*q1*q3) swap(q1,q3); /调用swap,将q1与q3所指向的变量的值互换if(*q2*q3) swap(q2,q3); /调用swap,将q2与q3所指向的变量的值互换void swap(int *pt1,int *pt2) /将pt1与pt2所指向的变量的值互换int temp;temp=*pt1;*pt1=*pt2;*pt2=temp;例6.5 输出数组中的全部元素。假设有一个整型数组a,有10个元素。要输出各元素的值有3种方法: (1) 下标法#include using namespace std;int main( ) int a10;int i;for(i=0;iai; /引用数组元素aicoutendl;for(i=0;i10;i+)coutai ; /引用数组元素aicoutendl;return 0;运行情况如下: 9 8 7 6 5 4 3 2 1 0 (输入10个元素的值)9 8 7 6 5 4 3 2 1 0 (输出10个元素的值)(2) 指针法 将上面程序第7行和第10行的“ai”改为“*(a+i)”,运行情况与(1)相同。(3) 用指针变量指向数组元素#include using namespace std;int main( ) int a10;int i,*p=a; /指针变量p指向数组a的首元素a0for(i=0;i*(p+i); /输入a0a9共10个元素coutendl;for(p=a;p(a+10);p+)cout*p ; /p先后指向a0a9 coutendl;return 0;运行情况与前相同。请仔细分析p值的变化和*p的值。例6.6 将10个整数按由小到大的顺序排列。在例5.7程序的基础上,将形参改为指针变量。#include using namespace std;int main( )void select_sort(int *p,int n); /函数声明int a10,i;coutenter the originl array:endl;for(i=0;iai;coutendl;select_sort(a,10); /函数调用,数组名作实参coutthe sorted array:endl;for(i=0;i10;i+) /输出10个已排好序的数coutai ;coutendl;return 0;void select_sort(int *p,int n) /用指针变量作形参int i,j,k,t;for(i=0;in-1;i+)k=i; for(j=i+1;jn;j+) if(*(p+j)*(p+k) k=j; /用指针法访问数组元素 t=*(p+k);*(p+k)=*(p+i);*(p+i)=t;例6.7 输出二维数组各元素的值。这里采用的方法是用基类型为整型的指针变量先后指向各元素,逐个输出它们的值。#include using namespace std;int main( ) int a34=1,3,5,7,9,11,13,15,17,19,21,23;int *p; /p是基类型为整型的指针变量for(p=a0;pa0+12;p+)cout*p ;coutendl;return 0;例6.8 输出二维数组任一行任一列元素的值。#include using namespace std;int main( ) int a34=1,3,5,7,9,11,13,15,17,19,21,23;int (*p)4,i,j;cinij;p=a;cout*(*(p+i)+j)endl;return 0;例6.9 输出二维数组各元素的值。题目与例6.7相同,但本题用一个函数实现输出,用多维数组名作函数参数。#include using namespace std;int main( ) void output(int (*p)4); /函数声明 int a34=1,3,5,7,9,11,13,15,17,19,21,23;output(a); /多维数组名作函数参数return 0;void output(int (*p)4) /形参是指向一维数组的指针变量 int i,j;for(i=0;i3;i+)for(j=0;j4;j+) cout*(*(p+i)+j) ;coutendl;例6.10 定义一个字符数组并初始化,然后输出其中的字符串。#include using namespace std;int main( ) char str=I love CHINA!;coutstrendl;return 0;例6.11 定义一个字符串变量并初始化,然后输出其中的字符串。#include #include using namespace std;int main( ) string str=I love CHINA!;coutstrendl;return 0;例6.12 定义一个字符指针变量并初始化,然后输出它指向的字符串。#include using namespace std;int main( ) char *str=I love CHINA!;coutstrendl;return 0;例6.13 将字符串str1复制为字符串str2。#include using namespace std;int main( ) char str1=I love CHINA!,str220,*p1,*p2;p1=str1;p2=str2;for(;*p1!=0;p1+,p2+) *p2=*p1;*p2=0;p1=str1;p2=str2;coutstr1 is: p1endl;coutstr2 is: p2endl;return 0;例6.14 求和中的大者。先按一般方法写程序:#include using namespace std;int main( )int max(int x,int y); /函数声明int a,b,m;cinab;m=max(a,b); /调用函数max,求出最大值,赋给mcoutmax=my) z=x;else z=y;return(z);现在将上面程序的主函数修改如下:#include using namespace std;int main( )int max(int x,int y); /函数声明int (*p)(int,int); /定义指向函数的指针变量pint a,b,m;p=max; /使p指向函数maxcinab;m=p(a,b);coutmax=mendl;return 0;例6.15 若干字符串按字母顺序(由小到大)输出。#include using namespace std;int main( ) void sort(char *name,int n); /声明函数void print(char *name,int n); /声明函数char *name=BASIC,FORTRAN,C+,Pascal,COBOL; /定义指针数组int n=5;sort(name,n);print(name,n);return 0;void sort(char *name,int n) char *temp;int i,j,k;for(i=0;in-1;i+)k=i;for(j=i+1;j0) k=j;if(k!=i) temp=namei;namei=namek;namek=temp;void print(char *name,int n) int i;for(i=0;in;i+)coutnameiendl;例6.16 指向字符型数据的指针变量。#include using namespace std;int main( ) char *p; /定义指向字符指针数据的指针变量p char *name=BASIC,FORTRAN,C+,Pascal,COBOL;p=name+2; /见图6.23中p的指向cout*pendl; /输出name2指向的字符串cout*pendl; /输出name2指向的字符串中的第一个字符例6.17 引用和变量的关系。#include #include using namespace std;int main( ) int a=10;int &b=a; /声明b是a的引用a=a*a; /a的值变化了,b的值也应一起变化coutasetw(6)bendl; b=b/5; /b的值变化了,a的值也应一起变化coutbsetw(6)aendl;return 0;例6.18 要求将变量i和j的值互换。下面的程序无法实现此要求。#include using namespace std;int main( ) void swap(int,int); /函数声明int i=3,j=5;swap(i,j); /调用函数swapcouti jendl; /i和j的值未互换return 0;void swap(int a,int b) /企图通过形参a和b的值互换,实现实参i和j的值互换 int temp;temp=a; /以下3行用来实现a和b的值互换a=b;b=temp;例6.19 使用指针变量作形参,实现两个变量的值互换。#include using namespace std;int main( ) void swap(int *,int *);int i=3,j=5;swap(&i,&j); /实参是变量的地址couti jendl; /i和j的值已互换return 0;void swa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 微信营销策略对时尚品牌的影响研究-洞察阐释
- 安装设备集成-洞察阐释
- 环保型原料替代技术-洞察阐释
- 绿色信息技术与可持续发展-洞察阐释
- 印刷企业大数据分析与市场预测研究-洞察阐释
- 西师版二年级上数学知识点梳理计划
- 四川中烟工业公司考试真题2024
- 基于ArcEngine的城市能源管理优化-洞察阐释
- 定西市通渭民康精神病医院招聘笔试真题2024
- 北京中医药大学孙思邈医院招聘笔试真题2024
- 经典音乐配乐课
- 南宋官窑教学课件
- 呼吸功能的监测与护理
- 婴儿椅设计研究报告总结
- 自动化机构设计基础
- 厌学怎么办-主题班会课件
- 公务用车租赁服务采购项目比选文件
- 新建混凝土路面道路工程施工工程投标书(技术方案)
- 旁站记录新表(脚手架拆除)
- 低压柜开关更换施工方案
- 织金新型能源化工基地污水处理厂及配套管网工程-茶店污水处理厂环评报告
评论
0/150
提交评论