一维数组实验和答案.doc
文本预览下载声明
数组中的常用算法:求和,求最大、最小值,查找,排序。
输入10个数输出其中最小的数。(反之最大数)
#includestdio.h
void main()
{
int a[10],i,min;
printf(请输入10个数:\n);
for(i=0;i10;i++)
scanf(%d,a[i]);
min=a[0];
for(i=1;i10;i++)
{
if(mina[i])
min=a[i];
}
printf(最小的数为%d\n,min);
} 输入10个数输出找出其中最大的数是第几个(查找)。
#includestdio.h
void main()
{
int a[10],i,max;
printf(输入10个数:\n);
for(i=0;i10;i++)
scanf(%d,a[i]);
max=0;
for(i=1;i10;i++)
{
if(a[max]a[i])
max=i;
}
printf(最大数是第%d个数为%d,max+1,a[max]);
}
或:
#includestdio.h
void main()
{
int a[10],i,n,max;
for(i=0;i10;i++)
scanf(%d,a[i]);
max=a[0]-1;
for(i=0;i10;i++)
{
if(maxa[i])
{ max=a[i];
n=i+1;}
}
printf(%d,%d,max,n);
} 将一个数组逆序输出。 1.程序分析:用第一个与最后一个交换。
注意:例:输入1、3、5、7、9,a[0]=1,a[4]=9
输出9、7、5、3、1. a[4]=9,a[0]=1.
#includestdio.h
void main()
{
int a[5],i,t;
printf(请输入5个数:\n);
for(i=0;i5;i++)
scanf(%d,a[i]);
for(i=0;i5/2;i++)
{
t=a[i];
a[i]=a[5-1-i];
a[5-1-i]=t;
}
for(i=0;i5;i++)
printf(%3d,a[i]);
} 问题描述:输入10个数,保存在一个数组中,在数组中查找某个数,给出是否找到的
信息。如果找到了,要求输出该数在数组中所处的位置;如果找不到,输出“没有找到!”。
#includestdio.h
#define N 10
void main()
{
int a[N],i,an;
for(i=0;iN;i++)
scanf(%d,a[i]);
printf(请输入你要查的数\n);
scanf(%d,an);
for(i=0;iN;i++)
{
if(a[i]==an)
break;
}
if(iN)
printf(在数组中的第%d个位置,值为%d\n,i+1,an);
else
printf(没有找到);
}
用起泡法排序,将7,3,5,1,2由小到大排序。
起泡法的思路:将相邻的两个数比较,将小的调到前头。
#includestdio.h
void main()
{
int a[5]={7,3,5,1,2},i,j,t;
for(i=0;i5-1;i++)
{
for(j=0;j5-1-i;j++)
if(a[j]a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
for(i=0;i5;i++)
printf(%d,a[i]);
} 6、问题描述:
如果一个数组中保存的元素是有序的(由大到小),向这个数组中插入一个数,使得插入后的数组元素依然保持有序。 int num[5]={23,45,60,67,88}
#includestdio.h
#define N 5
void main()
{
int i,j;
int num[N+1]={23,45,60,67,88},in;
printf(\n 请输入一个要插入的数:);
scanf(%d,in);
for(i=0;iN;i++)
{
if(num[i]in)
break;
}
for(j=N;ji;j--)
num[j]=num[j-1];
num[i]=in;
printf(\n 插入后的数组元素:\n);
for(i=0;iN+1;i++)
printf(%d ,num[i]);
printf(\n);
}
显示全部