temp=a[i];
a[i]=a[min];a[min]=temp;
}
}
3)程序调试
(1)运行程序,任意输入20个整数,查看并分析程序执行结果。
(2)把主函数中的函数调用select(M,a)改为select(M,&a[0]),用
(1)中使用的数据运行程序,查看并分析程序执行结果。
(3)把主函数中的函数调用select(M,a)改为select(M,a[0]),用
(1)中使用的数据运行程序,查看并分析程序执行结果。
(4)把主函数中的函数调用select(M,a)改为select(a,M),用
(1)中使用的数据运行程序,查看并分析程序执行结果。
实验7指针
一、实验目的
1.掌握指针变量的定义和基本使用方法。
2.熟悉指针和一维数组的关系,熟练使用指针变量访问一维数组元素。
3.熟练掌握用简单指针变量作函数的参数时函数的定义和调用方法。
4.明确数组名作函数的参数和指向数组的指针作函数的参数的异同,学会相关的函数定义和调用。
二、实验内容
1.用指针法在一维有序数组中插入数据
如下是具有10个整数的升序数列,存储在一维数组中,要求在其中插入任意一个整数后数列仍然有序。
数列:
10,20,30,40,50,60,70,80,90,99。
2.数据插入函数
编写在一维有序数组中插入数据的函数insert(),并调用该函数实现数据插入。
要求插入数据后的数组仍然有序。
三、实验指导
1.用指针法在一维有序数组中插入数据
1)编程分析
按照下标访问数组元素的方法,用指针解决该问题。
2)参考程序
#defineM10
#include“”
voidmain()
{
inta[M+1]={10,20,30,40,50,60,70,80,90,99};
inti,n,*p,*q;
printf(“请输入要插入的数据:
n”);
scanf(“%d”,&n);
a[M]=n;/*将要插入的数据放在数组的最后位置
*/
/*确定要插入的位置p*/
for(p=a,i=0;i<=M;i++)if(n<=*(p+i))
{
p=p+i;/*p指向要插入的数据*/
break;
}for(q=a+M-1;q>=p;q--)/*元素后移*/
*(q+1)=*q;
*p=n;/*插入数据*/
printf(“\n插入数据后的数列:
n”);for(p=a,i=0;i<=M;i++)
printf(“%d,*(p+i));
}
2.数据插入函数
1)编程分析
(1)在实验内容1中,解决了用指针法在一维有序数组中插入数据的问题。
现只需对数据的插入处理部分函数化即可。
(2)插入函数insert()需要有三个形参:
第一个int型简单形参,表示要插入的数据;第二个int型简单形参,表示数组中数据的个数;第三个为int型指针形参,它将指向一个一维数组。
⑶在进行函数调用时insert()函数的第一个实参为要插入的数据:
第二个实参
是数组数据个数;第三个实参是数组名,即数组首地址。
2)参考程序
#defineM10
#include“”
voidinsert(int,int,int*);/*函数声明*/
voidmain()
{
inta[M+1]={10,20,30,40,50,60,70,80,90,99};
inti,x;
printf(“请输入要插入的数据:
n”);
scanf(“%d,&x);
insert(x,M,a);/*在有M个元素的一维数组a中插入x*/
printf(“\n插入数据后的数列:
n”);
for(i=0;i<=M;i++)
printf(“%d,a[i]);
voidinsert(intx,int,n,int*p){
int气*q,i;
t=p+n;
for(i=0;i<=n;i++)if(x<=*(p+i)){
t=p+i;break;
/*将要插入的数据放在数组的最后位置*/
/*确定要插入的位置p*/
/*p指向要插入的数据*/
}
for(q=p+n-1;q>=t;q--)/*元素后移*/
*(q+1)=*q;
*t=x;/*插入数据*/
实验8线性表的顺序存储系统维护
一、实验目的
1.掌握线性表的顺序存储的定义和基本使用方法。
2.掌握线性表的顺序存储存储单元的排列特点。
3.掌握线性表的顺序存储系统的建立、查找、修改、插入、删除操作,学会相关的函数定义和调用。
二、实验内容
1.建立一个顺序表。
2.能够对建立的顺序表进行查找、修改、插入、删除等操作。
当输入指令错误时,能够提示错误信息。
主