zoukankan      html  css  js  c++  java
  • 数组(随机生成一维数组),二维数组的概念和题目设计(利用二维数组 :任意给定分数去计算科目和人均平均分)


    1
    //数组间的关系arr[]中的数字为几,[]内就有几个数 2 //{ }内的数是从0开始,如需要打印应从0开数 3 如{2,6,9,8,7}打印arr[4]就是7 4 #include <stdio.h> 5 #include <stdlib.h> 6 int main() 7 { 8 int arr[] = { 1,2,3,4,8}; 9 10 printf("%d ", arr[3]); 11 12 system("pause"); 13 return 0; 14 }

    随机生成数组:

     1 #define _CRT_SECURE_NO_WARNINGS
     2 #include<stdlib.h>/*用到了srand函数,所以要有这个头文件*/
     3 #include<stdio.h>
     4 
     5 #define MAX 15
     6 
     7 int main()
     8 {
     9          int number[MAX] = { 0 };
    10          int i;
    11         unsigned int seed;
    12          printf("手动输入随机数种子:
    ");
    13          scanf("%d", &seed);/*手动输入种子*/
    14          srand(seed);
    15          printf("产生随机数如下:
    ");
    16          for (i = 0; i < MAX; i++){
    17                  number[i] = rand() % 100;/*产生100以内的随机整数*/
    18                  printf("%d	", number[i]);
    19         
    20     }
    21          printf("
    ");
    22          system("pause");
    23          return 0;
    24      }

    程序开头宏定义max常量为15,接下来又定义了一个内涵15个数字的数组,循环15次,

    用 number[i] = rand() % 100;/*产生100以内的随机整数*/  随机产生15个整数

    运行结果:随着输入数字的不同,结果也不同,输入数字一样,结果也一样。 


    二维数组的定义

    二维数组定义的一般形式是:
        类型说明符 数组名[常量表达式1][常量表达式2]
    其中常量表达式1表示第一维下标的长度,常量表达式2 表示第二维下标的长度。例如:

    1 int a[3][4];

    说明了一个三行四列的数组,数组名为a,其下标变量的类型为整型。该数组的下标变量共有3×4个,即:
        a[0][0], a[0][1], a[0][2], a[0][3]
        a[1][0], a[1][1], a[1][2], a[1][3]
        a[2][0], a[2][1], a[2][2], a[2][3]

    二维数组在概念上是二维的,即是说其下标在两个方向上变化,下标变量在数组中的位置也处于一个平面之中,而不是象一维数组只是一个向量。但是,实际的硬件存储器却是连续编址的,也就是说存储器单元是按一维线性排列的。如何在一维存储器中存放二维数组,可有两种方式:一种是按行排列, 即放完一行之后顺次放入第二行。另一种是按列排列, 即放完一列之后再顺次放入第二列。

    在C语言中,二维数组是按行排列的。即,先存放a[0]行,再存放a[1]行,最后存放a[2]行。每行中有四个元素也是依次存放。由于数组a说明为int类型,该类型占两个字节的内存空间,所以每个元素均占有两个字节。

    二维数组元素的引用

    二维数组的元素也称为双下标变量,其表示的形式为:
        数组名[下标][下标]
    其中下标应为整型常量或整型表达式。例如:
        a[3][4]
    表示a数组三行四列的元素。

    下标变量和数组说明在形式中有些相似,但这两者具有完全不同的含义。数组说明的方括号中给出的是某一维的长度,即可取下标的最大值;而数组元素中的下标是该元素在数组中的位置标识。前者只能是常量,后者可以是常量,变量或表达式。


     一个学习小组有5个人,每个人有三门课的考试成绩。求全组分科的平均成绩和各科总平均成绩。

     

     
    数学(分数)  96  60  68  99  76
    C语言(分数)  85  62  85  97  45
    语文(分数)  70  90  78  85  66

     

     下面我自己设计了一个根据用户选择 :计算每位学生3门课的平均成绩 或者 计算每门课5个人的平均成绩

     1 #include <stdio.h>
     2     int main(){
     3         int i, j, z, x, average = 0, sum = 0, a[3][5], b[5][3], subject[3], person[5],chooice=0;
     4         
     5         printf("请输入您要选择的成绩计算方式
     1(各个科目平均分),2(每个人的平均分)");
     6         scanf_s("%d", &chooice);
     7         if (chooice == 1){
     8             printf("请按照科目输入成绩
    ");
     9             for (i = 0; i < 3; i++){
    10                 for (j = 0; j < 5; j++){
    11                     scanf_s("%d", &a[i][j]);
    12                     sum = sum + a[i][j];
    13                 }
    14                 subject[i] = sum / 5;
    15                 sum = 0;
    16             }
    17             printf("math:%d
    c languag:%d
    Chinese:%d
    ", subject[0], subject[1], subject[2]);
    18     
    19     }
    20          else if (chooice == 2){
    21             printf("请按照姓名输入成绩
    ");
    22             for (z = 0; z < 5; z++){
    23                 for (x = 0; x < 3; x++){
    24                     scanf_s("%d", &b[z][x]);
    25                     average = average + b[z][x];
    26                 }
    27                 person[z] = average / 3;
    28                 average = 0;
    29             }
    30 
    31             printf("张:%d
     王:%d
     李:%d
     赵:%d
     周:%d
    ", person[0], person[1], person[2], person[3], person[4]);
    32 
    33         }
    34         else
    35         
    36             printf("输入错误,只能输入(1或者2)
    
    ");
    37         
    38         
    39     }

     

  • 相关阅读:
    selenium之css选择器高级用法
    常系数线性齐次递推新理解
    关于莫队本质的理解
    2021.5.8总结
    决策单调性优化dp
    字符串 复习
    5.1总结
    树分块 学习笔记
    莫反 复习
    P4570 [BJWC2011]元素
  • 原文地址:https://www.cnblogs.com/hetaoyuan/p/10066009.html
Copyright © 2011-2022 走看看