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

news/2024/7/24 11:07:12

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


http://www.niftyadmin.cn/n/530353.html

相关文章

mysql5.6备份脚本_实战:INNOBACKUPEX for mysql 5.6自己主动备份脚本

#backup.sh#!/bin/sh## 第一次运行它的时候它会检查是否有全然备份,否则先创建一个全库备份# 当你再次执行它的时候。它会依据脚本中的设定来基于之前的全库备份进行增量备份#ocpyang126.comINNOBACKUPEX_PATHinnobackupex #INNOBACKUPEX的命令INNOBACKUPEXFULL/usr/bin/$INNO…

flash读取xml简明实例教程

----------------------------flash读取xml简明实例教程 --------------------------****************************************************************一、建立XML对象&#xff1a; var myXML new XML();二、引用XML文件&#xff1a; myXML.load("data.xml");三、…

单例模式双重校验_面试官:你知道双重加锁单例模式为什么加volatile关键字吗?...

单例模式的实现上面代码是一个经典的单例的双重监测的代码&#xff0c;这段代码在单线程环境下并没有什么问题&#xff0c;但如果在是多线程环境下就可能出现线程安全问题。多线程不安全的原因上面代码不安全的原因如下&#xff1a;当某一个线程执行到第一次监测&#xff0c;读…

好用的XML/SWF Charts图表組件

俗话说&#xff1a;“一画抵千言”。这句话很难反驳&#xff0c;尤其是在谈论图形的时候。然而一直以来&#xff0c;在 Web 上画图并非易事。虽然有些 Web 框架包括了一些用于构建图像的基本图形&#xff0c;但大多数 Web 框架都缺少即开即用的画图工具。这种功能的缺失使您必须…

flash与数据库的连接

确切地说..flash是不可以直接与数据库连接的.只能是通过ASP(只是我比较了解ASP,也可以是其他的PHP/JSP等);所以呢.首先,先在ASP里编写好连接数据库的语句 <% dim cn dim connstr dim db db"asp.mdb" Set cn Server.CreateObject("ADODB.Connection") c…

mysql数据库中发布与订阅_SQL SERVER 使用订阅发布同步数据库 【推送订阅】

一、数据库复制涉及1、发布服务器&#xff1a;数据的来源服务器&#xff0c;维护源数据&#xff0c;决定哪些数据将被分发&#xff0c;检测哪些数据发生了修改&#xff0c;并将这些信息提交给分发服务器。2、分发服务器&#xff1a;分发服务器负责把从发布服务器拿来的数据传送…

React 特性剪辑(版本 16.0 ~ 16.9)

Before youre going to hate it, then youre going to love it. Concurrent Render(贯穿 16) 在 18年的 JSConf Iceland 上, Dan 神提到 Concurrent Render 涉及到 CPU 以及 IO 这两方面。 Time Slicing 对应解决左侧的问题, Suspense 对应解决了右侧的问题。它们共同要解决的是…

如何不让flash把层遮盖住?

默认情况下&#xff0c;Flash影片是处于最上层的&#xff0c;无法将 <div>置于其上。查阅Flash的帮助文件&#xff0c;发现这样一段描述&#xff1a; wmode 属性/参数 值 Window | Opaque | Transparent 模板变量&#xff1a;$WM 说明 &#xff08;可选&#xff09;使您可…