C程序设计上机实验报告10_c上机实验报告

其他范文 时间:2020-02-28 01:30:28 收藏本文下载本文
【www.daodoc.com - 其他范文】

C程序设计上机实验报告10由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c上机实验报告”。

C程序设计实验报告

实验名称:指针与数组学时安排:2课时 实验类别:上机操作型实验要求:1人1组 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

一、实验目的1.理解指针、地址和数组间的关系;

2.掌握通过指针操作数组元素的方法;

3.掌握数组名作为参数的编程方式。

二、实验设备介绍

软件需求: Visual C++ 6.0或CFree3.5以上版本

硬件需求: 对于硬件方面的要求,建议配置是Pentium III 450以上的CPU处理器,64MB以上的内存,200MB的自由硬盘空间、CD-ROM驱动器、能支持24位真彩色的显示卡、彩色显示器、打印机。

三、实验内容

1.定义函数void sort(int a[],int n)amain函数,并在其中调用sort函数。示例如下: After sorted the array is:-9-6 1 2 4 5

2.输入10个整数存储到数组a,再输入一个整数x,在数组a中查找x,若找到则输出相应的下标,否则显示“Not found!”。要求定义和调用函数search(int list[], int n, int x),在数组list中查找元素x,若找到则返回相应下标,否则返回-1。参数n代表数组list中元素的数量。

3.改正程序error08_1.cpp中的错误。该程序实现功能,有n个整数,使前面各数顺序循环移动m个位置(m

要求先读该源程序,并理解其中的算法。然后把正确的代码(按规范缩进)写入报告,并以注释的方式说明错误原因。

注释示例如下:

int i;/*循环控制变量不能定义为double类型*/

提示:这是一个双重循环问题,内循环进行循环移位,外循环确定后移的位置。

4.有n个人围成一圈,按顺序从1到n编号。从

Last No.is: 4

提示:可以把编号存在一个数组中,报到3的人赋值为0表示退出。可以另外定义两个变量,一个用来记录退出的人数,到n-1即结束,另外一个用来报数。

四、程序清单

第一题

#include

void swap(int *,int*);

void sort(int a[],int n);

void main()

{

int i,n,a[8];

printf(“Input n:”);

scanf(“%d”,&n);

printf(“Input array of %d integers: ”,n);

for(i=0;i

scanf(“%d”,&a[i]);

sort(a,n);

printf(“After sorted the array is:”);

for(i=0;i

printf(“%3d”,a[i]);

printf(“n”);

}

void sort(int a[],int n)

{

int i,j,index;

for(i=0;i

{

index=i;

for(j=i+1;j

if(a[j]

index=j;

swap(&a[i],&a[index]);

}

}

void swap(int *px,int *py)

{

int t;

t=*px;

*px=*py;

*py=t;

}

第二题

#include

int search(int list[],int n,int x);

void main()

{

int i,x,result,a[10];

printf(“Enter a[0]-a[9]:”);

for(i=0;i

scanf(“%d”,&a[i]);

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,int x)

{

int i,result=-1;

for(i=0;i

if(list[i]==x)

{

result=i;

break;

}

return result;

}

第三题

#include

void mov(int *, int, int);

int main()

{

int m, n, i, a[80], *p;

printf(“Input n, m:”);

scanf(“%d%d”,&n,&m);

printf(“Input array of 5 int55egers:”);

for(p=a,i=0;i

scanf(“%d”,p++);// p本身可取地址

mov(a,n,m);

printf(“After moved the array is:”);

for(i=0;i

printf(“%5d”,a[i]);

printf(“n”);

return 0;

}

void mov(int *x, int n, int m)

{

int i,j,t;

for(i=0;i

{

t=x[n-1];/*保存最后位置的元素值*/

for(j=n-1;j>0;j--)/*从倒数第二个元素开始,每个元素向后一个位置 */

x[j]=x[j-1];/* 调试时设置断点 */

x[0]=t;/*将保存的最后元素值放在最前面*/

}

}

第四题

#include

int main()

{

int i,j,n,t,count,a[10000];

printf(“Input n:”);

scanf(“%d”,&n);

for(i=0;i

a[i]=i;

count=0;

i=1;

j=0;

while(count

{

if(i>n)

i=1;

if(a[i]!=0)

j++;

if(j==3)

{

t=i;

a[i]=0;

j=0;

count++;

}

i++;

}

printf(“Last No.is:%dn”,t);

return 0;

}

五、运行结果

六、实验心得

1、C中数组名即是数组中首元素(下标为0的元素)的地址。注意:这不包括形参数组名,因为形参数组名并不占据实际的内存单元。它只是指向其它数组首地址的指针。

2、数组名(比如a)代表数组首元素的地址,它是一个指针常量,在程序中不能改变它的值。例如:a++是非法的。

3、实参数实参数组名代表一个固定的地址,或者说是指针常量。但形参数组并不是一个固定的地址,而是作为指针变量,它的值是可以改变的。在函数调用开始时,它的值等于实参数组首元素的地址,在函数执行期间,它可以再被赋值。

4、指向数组的指针变量也可以带下标,如:p[i]与*(p+i)等价。*(p+i)与*(a+i)等价。

5、当实参是数组名时,传递的是该数组首元素的地址,即是一个指针。

下载C程序设计上机实验报告10word格式文档
下载C程序设计上机实验报告10.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

    热门文章
      整站推荐
        点击下载本文