特别说明
一维数组的定义(对数组空间进行清理,置0,不会产生随机值):数组在使用前要先定义;告诉编译器数组元素的类型;编译器会给这个数组预先分配连续的存储空间;定义的格式为:元素类型名 数组名[数组长度]。
1、一维数组的遍历:在操作数组时,经常需要依次访问数组中的每个元素,这种操作称作数组的遍历。接下来使用for循环依次遍历数组中的元素。
代码示例
#include <stdio.h>
int main()
{
int x[5] = {1,2,3,4,5};
int i = 0;
for(i=0;i<5;i++)
{
printf("x[%d]:%d\n",i,x[i]);
}
return 0;
}
例题1:输入n(n<=10)及n个整数,将这组整数逆置并输出。
#include <stdio.h>
int main()
{
int a[10];
int n;
int i = 0;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n/2;i++)
{
int t;
t=a[i];
a[i]=a[n-1-i];
a[n-1-i]=t;
}
for(i=0;i<n;i++)
printf("%d",a[i]);
return 0;
}
注意:输入的时候以回车作为结束
2、一维数组的最值:在操作时,经常需要获取数组中元素的最值。
例题2:输入n(n<=10)及n个整数,输出最大整数及其位序。
#include <stdio.h>
int main()
{
int n,maxn,maxk;
int a[10];
int i;
scanf("%d",&n);
maxn = 0;
maxk = 0;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
if(a[i]>maxn)
{
maxn = a[i];
maxk = k;
}
}
printf("最大整数为:%d 位序为:%d\n",maxn,maxk);
return 0;
}
**3、一维数组的排序------选择排序:**选择排序是通过每一趟排序过程中从待排序的记录中选择最大(小)的元素,将其依次放在数组的最前(后)端,来实现数组的排序。
#include <stdio.h>
int main()
{
int x[5] = {9,8,3,5,2};
int i,j,min,temp;
for(i=0;i<5-1;i++) //循环轮数是确定的
{
min = i; //循环的开始
for(j=i+1;j<5;j++) //循环找出最小值
{
if(x[j]<x[min])
min = j;
}
if(min!=i)
{
temp = x[i];
x[i] = x[min];
x[min] = temp;
}
}
for(i=0;i<5;i++)
{
printf("%d",x[i]);
}
return 0;
}
4、一维数组的排序------冒泡排序:在冒泡排序过程中,不断地比较数组中相邻地两个元素,较小者向上浮,较大者往下沉,整个过程和水中气泡上升地原理相似。
#include <stdio.h>
int main()
{
int x[5] = {9,8,3,5,2};
int i=0,j=0,temp=0;
for(i=0;i<5-1;i++)
{
for(j=0;j<5-1-i;j++)
{
if(x[j]>x[j+1])
{
temp = x[j];
x[j] = x[j+1];
x[j+1] = temp;
}
}
}
for(i=0;i<5;i++)
{
printf("%d ",x[i]);
}
return 0;
}
5、一维数组地排序------插入排序:插入排序就是每一步将一个待排序元素插入到已经排序地元素中的适当位置,直到全部插入完毕。
#include <stdio.h>
int main()
{
int x[5] = {9,8,3,5,2};
int i=1,j=0,temp=0;
for(i=1;i<5;i++)
{
temp = x[i];
j = i;
while(j>0&&x[j-1]>temp)
{
x[j] = x[j-1];
j--;
}
x[j] = temp;
}
for(j=0;j<5;j++)
{
printf("%d ",x[j]);
}
return 0;
}