• 09-C语言数组


    目录:

    一、使用xcode编辑工具

    二、数组

    三、数组遍历

    四、多维数组

    回到顶部

    一、使用xcode编辑工具

    1 打开xcode程序

    2 创建一个项目

    OSX -> Application -> Command line Tool -> next

    -> ProductName : 项目名称(day07-1)

    -> Type : C

    选择项目所要保存的目录

    退出项目( command + q )

    双击day07-1.xcodeproj打开项目

    3 buile( command + b )编译

    4 clean( command + shift + k )清除目标文件或可执行文件

    5 command + r 编译运行、command + z 撤销、shift + command +z 撤销前进、esc打开关闭提示

    6 新建一个文件command + n -> C and C++ -> C file -> 保存C文件的位置

    7 在通常练习中,项目中会创建多个文件,所以我们会修改编译、链接操作,去掉不需要编译的文件(选中文件点击‘-’号或delete),点击项目名称 -> bulid phases -> Compile Sources 保留需要的文件,(其实就是command + r要编译运行的文件,不需要的那些文件就在这里干掉)

    回到顶部

    二、数组

    1 数组是用来存储多条相同数据类型的数据结构。(容器)

    2 关键点:

    多条、类型相同;

    数组是数据的容器而非数据本身;

    数组中的每个数据叫元素、数组有多个元素组成;

    数据下标(索引)来区分数据中的元素;

    元素从数组的位置0开始;

    元素可以使用数组名[下标]来得到具体的元素数据;

    声明数组中元素的个数叫数组的长度;

    数组所占空间 = 元素类型*数组长度;

    数组是一段连续的内存区域;

    数组变量名指向的区域是数组在内存中的首地址;

    3 语法格式

    元素类型 数组名[长度];

    int array[3];

    4 初始化

    赋使用的值:

    int array[3];//未初始化 可能存在垃圾值

    int array2[3] = {1,2,3};//依次给数组元素赋

    int array4[3] = {1,2};//如果赋值的个数少于数组长度会自动用0填充后面的值

    赋值0:

    int array3[3] = {0};//数组中的元素都是0

    如果数组下标超出了长度,有可能有值有可能没值。

    #include <stdio.h>
    
    int main(int argc, const char * argv[])
    {
    
        //声明一个数组
        //int array[3];//未初始化 可能存在垃圾值
        //int array2[3] = {1,2,3};//依次给数组元素赋值
        //int array3[3] = {0};////数组中的元素都是0
        int array4[3] = {1,2};//如果赋值的个数少于数组长度会自动用0填充后面的值
        //printf("array3[0]:%d
    ",array3[3]);//3为数组的下标 0 1 2 3,如果超出了长度,有可能有值有可能没值
        //下标 < 长度
        //数组前有类型是长度
        //数组前无类型是下标
        //给数组元素赋值
        array4[2] = 10;
        //printf("array4[2]:%d
    ",array4[2]);
        
        //遍历数组元素
        for (int i = 0; i < 3; i++) {
            printf("array4[%d]:%d
    ",i,array4[i]);
        }
        return 0;
        
    }

    回到顶部

    三、数组遍历

    5 赋值

    下标 < 长度

    数组前有类型数字是长度 int array[3];

    数组前无类型数字是下标 array4[2] = 10;

    6 取出数组元素的值

    printf("array4[2]:%d ",array4[2]);

    7 查看数组中的每一个元素,遍历

    //遍历数组元素

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

            printf("array4[%d]:%d ",i,array4[i]);

        }

    练习:

    1)声明一个100个元素的数组,数组中的值是从1~100,遍历数组中的内容。

    2)在键盘上输入5个数,求最大值,在数组中的位置。

    3)输入五个同学的分数,刚好下标就是学生学号,问最高分的学生学号是多少?最低分学生的学号是多少?

    #include <stdio.h>
    int main()
    {
        //练习:1)声明一个100个元素的数组,数组中的值是从1~100,遍历数组中的内容。
        int arr[100] = {0};
        //赋1~100给数组arr
        for (int i = 0; i < 100; i++) {
            arr[i] = i + 1;
        }
        //遍历数组
        for (int i = 0; i < 100; i++) {
            printf("arr[%d]:%d
    ",i,arr[i]);
        }
        
         /*
           2)在键盘上输入5个数,求最大值,在数组中的位置。
        */
    //声明最大值下标、最小值下标 int number[5] = {0}, max = -1000, maxIndex = -1, min = 1000, minIndex = -1; for (int i = 0; i < 5; i++) { printf("输入%d个数: ",i+1); scanf("%d",&number[i]); } //输出数据 for (int i = 0; i < 5; i++) { //判断最大值 if (number[i] > max) { max = number[i]; maxIndex = i; } //判断最小值 if (number[i] < min) { min = number[i]; minIndex = i; } } printf("max:%d,index%d ", max, maxIndex); printf("min:%d,index%d ", min, minIndex); /* 3)输入五个同学的分数,刚好下标就是学生学号,问最高分的学生学号是多少?最低分学生的学号是多少? */ //可变数组,在声明数组前可以修改数组的长度,一旦数组声明,其长度不可变。 int length = 0; printf("输入有几个学生:"); scanf("%d",&length); int number[length]; int max = 0, maxIndex = -1, min = 100, minIndex = -1, sum = 0; printf("数组所占内存空间:%ld ",sizeof(number)); printf("数组中元素所占内存空间:%ld ",sizeof(number[0])); printf("数组长度:%ld ",sizeof(number) / sizeof(number[0])); for (int i = 0; i < length; i++) { printf("输入第%d个学生的分数:",i+1); scanf("%d",&number[i]); if (number[i] < 0 || number[i] > 100) { printf("警告:分数不能小于0或大于100 "); i--; //continue; } } for (int i = 0; i < length; i++) { //高分学号 if (number[i] > max) { max = number[i]; maxIndex = i; } //最低学号 if (number[i] < min) { min = number[i]; minIndex = i; } //总分 sum += number[i]; } printf("最高分学号:%d,最低分学号:%d ", maxIndex, minIndex); printf("总分:%d ",sum); printf("平均分:%d ",sum / length); return 0; }

     8 可变数组,在声明数组前可以修改数组的长度,一旦数组声明,其长度不可变。

    在数组长度不确定时,可使用可变数组。

    9 数组长度=数组所占内存空间/元素所占内存空间

    sizeof(array) / sizeof(array[0])

    当数组过多,只要知道数组名,使用sizeof计算出数组的长度。

    练习:输入某班学生信息(人数不确定),以学号为标识,学号从1开始,将所有学生的考试成绩保存到数组中,求出总分、平均分、最高分及学号、最低分及学号。

     1 #include <stdio.h>
     2 //在一个项目中不能有两个mian函数
     3 //在通常练习中,项目中会创建多个文件,所以我们会修改编译、链接操作,去掉不需要编译的文件(选中文件点击‘-’号或delete),点击项目名称 -> bulid phases -> Compile Sources 保留需要的文件
     4 int main()
     5 {
     6     /*
     7      输入某班学生信息(人数不确定),以学号为标识,学号从1开始,将所有学生的考试成绩保存到数组中,求出总分、平均分、最高分及学号、最低分及学号。
     8      */
     9     printf("请输入班级人数:
    ");
    10     int numbers = 0;//声明变量保存人数
    11     scanf("%d",&numbers);
    12     
    13     //保存所有的学生成绩
    14     int scores[numbers];
    15     //输入学生成绩,这里的条件虽然可以直接写numbers,但是最好还是计算出长度,这样更灵活
    16     for (int i = 0; i < sizeof(scores) / sizeof(scores[0]); i++) {
    17         printf("请输入学号%d的成绩:
    ",i+1);
    18         scanf("%d",&scores[i]);//scores+i也可以
    19     }
    20     int max = 0,min = 100,maxIndex = -1,minIndex = -1,sum = 0,avg = 0;
    21     //遍历学生成绩
    22     for (int i = 0; i < sizeof(scores) / sizeof(scores[0]); i++) {
    23         //最大值
    24         if (scores[i] > max) {
    25             max = scores[i];
    26             maxIndex = i;
    27         }
    28         //最小值
    29         if (scores[i] < max) {
    30             min = scores[i];
    31             minIndex = i;
    32         }
    33         //求和
    34         sum += scores[i];
    35     }
    36     //求平均值
    37     avg = sum / (sizeof(scores) / sizeof(scores[0]));
    38     printf("最最高:%d,最高分学号:%d,最低分:%d,最低分学号:%d,总分:%d,平均分:%d
    ",max,maxIndex,min,minIndex,sum,avg);
    39     
    40     return 0;
    41 }

    回到顶部

    四、多维数组

    1 声明一个一维数组 int array[3];

    2 声明一个二维数组 int array[3][2];// 3代表一维数组元素个数,2代表二维数组元素个数

    4 初始化

    int array2[3][2] = {{1,2},{3,4},{5,6}}; //标准赋值

    int array2[3][2] = {1,2,3,4,5,6};//依次赋值

    int array2[3][2] = {1,2,3,4};//不够补0

    3二维数组的遍历,先遍历一维数组中的元素,在遍历二维数组中的元素。

    4 一维数组根据元素的个数可以确定数组的长度

    int array[] = {1,2,3,4};

    二维数组的必须确定二维数组的长度

    int array3[][2] = {1,2,3,4,5,6};

    作业:通过键盘输入5个人的课程成绩(语文、数学、英语),分别求出课程的平均分、各科成绩的总分,所有课程的平均分。

    a、解决数据输入问题

    b、显示问题

    c、switch 0->张 0->语文

    d、处理运算、计算数值

    e、求谁的分高?

                     j张 李 王 赵 钱

    i语文   10 10 10 1 0 1 0

    数学   10 10 10 1 0 1 0

    英语   10 10 10 1 0 1 0

    语文总分:数学总分:英语总分

    语文平均分:数学平均分:英语平均分

    总平均分:

      1 #include <stdio.h>
      2 /*
      3  作业:通过键盘输入5个人的课程成绩(语文、数学、英语),分别求出课程的平均分、各科成绩的总分,所有课程的平均分。
      4  a、解决数据输入问题
      5  b、显示问题
      6  c、switch 0->张 0->语文
      7  d、处理运算、计算数值
      8  e、求谁的分高?
      9  j张 李 王 赵 钱
     10  i语文   10 10 10 10 10
     11  数学    10 10 10 10 10
     12  英语    10 10 10 10 10
     13  语文总分:数学总分:英语总分
     14  语文平均分:数学平均分:英语平均分
     15  总平均分:
     16  */
     17 int main()
     18 {
     19     //从键盘上输入3们课5个人成绩
     20     int score[3][5] = {0};
     21     //保存每门课的总成绩
     22     int sum[3] = {0};
     23     //保存每门课的平均分
     24     int avg[3] = {0};
     25     //所有课程的平均分
     26     int allAvg = 0;
     27     //输入
     28     for (int i = 0; i < 3; i++) {
     29         printf("请输入,课:");
     30         //使用switch解决课显示问题
     31         switch (i) {
     32             case 0:
     33                 printf("语文,");
     34                 break;
     35             case 1:
     36                 printf("数学,");
     37                 break;
     38             case 2:
     39                 printf("英语,");
     40                 break;
     41         }
     42         for (int j = 0; j < 5; j++) {
     43             printf("人:");
     44             switch (j) {
     45                 case 0:
     46                     printf("张,");
     47                     break;
     48                 case 1:
     49                     printf("李,");
     50                     break;
     51                 case 2:
     52                     printf("王,");
     53                     break;
     54                 case 3:
     55                     printf("赵,");
     56                     break;
     57                 case 4:
     58                     printf("钱,");
     59                     break;
     60             }
     61             //使用switch解决人显示问题
     62             printf("的成绩:");
     63             scanf("%d",&score[i][j]);
     64         }
     65     }
     66     //输出
     67     printf("    张 李 王 赵 钱
    ");
     68     for (int i = 0; i < 3; i++) {
     69         switch (i) {
     70             case 0:
     71                 printf("语文 ");
     72                 break;
     73             case 1:
     74                 printf("数学 ");
     75                 break;
     76             case 2:
     77                 printf("英语 ");
     78                 break;
     79         }
     80         for (int j = 0; j < 5; j++) {
     81             printf("%d ",score[i][j]);
     82             //累计课程的和
     83             sum[i] += score[i][j];
     84             //每门课的平均分
     85             avg[i] = sum[i] / 5;
     86         }
     87         //总平均分
     88         allAvg += avg[i];
     89         printf("
    ");
     90     }
     91     //显示每门课的总分
     92     for (int i = 0; i < 3; i++) {
     93         //使用switch解决课显示问题
     94         switch (i) {
     95             case 0:
     96                 printf("语文,");
     97                 break;
     98             case 1:
     99                 printf("数学,");
    100                 break;
    101             case 2:
    102                 printf("英语,");
    103                 break;
    104         }
    105         printf("总分:%d,",sum[i]);
    106     }
    107     printf("
    ");
    108     //显示每门课的平均分
    109     for (int i = 0; i < 3; i++) {
    110         //使用switch解决课显示问题
    111         switch (i) {
    112             case 0:
    113                 printf("语文,");
    114                 break;
    115             case 1:
    116                 printf("数学,");
    117                 break;
    118             case 2:
    119                 printf("英语,");
    120                 break;
    121         }
    122         printf("平均分:%d,",avg[i]);
    123     }
    124     printf("
    ");
    125     //所有课程的平均分
    126     printf("所有课程平均分:%d
    ",allAvg / 3);
    127     return 0;
    128 }
  • 相关阅读:
    10.6比赛 T1
    10.5比赛 T3
    10.5比赛 T2
    10.5比赛 T1
    最大子序列问题
    Python编程快速上手_第 4 章 列表
    Python编程快速上手_第 3 章 函数
    Python编程快速上手_第 2 章 控制流
    Python编程快速上手_第 1 章 Python基础
    Python 编程快速上手 ——让繁琐工作自动化
  • 原文地址:https://www.cnblogs.com/yangmx/p/3468162.html
Copyright © 2020-2023  润新知