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

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\n", 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("手动输入随机数种子:\n");
13          scanf("%d", &seed);/*手动输入种子*/
14          srand(seed);
15          printf("产生随机数如下:\n");
16          for (i = 0; i < MAX; i++){
17                  number[i] = rand() % 100;/*产生100以内的随机整数*/
18                  printf("%d\t", number[i]);
19
20     }
21          printf("\n");
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("请输入您要选择的成绩计算方式\n 1(各个科目平均分),2(每个人的平均分)");
 6         scanf_s("%d", &chooice);
 7         if (chooice == 1){
 8             printf("请按照科目输入成绩\n");
 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\nc languag:%d\nChinese:%d\n", subject[0], subject[1], subject[2]);
18
19     }
20          else if (chooice == 2){
21             printf("请按照姓名输入成绩\n");
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\n 王:%d\n 李:%d\n 赵:%d\n 周:%d\n", person[0], person[1], person[2], person[3], person[4]);
32
33         }
34         else
35
36             printf("输入错误,只能输入(1或者2)\n\n");
37
38
39     }

原文地址:https://www.cnblogs.com/hetaoyuan/p/10066009.html

时间: 2024-08-07 00:14:36

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

随机生成验证码的实现+详细注释

最近的项目里需要使用到随机验证码,所以昨天认真研读了网上的许多教程,但都无非是千篇一律,不太好懂---于是乎博主就做了一回好人,对自己已经投入项目使用的一段代码进行详细的解析说明,让大家更好的理解随机验证码的生成原理!!! 这里给上我的验证码类VerifyCode.java package com.bob.verifycode; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import androi

二维数组转化成一维指针

二维数组转化为一维指针来使用本实例用到了随机数,链表生成,遍历,有待扩展 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<time.h> 4 #include<math.h> 5 //定义个结构体Emp用来存放员工信息 6 typedef struct Emp 7 { 8 int eno; 9 char *ename; 10 int dno; 11 Emp *next; 12 13 }emp,*pemp

第二十一节(数组概要, 一维、二维数组的声明和使用,数组的排序,数组的查找,)

一维数组:1:/* 数组: 1. 数组是一种引用类型 2. 数组是一种简单的数据结构,线性的机构 3. 数组是一个容器,可以用来存储其他元素, 4. 数组也是可以存储任意数据类型的元素 5. 数组分为: 一维数组,二维数组,三维数组,多维数组 6. 数组中的存储的元素类型 是统一的 7. 数组的长度是不可变的,数组一旦创建长度就是不可变的,固定的 声明数组语法: <1>. 数组元素的类型[] 变量名称 <2>. 数组元素的类型 变量名称[] */ public class Arra

PHP二维数组转换成一维数组,一个变量多个二维数组转换成一维数组,PHP二维数组(或任意维数组)转换成一维数组的方法汇总,array_reduce(); array_walk_recursive(); array_map();

方法汇总: 1. array_reduce函数法 //用array_reduce()函数是较为快捷的方法: $result = array_reduce($user, function ($result, $value) { return array_merge($result, array_values($value)); }, array()) 2. array_walk_recursive函数法 //用array_walk_recursive()函数就非常灵活,可以把任意维度的数组转换成一

数组 冒泡排序 打印菱形 随机生成不同的数

判断一个数是否是质数  对这个数从1到这个数挨着取余 如果取余等于零则计数+1,所以当计数=2是  那么说明这个数只能被一和它本身整除 所以它是质数 打印菱形  每一行首先打印空格  然后打印符号 先打印上半部分 然后下半部分 这时候中间两行出现重复 那么需要去掉一行 数组 冒泡排序 首先定义数组 利用for循环把值输入到数组里边 后利用两个for循环 把数组里的数挨个比较 排序 如果a[i]<a[i+i] 然后进行交换 那么是降序输出 如果a[i]>a[i+1] 然后交换了  那么是升序排列

小游戏●贪吃蛇1(利用二维数组制作)

利用二维数组编写简单贪吃蛇小游戏,由于是初学C#,用的是单线程,所以蛇不会自动前进 代码及简要分析如下: 1 //定义地图,0为空,1为墙,2为蛇,3为食物 2 int[,] map = new int[15, 15]{ 3 {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, 4 {1,2,0,0,0,0,0,0,0,0,0,0,0,0,1}, 5 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, 6 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},

二维数组首尾相接,象个一条首尾相接带子一样,求所有子数组和的最大值

题目:返回一个二维整数数组中最大子数组的和. 要求: 1 输入一个二维整形数组,数组里有正数也有负数. 2 二维数组首尾相接,象个一条首尾相接带子一样. 3 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 4 求所有子数组的和的最大值.要求时间复杂度为O(n). 设计思想 目前的解决方案是最笨的方法,穷举,所以时间复杂度达不到题目的要求,还需要进一步的寻找答案 源代码 #include<iostream> #include<time.h> #include<

题目:返回一个二维整数数组中最大子数组的和。

#include<iostream> #include<ctime> using namespace std; #define M 4 #define N 4 int maxline(int *array, int len) //求一维数组最大子序列和 { int i, sum = array[0], b = 0,j = 0; for (i = 0; i<len; ++i) { if (b>0) b += array[i]; else b = array[i]; if

多维数组会有一维索引吗?

前两天.net老师讲数组,发现了个方法,Array.Clear(). 里面有三个参数 Array array,int index,int length,他们分别是 array类型的相关类,清除的起始索引,清除长度. 看似好像没什么可想象的.但后来发现这个函数居然有重载,那么问题来了,既然没有重载,那么多维数组咋整啊? 大家都知道多维数组的索引肯定不止一个整数,索引数会根据维度的增加而增多的.比如一个二维int[5,5],我要想 从2,3开始清除怎么办呢?这个方法能不能用呢,结果试了下.测试数组如