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

Posted hetaoyuan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组(随机生成一维数组),二维数组的概念和题目设计(利用二维数组 :任意给定分数去计算科目和人均平均分)相关的知识,希望对你有一定的参考价值。


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     }

 技术分享图片

技术分享图片

 

















以上是关于数组(随机生成一维数组),二维数组的概念和题目设计(利用二维数组 :任意给定分数去计算科目和人均平均分)的主要内容,如果未能解决你的问题,请参考以下文章

二维数组最大子数组(结对开发)

二维数组最大子数组(结对开发)

C中结构体内有一个成员是二维数组,可以直接赋值另一个一维数组吗?

Java入门_一维数组_第二题_随机生成数

通过像一维数组一样访问二维数组的双线性插值的概念

PHP中怎么从一个二维数组中随机取出一个值?