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