写给新手 一维数组所有知识总结
2010-10-20一:一维数组取值,输出打印a[10]={23,56,78,12,34,90,46,22,14,79};
#include<stdio.h>
void main(){
int a[10]={23,56,78,12,34,90,46,22,14,79};
for(int i=0;i<10;i++){
printf("%d ",a[i]);
}
printf("\n");
}
A[2] [3]
思路:【1:必须用下标号来访问数组中的元素值,并且每一个下标号对应唯一的元素值;
2:循环用下标号来访问数组中的每一个元素值,叫做循环遍历】
二:一维数组逆序,将数组a[10]={23,56,78,12,34,90,46,22,14,79}中的元素逆序排列!
#include<stdio.h>
void main(){
int a[10]={23,56,78,12,34,90,46,22,14,79};
for(int i=9;i>=0;i--){
printf("%d ",a[i]);
}
printf("\n");
}
思路【1:下标号对应唯一的元素值,当下标号变换顺序的时候,下标号所对应的元素值也会发生顺序变化。】
三:对一维数组求最值,a[10]={23,56,78,12,34,90,46,22,14,79}
#include<stdio.h>
void main(){
int a[10]={23,56,78,12,34,90,46,22,14,79};
int max=a[0];
for(int i=0;i<10;i++){
if(max<a[i])//求最小值 只需要换 :max>a[i]
max=a[i];
}
printf("最大值是:%d",max);
printf("\n");
}
思路【1:保存最大值,必须申请一个变量,并且赋一个临时的值(该值必须是一维数组里面的任何一个元素值,因为是对当前一维数组查找最值);
2:用临时的最大值和一维数组的每一个元素值遍历比较,必须用循环语句。】
四:一维数组求和和平均值,a[10]={23,56,78,12,34,90,46,22,14,79}
#include<stdio.h>
void main(){
int a[10]={23,56,78,12,34,90,46,22,14,79};
int s=0;
for(int i=0;i<10;i++){
s=s+a[i];
}
printf("一维数组之和是:%d\n",s);
printf("一维数组平均数:%d\n",s/10);
printf("\n");
}
思路:【1:保存累加之和这个值,需要申请变量并且赋初始值为0,(如果不为0的话,得到系统默认值很小不符合要求!);
2:求累加之和的固定模式是:int s=0;s=s+(变化的值)】
五:一维数组排序
#include<stdio.h>
void main(){
int a[10]={23,56,78,12,34,90,46,22,14,79};
for(int i=0;i<9;i++){
for(int j=0;j<9-i;j++){
if(a[j]>a[j+1]){//从大到小排序是:a[j]<a[j+1]
int t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
for(int m=0;m<10;m++)
printf("%d ",a[m]);
printf("\n");
}
思路:【1:必须用到循环语句,第一个遍历一维数组的所有元素,次数是(最大长度-1),第二个循环语句是遍历当前这个数和后面的所有数字比较的趟数,越往后,越有循序,比较的趟数越少。
2:必须用到置换语句,按照循序进行前后相邻置换
3:if(a[j]>a[j+1]) 有口诀:(大小小大),如果if语句里面的关系运算符号是“>”,就是从小到大排序,反则以此类推!】
六:一维数组从中间倒序排列;例如:1 3 5 8 9 排列为:9 8 5 3 1
#include<stdio.h>
void main(){
int a[10]={23,56,78,12,34,90,46,22,14,79};
for(int i=0,j=9;i<10;i++,j--){
if(i<j){
int t=a[i];
a[i]=a[j];
a[j]=t;
}
}
for(int m=0;m<10;m++)
printf("%d ",a[m]);
printf("\n");
}
思路:【1:申请两个循环变量,一个从最小递增,一个从最大递减,每一次都在互换值,到中间就结束。】
七:一维数组遍历查询位置,查找数组中是否有 等于46的数,有的话找出位置!
#include<stdio.h>
void main(){
int b=46;
int index;
int a[10]={23,56,78,12,34,90,46,22,14,79};
for(int i=0;i<10;i++){
printf("%d ",a[i]);
if(b==a[i])
index=i;
}
printf("\n");
printf("找到了该数,位置在第:%d 号\n",(index+1));
}
思路:【1:那当前的这个值和一维数组的每一个元素值一一比对,并把当前的下标号打印输出即可!】
八:有序查询,比如已经有10个有序的数字,再插一个,能按照顺序自动插入位置,并输出结果。
#include "stdio.h"
main()
{
int i,j,x,t,k,a[11]={11,23,34,36,49,52,74,87,93,99};
printf("请输入一个数字:");
scanf("%d",&x);
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
for(i=0;i<10;i++)
if(a[i]>x)
break;
t=i;
for(j=9;j>=t;j--)
a[j+1]=a[j];
a[t]=x;
for(k=0;k<=10;k++)
printf("%d ",a[k]);
printf("\n");
}
思路:【1:先申请一个新的数组,空间多一个,默认值为0,以备存放后来插入的值
2:遍历查询插入的值存放的下标号
3:将原先的数组的元素从要插入的下标号开始赋值,新数组的下标号多一位,也就是往后移动一位】