> 文档中心 > C语言基础-数组篇

C语言基础-数组篇

文章目录

  • 一、为什么需要数组:
  • 二、数组的基本使用:
    • 1.定义数组:
    • 2.给数组赋值:
    • 3.数组单独访问:
    • 案例一:正序 和 逆序 输出数组 的案例:
    • 案例二:提示用户输入10个数,找到最大值,最小值,算出平均值的案例
  • 三、如何计算数组中元素的个数?
  • 四、两个数组有什么相同点/不同点
  • 五、如何计算数组元素的个数 ?
    • 案例三:斐波那契数列
    • 案例四:(数组)冒泡排序算法
  • 六、!!面试题:请输出数组a中有多少个元素?!!!
    • 案例五:用函数封装的升级版带参数的案例:
    • 案例六:用函数封装的升级版带提示用户输入10个数,找到最大值,最小值,算出平均值的案例!

数组篇

一、为什么需要数组:

只要大量数据不关心数组名的时侯

二、数组的基本使用:

1.定义数组:

int array[100]; //定义一个能放置100个数据的数组,没有赋值
int array[3]={1,2,3}; //有初始化的数组,完整初始化,该数组申请了三个整型内存空间,并赋值1,2,3;
int array[100]={1,2,3}; //有初始化的数组,不完整初始化,该数组申请了100个整型内存空间,但是只是赋值了3个数放在了前三个位置。

2.给数组赋值:

for(int i =1;i<100;i++){
array[i-1]=i;
} //赋值,获取1-100这么多的变量值

3.数组单独访问:

数组的中括号 “ [ ] ” 只有在定义一个数组的时候,才表示数组大小,其余的任何情况都表示用小标来访问数组。

循环的方式遍历数组:
for(int i =1;i<100;i++){
printf( “%d”,array[i-1]);
}

