版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、习题 6 参考解答1 请解释以下术语的含义:地址指针指针变量直接访问间接访问解:( 1 )地址:内存单元的编号叫做地址。( 2 )指针:内存单元的编号叫做地址, 通常也叫做指针。( 3 )指针变量:在语言中,允许用一个变量来存放指针,这种变量称为指针变量。( 4 )直接访问:通过变量名称引用变量内存单元的方式称为直接访问。( 5 )间接访问:利用了指针变量,通过变量的指针(即变量的内存地址)来引用内存单元的值,这种方式称为间接访问。2 指针能参与哪几种运算?举例说明。解:( 1)指针变量和整数可以进行加/ 减运算:p+ 、 p- 、 p+i 、p-i 、p+=i 、 p-=i( 2)指针变量可
2、进行赋值运算:p=&a;变量 a 的地址赋给p,即指针 p 指向 ap=array;数组 array首地址赋给pp=&arrayi;数组元素 arrayi的地址赋给pp=max;函数 max 的入口地址赋给pp1=p2;指针 p2 的值赋给指针p1 ,即 p1 、p2所指的数据相同( 3)同类指针变量在一定的条件下可以作相减运算:p-q( 4)同类指针变量在一定的条件下可以作比较运算 : pq3 判断下面两个程序的正误,若错误指出原因。(1 ) #includeint main()char *p; p=DATA; printf(%sn,*p); return 0;解:该程序错。应为:print
3、f(%sn,p);( 2 ) #include int main()int *p; *p=25;printf(%d,*p);return 0;解:该程序错。指针变量没有赋初值。4输入3 个整数,输出其中最大数。要求用指针变量实现。解:#includestdio.hint main()int a=0,b=0,c=0;int*aa=NULL,*bb=NULL,*cc=NULL,*p=NULL;aa=&a,bb=&b,cc=&c;printf(input 3 number:);scanf(%d %d %d,&a,&b,&c);printf(a=%d b=%d c=%dn,a,b,c);p=aa;if
4、(*p*bb) p=bb;if(*p*cc) p=cc;printf(%dn,*p);return 0;程序运行情况如下:input 3 number:4 5 9a=4 b=5 c=995 有 3 个整型变量i ,j , k 。请编写一个程序,设置3个指针变量p1 ,p2 ,p3 ,分别指向i ,j ,k ,然后通过指针变量使 i ,j,k 3 个变量的值顺序交换,即原来 i 的值赋给 j ,把 j 的原值赋给 k ,把 k 的原值赋给 i 。i , j ,k 的原值由键盘输入,要求输出 i , j ,k 的原值和新值。解:#include int main()int i,j,k,tmp;in
5、t *p1,*p2,*p3; scanf(%d%d%d,&i,&j,&k); printf(Before change:%dt%dt%dn,i,j,k); p1 = &i;p2 = &j;p3 = &k; tmp=*p3;*p3=*p2;*p2=*p1;*p1=tmp;printf(After change:%dt%dt%dn,i,j,k);return 0;程序运行情况如下:123 Before change:12 3After change:3126 输入一个 10个元素的一维数组, 在主函数中用 scanf函数输入。用指针方式编程找出最大和最小数,并指出最大数和最小数的位置。解:int
6、y_max(int *p,int n)int max=*p,i,k=0;for(i=0;in;i+)/*这里判断到in,而不是i=n*/if(max*(p+i)k=i;max=*(p+i);/* 记得要在这里更新一下max 的记录 */return k;#define N 10#includeint main()int aN;int i,m,max;for(i=0;iN;i+)scanf(%d,&ai);for(i=0;iN;i+)printf(%d ,ai);m=y_max(a,N);printf(nmax=a%d=%d,m,am);return 0;程序运行情况如下/p>
7ax=a3=787 输入一段文字,统计其中所包含的数字字符和字母字符个数。解:#include#include#include#define N 80intcnum=0,dnum=0;/* 全局变量用于在两个函数之间传递数据 */int main()char chN;void count(char c);int i,n;gets(ch);n=strlen(ch);for(i=0;i=0&c=A&c=a&c=z)cnum+;return 0;程序运行情况如下:hello123455,58 请写出下列程序段的输出结果。(1 ) #include int main()int
8、a=1,2,3,4,5,6,*p; p=a;*(p+3)+=2; printf(%d,%d,*p,*(p+3); return 0;解:1,6( 2) #include int main()int a=1,2,3,4,5,6; int *p;p=a;printf(%5d%5d%5d%5dn,*p,*(+p),*+p,*(p-); printf(%5d%5dn,*p,*(a+2); return 0;解:332123( 3) #include #include int main()char *s1=AbDeG; char *s2=AbdEg;s1+=2;s2+=2;printf(%dn,strc
9、mp(s1,s2);return 0;解:-1( 4)#include #include fun(char *w,int n)char t,*s1,*s2; s1=w;s2=w+n-1; while(s1s2)t=*s1;*s1=*s2;*s2=t;s1+; s2-;int main()char p=1234567;fun(p,strlen(p);puts(p);return 0;解:7654321( 5) #include int main()char*a=Pascal,Clanguage,dBase,Coble;char (*p);int j;p=a+3;for(j=3;j=0;j-)pr
10、intf(%sn,*(p-);return 0;解:CobledBaseC languagePascal9 用一个函数实现两个字符串的比较,即自己写一个strcmp函数:strcmp(s1,s2)如果 s1=s2 ,则函数返回值为0 ;如果 s1!=s2 ,返回它们两者第一个不同字符的ASCII码差值(如“BOY ”与“BAD ”,第二个字符不同,“ O”与“ A”之差为 79-65=14 );如果 s1s2 ,则输出正值,如果 s1s2 ,则输出负值。两个字符串s1 , s2 由 main函数输入, strcmp函数的返回值也在main函数中输出。解:#includeint strcmp(c
11、har *s1,char *s2)for(;*s1=*s2&*s1&*s2;s1+,s2+);/*找不同的字符*/return (*s1-*s2);void main()char a10,b10;gets(a);gets(b);printf(%dn,strcmp(a,b);程序运行结果如下:hello world -1510 设计一个程序,管理一个班的计算机成绩,要求采用一维数组来存储学生的成绩。解:#include int main(void)float a10;int i=0;double sum = 0.0;float avg = 0.0;for(i=0;i10;i+)printf(请输
12、入第 %d 个同学的成绩:,i+1);scanf(%f,&ai);printf(n);sum+=ai;avg = sum/10.0;printf(%fn,avg);return 0;程序运行结果如下:请输入第1个同学的成绩: 85 请输入第2个同学的成绩: 89 请输入第3个同学的成绩: 90 请输入第4个同学的成绩: 78 请输入第5个同学的成绩: 69 请输入第6个同学的成绩: 58 请输入第7个同学的成绩: 78 请输入第8个同学的成绩: 95 请输入第9个同学的成绩: 100 请输入第10 个同学的成绩: 89 83.10000011 输入 10 个整数,将其中最小的数与第一个数对换,
13、把最大的数与最后一个数对换,用指针来实现。解:#include void aa(int *array)int i;for(i=0;i10;i+)scanf(%d,&arrayi);void bb(int *array)int *max,*min,t;int *p;max=min=array;for(p=array;p=array+9;p+)if(*max*p) min=p;t=*max;*max=array9;array9=t;t=*min;*min=array0;array0=t;void cc(int *array)int *p;for(p=array;p=array+9;p+)printf(%d,*p);voidmain()int number10;aa(number);bb(number);cc(number);程序运行结果如下:0-91020304050607066-9,0,10,20,30,40,50,60,66,7012 分析下列程序的运行结果。#include intf1(int x)retur
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 善待动物演讲稿范文(14篇)
- 金蝶KIS专业版仓存及生产管理-培训课件
- 油气行业安全生产监管-洞察分析
- 虚拟现实声源定位实现-洞察分析
- 虚拟货币交易风险管理-洞察分析
- 污水深度处理技术-洞察分析
- 向国旗敬礼国旗下讲话老师讲话稿范文(6篇)
- 医疗机器人与区块链结合的研究-洞察分析
- 关爱同学远离校园欺凌发言稿范文(5篇)
- 印刷行业智能化培训模式-洞察分析
- 强夯安全技术交底
- 企业财务风险防范的参考文献
- 2024年四川省水电投资经营集团普格电力有限公司招聘笔试参考题库含答案解析
- 2024届新高考物理冲刺复习:“正则动量”解决带电粒子在磁场中的运动问题
- PLC控制Y-△降压启动控制设计
- 趣识古文字(吉林联盟)智慧树知到期末考试答案2024年
- 汕头市中小学教学研究中心招聘专职教研员笔试真题2023
- 2024年国家粮食和物资储备局直属事业单位招聘笔试参考题库附带答案详解
- 无纺布行业的分析
- 2024届重庆市西南大学附属中学高考生物试题模拟题及解析附答案
- 算力互助与资源优化调度
评论
0/150
提交评论