黑马程序员——c语言基础:一维数组

1.一维数组的概念、定义及注意事项

 1.1数组:相同类型的若干个数据组成的一个有序的集合。

 1.2一维数组:数组的每个元素都是基本数据类型的变量。

 1.3一维数组的定义: 数组类型 数组名[数组长度];

    int a[3]; //定义了一个数组,数组名是a,数组的长度是3,这个数组只能存放3int类型的数据。

 1.4注意事项:

   1)数组的长度可以是常量,也可以是常量表达式。

   2)数组名的命名规则:严格按照标识符的命名规范。

   3)数组名不能和其他变量同名。

   4)数组的长度不可以为一个变量(C99标准要求的,Xcode编译器做了优化)。

   5)数组的长度可以使用宏定义。

   6)同一类型的数组和普通变量可以一起定义。


2.一维数组的初始化

什么是初始化:给数组的元素赋初始值。

数组的初始化方法:

 1)定义的同时进行初始化

   格式:  数据类型 数组名[长度] = {1,值2……};

    1)定义的同时完全初始化

    int a[3] = {1,2,3};

    int a[] = {2,4,6}; //数组长度根据后面大括号中数值个数决定

    2)定义的同时进行部分初始化

    int a[3] = {1,2};

    int a[3] = {[0] = 1,[2] = 4}; // [0]表示下标为0的元素赋初值1

 2)先定义数组,后初始化

    int a[4];

    a[0] = 1;

    a[1] = 4;


 注意:1)如果定义数组后,没有进行初始化,数组中是有值的,是随机的垃圾数,所以如果想要正确使用数组应该要进行初始化。

      2)对于数组来说,如果定义的同时进行了部分初始化,那么剩下的其他元素都被赋值为0


3.应用举例:一维数组的遍历

假设有数组int a[10] = {1,2,3,4,5,6,7,8,9,10};分别正序和逆序遍历数组。

#include <stdio.h>


int main(int argc,const char * argv[]) {

    //定义并初始化数组

   int a[10] = {1,2,3,4,5,6,7,8,9,10};

    

    // 正序遍历

   for (int i =0; i < 10; i ++) {

       printf("%d, ",a[i]);

    }

   printf("\n");

    

    // 逆序遍历

   for (int i =0; i < 10; i ++) {

       printf("%d, ", a[9 - i]);

    }

   return 0;

}


// 从键盘输入数组的长度,构建一个数组,然后通过for循环从键盘接收数字给数组初始化,并使用for循环输出查看。

#include <stdio.h>


int main(int argc,const char * argv[]) {

    

    //定义变量,储存数组长度

   int len;

    

    //提醒用户输入数组长度

    printf("请输入数组长度:");

    

    //接收用户输入的数据,赋值给数组长度

   scanf("%d",&len);

    

    // 构建一个数组

   int a[len];

    

    // for循环进行初始化

   for (int i =0; i < len; i ++) {

        // 提示用户输入数组的值

       printf("\n请输入数组的第%d个值:",i + 1);

        //接收用户输入的值给数组初始化

       scanf("%d", &a[i]);

    }

    

    // for循环输出查看

   for (int i =0; i < len; i ++) {

       printf("%d\t", a[i]);

    }

   return 0;

}


4.一维数组长度计算方法

1.数组在内存中占用的字节数:sizeof(数组名)

2.数组的长度 =整个数组占用的字节数 / 数组的任何一个元素在内存中占用的字节数

            = sizeof(数组名) / sizeof(数组类型)

 


5..实例:找出数组中最大的元素

通过for循环,从键盘获取10个数,存放到数组中。然后找出10个数的最大值。

#include <stdio.h>


int main(int argc,const char * argv[]) {

    // 定义数组

   int a[10];

    

    //for循环获取10个数,放倒数组中

   for (int i =0; i < 10; i++) {

        // 提示用户输入

       printf("请输入第%d个数:\n", i + 1);

        //获取用户输入的数据并存放到数组中

       scanf("%d", &a[i]);

        

    }

    

    // 找出最大值

    //定义变量,储存最大值

   int max = a[0];

   for (int i =1; i <10; i ++) {

       if (a[i] > max) {

            max = a[i];

        }

    }

    // 打印出最大值

    printf("数组中的最大值是:%d",max);

   return 0;

}


6.数组元素作为参数的实例

判别一个整数数组中各元素的值,若大于0,则输出该值,若小于0则输出0(判断过程用函数实现)。


#include <stdio.h>

// 定义函数,判断参数是否大于0

void isBiggerThan0(int n){

   if (n > 0) {

       printf("%d\t",n);

    }else {

       printf("0\t");

    }

}


int main(int argc,const char * argv[]) {

    //定义并初始化一个数组

   int a[5] = {12,-87,0,23,-7765};

    

    //判断数组中各元素是否大于0,若大于0,则输出该值,若小于0,则输出0

   for (int i =0; i < 5; i ++) {

        // 判断数组元素是否大于0

       isBiggerThan0(a[i]);

        }

   return 0;

}


7.数组名作为函数的参数

数组名作为函数的参数的注意点:

 1.形参数组的类型和长度要和实参一致。

    1)如果类型不一致,会造成错误。

    2)如果形参数组的长度和实参的长度不一致,虽不会报错,但运行的结果可能与实际不相符。

 2.形参数组的长度可以不写。

 3.数组名作为函数参数后,数组的长度信息会丢失。


实例:数组a中存放了一个学生5门课程的成绩,求平均成绩。

#include <stdio.h>


// 定义函数,求平均值

float avg(float arr[5]){

   float sum = 0;

   for (int i =0; i <5; i ++) {

        sum += arr[i];

    }

   return sum / 5;

}


int main(int argc,const char * argv[]) {

    //定义成绩数组,并初始化

   float score[5] = {23.4,99.5, 78, 56.43, 75};

    

    // 求平均成绩

   printf("平均成绩为:%.2f",avg(score));

   return 0;

}




  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值