C程序设计上机实验报告10_第1页
C程序设计上机实验报告10_第2页
C程序设计上机实验报告10_第3页
免费预览已结束,剩余3页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C程序设计实验报告实验名称:指针与数组学时安排:2课时实验类别:上机操作型实验要求:1人1组一、实验目的1. 理解指针、地址和数组间的关系;2. 掌握通过指针操作数组元素的方法;3. 掌握数组名作为参数的编程方式。二、实验设备介绍软件需求:Visual C+ 6.0 或CFree3.5以上版本硬件需求:对于硬件方面的要求,建议配置是Pentium III 450以上的CPU处理器,64MB以上的内存,200MB的自由硬盘空间、CD-RO驱动器、能支持24 位真彩色的显示卡、彩色显示器、打印机。三、实验内容1. 定义函数void sort(i nt a,int n),用选择法对数组 a中的元素升

2、序排序。自己定义ma in函数,并在其中调用sort函数。示例如下:In put n: 6_In put array of 6 in tegers: 1 5 -9 2 4 -6After sorted the array is: -9 -6 1 2 4 52. 输入10个整数存储到数组 a,再输入一个整数x,在数组a中查找x,若找到则输出相应 的下标,否则显示"Not found! ”。要求定义和调用函数 search(int list, int n, int x),在数组 list中查找元素x,若找到则返回相应下标, 否则返回-1。参数n代表数组list中元素的数量。3. 改正程序

3、error08_1.cpp中的错误。该程序实现功能,有 n个整数,使前面各数顺序循环 移动m个位置(m<n)。编写一个函数实现以上功能, 在主函数总输入n个整数并输出调整后 的n个数。输入输出结果如下面 4行所示:In put n, m: 5_3.In put array of 5 in tegers: 1 2 3 4 5After moved the array is: 3 4 5 1 2要求先读该源程序,并理解其中的算法。然后把正确的代码(按规范缩进)写入报告,并以注释的方式说明错误原因。注释示例如下:int i;/*循环控制变量不能定义为double类型*/提示:这是一个双重循环问

4、题,内循环进行循环移位,外循环确定后移的位置。4. 有n个人围成一圈,按顺序从1到n编号。从第一个人开始报数,报数3的人退出圈子,下一个人从1开始重新报数,报数 3的人退出圈子。如此循环,直到留下最后一个人。问留下来的人的编号。要求用指针来操作数组。输入输出示例如下:In put n: 5-可以另外定义两个变量,Last No. is: 4 提示:可以把编号存在一个数组中, 报到 3 的人赋值为 0 表示退出。 一个用来记录退出的人数,到 n-1 即结束,另外一个用来报数。四、程序清单第一题#include<stdio.h>void swap(int *,int*);void so

5、rt(int a,int n);void main()int i,n,a8;printf("Input n:");scanf("%d",&n);printf("Input array of %d integers: ",n);for(i=0;i<n;i+) scanf("%d",&ai);sort(a,n);printf("After sorted the array is:");for(i=0;i<n;i+)printf("%3d",ai);pr

6、intf("n");void sort(int a,int n)int i,j,index;for(i=0;i<n-1;i+)index=i;for(j=i+1;j<n;j+) if(aj<aindex) index=j;swap(&ai,&aindex);void swap(int *px,int *py)int t;t=*px;*px=*py;*py=t;第二题#include<stdio.h>int search(int list,int n,int x); void main()int i,x,result,a10; p

7、rintf("Enter a0-a9:");for(i=0;i<10;i+) scanf("%d",&ai); printf("Enter x:"); scanf("%d",&x);result=search(a,10,x); if(result=-1) printf("Not found!n"); else printf("The position is %dn",result); return 0;int search(int list,int n,

8、int x)int i,result=-1; for(i=0;i<n;i+) if(listi=x) result=i; break; return result;第三题#include <stdio.h> void mov(int *, int, int);int main()int m, n, i, a80, *p;printf("Input n, m:"); scanf("%d%d",&n,&m);printf("Input array of 5 int55egers:"); for(p=a,i

9、=0;i<n;i+)scanf("%d",p+);/ p 本身可取地址 mov(a,n,m);printf("After moved the array is:"); for(i=0;i<n;i+) printf("%5d",ai); printf("n");return 0;void mov(int *x, int n, int m)for(i=0;i<m;i+) t=xn-1; /* for(j=n-1;j>0;j-)/* */xj=xj-1;x0=t; /*int i,j,t;保存最后

10、位置的元素值 */从倒数第二个元素开始, 每个元素向后一个位置/* 调试时设置断点 */ 将保存的最后元素值放在最前面 */第四题#include<stdio.h>int main()int i,j,n,t,count,a10000; printf("Input n:"); scanf("%d",&n); for(i=0;i<=n;i+) ai=i;count=0;i=1;j=0;while(count<n)if(i>n)i=1;if(ai!=0)j+;if(j=3)t=i;ai=0;j=0;coun t+;i+;printf("Last No. is:%dn",t); return 0;五、运行结果六、实验心得1、C中数组名即是数组中首元素(下标为 o的元素)的地址。注意:这不包括形参数组 名,因为形参数组名并不占据实际的内存单元。它只是指向其它数组首地址的指针。2、数组名(比如a)代表数组首元素的地址,它是一个指针常量,在程序中不能改变它的 值。例如:a+是非法的。3、实参数实参数组名代表一个固定的地

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论