| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2005 人关注过本帖, 3 人收藏
标题:写给新手 一维数组所有知识总结
取消只看楼主 加入收藏
t505556855
Rank: 2
等 级:论坛游民
帖 子:27
专家分:32
注 册:2010-10-31
结帖率:100%
收藏(3)
 问题点数:0 回复次数:0 
写给新手 一维数组所有知识总结
                             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:将原先的数组的元素从要插入的下标号开始赋值,新数组的下标号多一位,也就是往后移动一位】
搜索更多相关主题的帖子: 知识 
2010-10-31 10:26
快速回复:写给新手 一维数组所有知识总结
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031613 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved