




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
高级语言程序设计实验报告班级: 学号: 姓名: 成绩: 实验日期: 年 月 日 实验题目: 实验七 指针程序设计实验目的:1掌握指针和指针变量,内存单元和地址、变量与地址、数组与地址的关系。2掌握指针变量的定义和初始化,指针变量的引用方式。3掌握指针运算符。4掌握指向变量的指针变量的使用。5掌握指向数组的指针变量的使用。6掌握指向字符数组指针变量的使用实验内容:(包括算法说明:用文字或流程图说明;程序清单;运行结果:原始数据、相应的运行结果和必要的说明。)1改错题(1)下列程序的功能为:统计将已知字符串中数字符的个数;请纠正程序中存在错误,使程序实现其功能,程序以文件名sy7_1.c存盘。#includeint digits(char *s) int c=0; while(s) /s改为*s if(*s=0& *s=0 & *s=0 & *s=9 c+; s+; return c; void main() char s80; printf(请输入一行字符n); gets(s); printf(字符长度是:%dn,digits(s); 原始数据、相应的运行结果和必要的说明。原始数据、相应的运行结果和必要的说明。(2)下列程序的功能为:通过调用函数实现对所输入的任意两个整数,交换它们的值;请纠正程序中存在错误,使程序实现其功能,程序以文件名sy7_2.c存盘。#includeswap(int *p1,int *p2) int *p; /int *p改为int p *p=*p1; /*p=*p1改为p=*p1 *p1=*p2; *p2= *p; /*p2=*p 改为*p2=*p void main() int a,b; scanf(%d%d,&a,&b); printf(a=%dtb=%dn,a,b); swap(&a,&b); printf(a=%dtb=%dn,a,b);(3)下列程序的功能为:通过调用函数对一个33的矩阵进行转置;请纠正程序中存在错误,使程序实现其功能,程序以文件名sy7_3.c存盘。#include void move(int *pointer) ; /添加void main(void) int a33,*p,i; printf(输入数组元素:n); for(i=0;i3;i+) scanf(%d%d%d,ai0, ai1, ai2); /改为scanf(%d%d%d,&ai0, &ai1, &ai2) p=a00; /改为 p=&a00; move(p); printf(转置后的数组为:n); for(i=0;i3;i+) printf(%d %d %dn,ai0, ai1, ai2);void move(int *pointer) int i,j,t; for(i=0;i3;i+) for(j=i;j3;j+) t= (pointer+3*i+j); /改为t=*(pointer+3*i+j); *(pointer+3*i+j)=*(pointer+3*j+i); *(pointer+3*j+i)=*t; /改为*(pointer+3*j+i)= t; 2程序填空(1)下列程序的功能为:计算数组中的最大元素及其下标值和地址值;请填写适当的符号或语句,使程序实现其功能,程序以文件名sy7_4.c存盘。#includeint findmax(int *s,int t ) int i,k=0; for(i=0; isk ) k=i; return k ;void main() int a10=12,23,34,45,56,67,78,89,11,22,k=0,*add; int j; for(j=0;j10;j+) printf(%4d%10xhn,aj,&aj); k=findmax(a,10); add=&ak; printf(n%d %d %xhn,ak,k+1,add ); (2)下列程序的功能为:通过返回地址值,来输出a2a4的值;请填写适当的符号或语句,使程序实现其功能,程序以文件名sy7_5.c存盘。#include main() int a5=1,3,5,7,9; /* a是int数值的数组 */ int *num5,i,*p; /* num是指向int类型的指针型数组,p是指向int型的变量 */ int *f(int *x,int); /* 返回指针值的f函数的声明 */ for (i=0;i5;i+) numi= &ai ; /* num的每个分量指向a的每个相应元素 */ p=f(num,2); /* 返回num2分量所指的数组a中的元素的地址 */ for ( ; p=num4; p+) /* 在num2num4地址范围内扫描 */ printf( %dt, *p ); /* 输出该地址范围内的数据 */int *f(int *x,int i) int k=0; for (; ki; k+) ; /* 如果这个语句省略,需要修改什么? */ return xk ; /* 返回numi的所指的地址 */(3)下列程序的功能为:通过指针变量的自增运算,扫描一维数组中全部元素的地址,并引用它们各自的值,同时对数组中的正整数求和。请填写适当的符号或语句,使程序实现其功能,程序以文件名sy7_6.c存盘。#include stdio.h#define N 10main() int i,k,aN,sum,count,*p; /* 所有变量和数组a的基类型都是int */ count=sum=0; do printf( input k: n); scanf(%d,&k); /* 总共要求输入k个数 */ while (kN); /* 直到型循环确保0kN */ printf( input a0a%d:n,k-1); for (p=a;p0 ) /* 引用指针变量p所指变量的值 */ sum+=*p; /* 指针p所指变量*p的值0者相加 */ count+; /* 正整数个数统计 */ p=a ; /* 指针复位,重新指向数组a 的首地址 */ while (p0 is : %dn,count); printf( Sum of 0 is : %dn,sum);3编程题(1)编写一个程序实现如下功能:利用指针作函数参数,设计一函数实现将n个元素进行排序(程序以文件名sy7_7.c存盘)。(2)编写一个程序实现如下功能:利用指针作函数参数,设计一函数对字母进行简单加密,把当前的字母变成后面第3个字母,如最后三个字母x、y、z变成字母a、b、c。再设计一函数把加密字符还原(程序以文件名sy7_8.c存盘)。(3)编写一个程序实现如下功能:输入一个字符串,内有数字和非数字字符,如:a123x456 17960?302tab5876 将其中连续的数字作为一个整数,依次存放到一数组a中。例如123放在a0中,456放在a1中统计共有多少个整数,并输出这些数(程序以文件名sy7_9.c存盘)。(1)编写一个程序实现如下功能:利用指针作函数参数,设计一函数实现将n个元素进行排序(程序以文件名sy7_7.c存盘)。#includevoid sort(int *p,int n)int i,j,t; for(i=0;in-1;i+) for(j=0;j*(p+j+1) /由小到大排序 t=*(p+j); *(p+j)=*(p+j+1);*(p+j+1)=t;void main()int a10,i; printf(输入%d个正数:,10); for(i=0;i10;i+) scanf(%d,&ai); sort(a,10); /调用排序函数 printf(排序后:n); for(i=0;i10;i+) printf(%5d,ai); printf(n);(2)编写一个程序实现如下功能:利用指针作函数参数,设计一函数对字母进行简单加密,把当前的字母变成后面第3个字母,如最后三个字母x、y、z变成字母a、b、c。再设计一函数把加密字符还原(程序以文件名sy7_8.c存盘)。#includevoid jiami(char *ch) char *p=ch; while(*p!=0) if(*p=a & *p=A& *pZ&*pz) *p=*p-26; +p; void jiemi(char *ch) char *p=ch; while(*p!=0) if(*p=a& *p=A& *p=Z) *p=*p-3; if(*pA|*pZ) *p=*p+26; +p; void main() char line80; printf(请输入一行字符:n); gets(line); jiami(line); puts(line); jiemi(line); puts(line);(3)编写一个程序实现如下功能:输入一个字符串,内有数字和非数字字符,如:a123x456 17960?302tab5876 将其中连续的数字作为一个整数,依次存放到一数组a中。例如123放在a0中,456放在a1中统计共有多少个整数,并输出这些数(程序以文件名sy7_9.c存盘)。#include #include void main() char ch1000,*p=ch; int a50,*q=a,n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 六年级上册数学复习计划制定
- 工业企业节能减排方案书
- 智慧工地数字化管理方案
- 小学语文古诗文阅读理解试题集
- 剖腹产护理查房课件
- 泵站设备维护操作规程手册
- 医院药品质量监督管理办法
- 冷链物流仓储知识培训课件
- 幼儿体能发展活动计划与实施方案
- 中考英语重点题型押题解析
- 材料性能学(第2版)付华课件1-弹性变形
- GB/T 4909.4-2009裸电线试验方法第4部分:扭转试验
- GB/T 15155-1994滤波器用压电陶瓷材料通用技术条件
- PDCA质量持续改进案例一:降低ICU非计划拔管发生率
- 企业标准编写模板
- 商场开荒保洁计划书
- 初中道德与法治 九年级(维护祖国统一)初中道德与法治九年级作业设计样例
- 幼儿园绘本故事:《骄傲的大公鸡》 课件
- 江西省赣州市于都县2022-2023学年九年级化学第一学期期中监测试题含解析
- 新冠核酸检测实验室PCR管八联管滤芯吸头等耗材质检和储存程序
- DBJ 53-T-46-2012 云南省城镇道路及夜景照明工程施工验收规程
评论
0/150
提交评论