数组和函数:
/提示用户输入10个数,找到最大值,最小值,算出平均值/

   int main(){1.定义一个10个整型数的数组2.初始化数组   2.1提示用户输入第多少个数   2.2获取用户输入scanf();3.找分数,找最高分4.找最低分//在最大值和最小值中设计到小算法(定义一个max变量,把第一个数组赋值给变量max,然后再进行一一比较,若后面的值大于max当前值,就给max重新赋值。)5.计算平均值   5.1算出总分   5.2算出平均值6.输出结果   }

案例一:正序 和 逆序 输出数组 的案例:

#includeint main(){  int array[10];  int i;  for(i=0 ; i<10 ;i++){     array[i]=i;  }  puts("当前数组是\n");  for(i=0 ; i<10 ;i++){     printf("%d",array[i]);  }   puts("逆序数组是\n");    for(i=9 ; i>=0 ;i--){     printf("%d",array[i]);  }  return 0;}

案例二:提示用户输入10个数,找到最大值,最小值,算出平均值的案例

#include int main(){    //定义一个10个和整型数的数组    int array[10]={0};    int max;    int min;    int add;    float average;    //初始化数组    for(int i = 0 ; i<10 ; i++){//2.1提示用户输入第多少个数printf("请输入第%d个数据\n",i+1);//2.2获取用户输入scanf()scanf_s("%d",&array[i]);    }    //找出最大值    max = array[0];    for(int i = 0 ; i<10 ; i++){  if(max < array[i]){      max = array[i];  }    }    printf("最大的数据是%d\n",max);    //找出最小值    min = array[0];    for(int i = 0 ; i<10 ; i++){  if(min > array[i]){      min = array[i];  }    }    printf("最小的数据是%d\n",min);    //5.1算出总数    add = 0;    for(int i =0 ; i<10 ;i++){ add +=array[i];    }    //5.2算出平均值    average =(float)add / 10;    //6.输出结果    printf("平均值%f\n",average);}

数组和函数结合,数组名可以当做实际参数,

三、如何计算数组中元素的个数?

  数组的总大小  /  一个类型的大小

int a[3]; //一个整数占用空间4个字节,3个占有12个字节。
char b[3]; //一个char型占用空间1个字节,3个占用3个字节。
printf (“a数组的大小:%d\n”,sizeof(a));
printf (“一个整型的空间是:%d\n”,sizeof(int));

四、两个数组有什么相同点/不同点

相同点:数组元素个数为3
不同点:1.元素类型不同 2.数组的内存大小不同

五、如何计算数组元素的个数 ?

数组的总大小 / 一个类型的大小
printf(“a数组有%d个元素\n”,sizeof(a)/sizeof(a[0]));

案例三:斐波那契数列

在这里插入图片描述

#includeint main(){    int array[30];    int i;    int  arraySize;    arraySize = sizeof(array)/sizeof(array(0));    array[0]=0;    array[1]=1;    for(i=2;i<arraySize;i++){ array[i]=array[i-1]+array[i-2];    }    for(i=0;i<arraySize;i++){ printf("%d",array[i]);    }    printf("斐波那契\n");    return 0;}

案例四:(数组)冒泡排序算法

#includeint main(){ int array[]={12,8,9,13}; int i; int j; int tmp; int len = sizeof(array)/sizeof(array[0]); for(i=0 ; i<len-1 ;i++){   //从大到小      for(j=0 ; j<len-1-i ;j++){  if(array[j]<array[j+1]){  tmp = array[j];  array[j] = array[j+1];  array[j+1] = tmp;   }     } }for(i=0 ; i<len ;i++){   printf("%d",array[i]);}}

六、!!面试题:请输出数组a中有多少个元素?!!!

sizeof(a) / sizeof(a[0]);
!! void arrayprint(int datas[100]);
printf(“数组的大小是%d\n”,sizeof(datas));
结果是4;
是因为:形式参数中,虽然写的是一个数组的样子,中括号中的数组的大小是无效的!!无论中括号写多少,都不能代表形式参数数组多大。这里的中括号的作用仅仅用来表示,该参数是一个地址!!!

!!数组名 = 数组的首地址 = 第一个元素的地址!!
void arrayprint(int array[ ] , int cnt) //第一个参数是数组的首地址 ,第二个参数是数组的个数

案例五:用函数封装的升级版带参数的案例:

#include//遍历数组函数void arrayprint(int array[],int cnt){  //形式参数中,虽然写的是一个数组的样子,中括号中数组的大小是无效的!!//无论中括号写多少,都不能代表形式参数数组多大。这里的中括号的作用仅仅用来表示,该参数是一个地址!!!int i;for(i = 0;i<cnt;i++){    printf("%d\n",array[i]);}int main(){int datas[5] = {11,22,33,44};arrayprint(datas,sizeof(datas) / sizeof(datas[0]));//参数 1.数组名 = 数组首地址  2.数组中元素个数arrayprint(&datas,sizeof(datas) / sizeof(datas[0]));  return 0;}

案例六:用函数封装的升级版带提示用户输入10个数,找到最大值,最小值,算出平均值的案例!

#include//初始化数组函数void initscores(int array[],int size){int i; for(i=0;i<size;i++){    printf("请输入第%d个学生成绩\n",i+1);    scanf_s("%d",&array[i]);    if(array[i]<0 || array[i]>100){   //在双条件判断的时候用  ”||”(或)   printf("输入成绩错误,请重新输入\n");   exit(-1);    } }}//打印数组函数void scoreprint(int array[],int size){int i;for(i=0;i<size;i++){    printf("请输入第%d个学生成绩为%d\n",i+1,array[i]);}}//找到最高分int Maxvalue(int array[],int size){int j;int max = array[0];for(j=0;j<size;j++){     if(max < array[j]){   max = array[j];     }}printf("最高分是%d\n",max)}//找到最低分int Minvalue(int array[],int size){int j;int min = array[0];for(j=0;j<size;j++){     if(min > array[j]){   min = array[j];     }}printf("最低分是%d\n",min)}//算出平均分void average(int array[],int size){int add = 0;float average;int i;for(i = 0 ; i<size; i++){     add +=array[i];}arrayage=(float)add / size;printf("平均值为%d",average);} int main(){    //定义数组    int scores[10]={0};    int len = sizeof(scores) / sizeof(scores[0]);    //初始化数组    intitscores(scores,len);    //打印数组    scoreprint(scores,len);    //找到最高分    Maxvalue(scores,len);    //找到最低分    Minvalue(scores,len);    //算出平均分    average(scores,len);    return 0;}

在这里插入图片描述

网赚站