实验8 指针实验报告答案
更新时间:2023-09-16 08:27:01 阅读量: 高中教育 文档下载
- 实验87天推荐度:
- 相关推荐
实验八 指针
【实验类型】 设计性 【实验学时】2 【实验目的】
1.通过实验进一步掌握指针的概念,会定义和使用指针变量。 2.能正确使用数组的指针和指向数组的指针变量。 3.能正确使用字符串的指针和指向字符串的指针变量。 4.能正确使用指向函数的指针变量。
5.了解指向指针的指针的概念及其使用方法。。
【实验内容与步骤方法提示】
以下程序要求使用指针处理。
1. 输入三个整数,按由小到大的顺序输出。运行无错后改为:输入三个字符串,按由小到
大的顺序输出。 解:
#include
void exchange(int *p1,int *p2,int *p3); int a1,a2,a3,*p1,*p2,*p3; printf(\请输入三个整数:\\n\ scanf(\ p1=&a1;p2=&a2;p3=&a3; exchange(p1,p2,p3);
printf(\排序后:\\n%d,%d,%d\\n\ return 0; }
void exchange(int *p1,int *p2,int *p3) {
void swap(int *p1,int *p2); if(*p1>*p2) swap(p1,p2); if(*p1>*p3) swap(p1,p3); if(*p2>*p3) swap(p2,p3); }
void swap(int *p1,int *p2) {
int temp;
temp=*p1;*p1=*p2;*p2=temp; }
#include
void exchange(char *p1,char *p2,char *p3); char a1[30],a2[30],a3[30],*p1,*p2,*p3; printf(\请输入三个字符串:\\n\ gets(a1); gets(a2); gets(a3);
p1=a1;p2=a2;p3=a3; exchange(p1,p2,p3);
printf(\排序后:\\n%s,%s,%s\\n\ return 0; }
void exchange(char *p1,char *p2,char *p3) {
void swap(char *p1,char *p2); if(strcmp(p1,p2)>0) swap(p1,p2); if(strcmp(p1,p3)>0) swap(p1,p3); if(strcmp(p2,p3)>0) swap(p2,p3); }
void swap(char *p1,char *p2) {
char p[90];
strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p); }
2.将一个3×3的矩阵转置,用一函数实现。
在一主函数中用scanf函数输入以下矩阵元素: 1 3 5 7 9 11 13 15 17
将数组名作为函数参数,在执行函数的过程中实现矩阵转置,函数调用结束后在主函数中输出转置后的矩阵。
#include
void move(int *p); int a[3][3],i,j,*p; for(i=0;i<3;i++) for(j=0;j<3;j++)
scanf(\ p=&a[0][0]; move(p);
for(i=0;i<3;i++) {
for(j=0;j<3;j++)
printf(\
printf(\ } }
void move(int *p) {
int i,j,t;
for(i=0;i<3;i++) for(j=i;j<3;j++) {
t=*(p+3*i+j);
*(p+3*i+j)=*(p+3*j+i); *(p+3*j+i)=t; } }
2. 有n人围成一个圈,顺序排号,从第一个人开始报数(从1到3报数),凡报到3的人
退出圈子,问最后留下的是原来第几号的那位。 #include
int i,k,m,n,a[80],*p; p=a;
printf(\请输入圈子的人数:n=\ scanf(\ for(i=0;i if(*(p+i)!=0) k++; if(k==3) { *(p+i)=0; k=0; m++; } i++; if(i==n) i=0; } while(*p==0) p++; printf(\最后留在圈子内的是%d号。\\n\} 4.用一个函数实现两个字符串的比较,即自己写一个strcmp函数,函数的原型为: int strcmp(char *p1,char *p2); 设p1指向字符串s1,p2指向字符串s2.要求当两个字符相同时返回0,若两个字符串 不相等,则返回返回它们二者第一个不同字符的ASCII码的差值。两个字符串s1,s2由主函数输入,strcmp函数的返回值也由主函数输出。 #include int strcmp(char *p1,char *p2); char s1[80],s2[80],*p1,*p2; printf(\请依次输入两个字符串:\\n\ gets(s1); gets(s2); p1=s1;p2=s2; printf(\ return 0; } int strcmp(char *p1,char *p2) { int i=0; while(*(p1+i)==*(p2+i)) if(*(p1+i++)=='\\0') return 0; return *(p1+i)-*(p2+i); } 5.写一个用矩形法求定积分的通用函数,分别求: ?sinxdx01?1?1cosdx?20edx x说明:积分中用到的三个函数已在系统的数学函数库中,程序开头要加#include 调用格式为sin(x),cos(x),exp(x) 解: #include double integral(double (*p)(double),double a,double b,int n); double a1,a2,a3,b1,b2,b3,sum1,sum2,sum3; double (*p)(double); double fsin(double); double fcos(double); double fexp(double); long n=1000000; printf(\请输入sin(x)的上、下限:\\n\ scanf(\ printf(\请输入cos(x)的上、下限:\\n\ scanf(\ printf(\请输入exp(x)的上、下限:\\n\ scanf(\ p=fsin; sum1=integral(p,a1,b1,n); p=fcos; sum2=integral(p,a2,b2,n); p=fexp; sum3=integral(p,a3,b3,n); printf(\的定积分为:%lf\\n\ printf(\的定积分为:%lf\\n\ printf(\的定积分为:%lf\\n\} double fsin(double x) { return sin(x); } double fcos(double x) { return cos(x); } double fexp(double x) { return exp(x); } double integral(double (*p)(double),double a,double b,int n) { int i; double x,h,s; h=(a-b)/n; x=b; s=0; for(i=0;i x=x+h; s=s+(*p)(x)*h; } return(s); } 6.用指向指针的指针的方法对n个整数排序并输出。要求将排序单独写成一个函数,n和各整数在主函数中输入,最后在主函数中输出。 #include { void sort(int **p,int n); int i,n,data[30],**p,*pstr[30]; printf(\请输入n:\ scanf(\ for(i=0;i printf(\请输入%d个整数:\\n\ for(i=0;i scanf(\ p=pstr; sort(p,n); printf(\个整数从小到大排序为:\\n\ for(i=0;i printf(\ printf(\} void sort(int **p,int n) { int i,j,*temp; for(i=0;i if(**(p+i)>**(p+j)) {temp=*(p+i);*(p+i)=*(p+j);*(p+j)=temp;} } 【实验仪器与软件平台】 计算机 Windows2000 Visual C++6.0 【实验前的预备知识】 【实验结果】(根据题目要求给出结果,对于编程的实验,要附上编写的程序) { void sort(int **p,int n); int i,n,data[30],**p,*pstr[30]; printf(\请输入n:\ scanf(\ for(i=0;i printf(\请输入%d个整数:\\n\ for(i=0;i scanf(\ p=pstr; sort(p,n); printf(\个整数从小到大排序为:\\n\ for(i=0;i printf(\ printf(\} void sort(int **p,int n) { int i,j,*temp; for(i=0;i if(**(p+i)>**(p+j)) {temp=*(p+i);*(p+i)=*(p+j);*(p+j)=temp;} } 【实验仪器与软件平台】 计算机 Windows2000 Visual C++6.0 【实验前的预备知识】 【实验结果】(根据题目要求给出结果,对于编程的实验,要附上编写的程序)
正在阅读:
实验8 指针实验报告答案09-16
银行会计实训题2(贷款业务实训)01-19
小学生2019感恩母亲节征文06-13
点到直线的距离公式教学设计03-09
荣誉证书模版03-04
线性代数复旦版课后习题标准答案04-24
薪酬管理同步习题答案04-08
护理管理学 期末作业汇总10-03
公司前台文员2022年个人工作总结范文03-23
房地产主题活动策划方案(优秀4篇)03-26
- 上海大众、一汽大众、东风日产车型与VIN代号对照表
- 第2章服装原型及原型制作
- 江苏省工商行政管理系统经济户口管理办法及四项制度
- 纪检监察业务知识试题2
- 传感器综合题答案
- 北京第二外国语学院翻硕招生人数及学费
- 初三新编英语教材下册
- 公司庆中秋、迎国庆联欢会客串词
- 向区委常委会汇报安全生产工作材料
- 2006年GCT英语模拟试题(三)及答案解析
- 经济法概念的早期使用
- 我爱做家务课堂教学设计
- 学校安全工作月报表、消防安全排查表、消防隐患排查台账
- 成本会计毕业论文
- 班级文化建设论文
- 2018年天津市高考文科试题与答案汇总(Word版) - 图文
- 铁路论文
- 2017年嵌入式系统设计师考试时间及地点
- 1.111--灾害与突发公共卫生事件应急预案
- 起爆点主图 注意买入 拉升 逃顶源码指标通达信指标公式源码
- 实验
- 指针
- 答案
- 报告
- 2016年高考作文素材适用话题分类汇编
- 概况 牛津阅读树Oxford Reading Tree
- 埋弧焊
- 2013年中级经济师考试《人力资源》精华笔记:人力资源部门和人力资源管理者
- 和声基础 - 图文
- 毛中特实践报告 - 图文
- 2017年上半年陕西省基金从业资格:远期、期货合约等区别考试试题
- 牧原股份猪舍监控系统原理结构与安装调试 周耀昌 1402314040 测控技术与仪器 - 图文
- 法律事务管理工作总结
- 《争当孝心少年》主题班会
- 2010年湖南省娄底市中考英语试题及答案学习的啊
- 高考数学专题复习:函数练习(适合冲击一本学生)(总结)
- 职业生涯人物访谈报告
- 600MW发电机变压器保护配置毕业论文 - 图文
- 河南省证券从业资格《证券投资分析》:行业景气分析考试试卷
- 兰州大学《多媒体技术基础》15秋在线作业3满分答案
- 三年级下册语文教案 3.9少年王勃 第1课时 苏教版 - 图文
- 疯狂英语之口语突破句型
- 低钛高碳铬铁生产方式的探讨
- 有机化合物的鉴别与分离