




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
习题6参考解答 1请解释以下术语的含义:地址 指针 指针变量 直接访问 间接访问解:(1)地址:内存单元的编号叫做地址。(2)指针:内存单元的编号叫做地址,通常也叫做指针。(3)指针变量:在语言中,允许用一个变量来存放指针,这种变量称为指针变量。(4)直接访问:通过变量名称引用变量内存单元的方式称为直接访问。(5)间接访问:利用了指针变量,通过变量的指针(即变量的内存地址)来引用内存单元的值,这种方式称为间接访问。2指针能参与哪几种运算?举例说明。解:(1)指针变量和整数可以进行加/减运算:p+、p-、p+i、p-i、p+=i、p-=i (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)同类指针变量在一定的条件下可以作比较运算: pq 3判断下面两个程序的正误,若错误指出原因。(1)#includeint main() char *p;p=DATA;printf(%sn,*p);return 0;解:该程序错。应为:printf(%sn,p);(2)#includeint 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(*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; int *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; 程序运行情况如下:1 2 3Before change:123After change:3 1 26输入一个10个元素的一维数组,在主函数中用scanf函数输入。用指针方式编程找出最大和最小数,并指出最大数和最小数的位置。解:int 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 #include int 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; 程序运行情况如下:1 5 6 78 9 6 4 7 2 31 5 6 78 9 6 4 7 2 3max=a3=787输入一段文字,统计其中所包含的数字字符和字母字符个数。解:#include#include#include#define N 80int cnum=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 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; 解: 3 3 2 1 2 3(3)#include #includeint main() char *s1=AbDeG; char *s2=AbdEg; s1+=2;s2+=2; printf(%dn,strcmp(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,C language,dBase,Coble; char (*p); int j; p=a+3; for(j=3;j=0;j-) printf(%sn,*(p-); return 0; 解: Coble dBase C language Pascal9用一个函数实现两个字符串的比较,即自己写一个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(char *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);程序运行结果如下:helloworld-1510设计一个程序,管理一个班的计算机成绩,要求采用一维数组来存储学生的成绩。解: #include int main(void) float a10;int i=0;double sum = 0.0; float avg = 0.0; for(i=0;i10;i+) printf(请输入第%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个同学的成绩:8983.10000011输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换,用指针来实现。解:#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);void main()int number10;aa(number);bb(number);cc(number);程序运行结果如下:0 -9 10 20 30 40 50 60 70 66 -9,0,10,20,30,40,50,60,66,7012分析下列程序的运行结果。 #include int f1(int x) return x+1;i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河北软件职业技术学院《兽医临床病理学》2023-2024学年第二学期期末试卷
- 江苏联合职业技术学院《电子设计与创新基础A》2023-2024学年第二学期期末试卷
- 上海震旦职业学院《BM概论》2023-2024学年第一学期期末试卷
- 2025届山东省青岛李沧区四校联考初三第一次诊断性考试试题化学试题试卷含解析
- 浙江经贸职业技术学院《医学统计学(包括SPSS软件、科研设计)》2023-2024学年第二学期期末试卷
- 武汉理工大学《测量与遥感》2023-2024学年第二学期期末试卷
- 上海市嘉定二中2025届高三第九次月考英语试题含解析
- 山西中医药大学《互换性与技术测量实验》2023-2024学年第二学期期末试卷
- 2025年江苏省南通市如东县高频错题卷(十二)英语试题含答案
- 内蒙古自治区乌兰察布市集宁区2025年高三高考最后一卷化学试题含解析
- 办公室平面图模板
- 分包商资格申请表(全套)
- 三年级数学下册苏教版《解决问题的策略-从问题想起》教学反思(区级公开课)
- 计量经济学期末考试题库(完整版)及答案
- 移动机器人机械臂的设计
- 加 工 贸 易 手 册
- 高通量测序技术在微生物基因组学中的应用
- 复方地蒽酚软膏(克显龙)蒽林软膏说明书副作用不良反应高低浓度的使用方法
- 浙江省建设工程施工取费定额(2003版)完整版
- 04_微生物农药
- AA7000系列原子吸收光谱仪基本操作手册
评论
0/150
提交评论