IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 10-数组 -> 正文阅读

[C++知识库]10-数组

引例

写一个程序计算用户输入的数字的平均数,并输出所有大于平均数的数
请添加图片描述

定义数组

  • <类型> 变量名称[元素数量];

eg:
int grades[100];
double weight[20];

注:元素数量必须是整数
C99之前:元素数量必须是编译时刻确定的字面量,在C99之后,元素数量可以是变量

  • 数组是一种容器,特点是:
  1. 其中所有元素具有相同的数据类型
  2. 一旦创建,不能改变大小
  3. 数组中的元素在内存中是连续依次排列的

eg: int a[10]
1个 int数组,10个单元
请添加图片描述
每个单元就是一个int类型的变量
可以出现在赋值的左边和右边
eg:a[2] = a[1] + 6
在赋值左边的叫左值(左值右值会在之后指针中了解)

数组的单元

  • 数组的每个单元就是数组类型的一个变量
  • 使用数组时放在[]中的数字叫做下标或索引,下标从0开始计数
    eg:grades [0]、grades [99]、grades [5]

注:
—编译器和运行环境都不会检查数组下标是否越界, 无论是对数组单元做读还是写
— —旦程予运行,越界的数组访问可能造成问题,导致程序崩溃(segmentation fault)
—但是也可能运气好,没造成严重的后果
—所以这是程序员的责任来保证程序只使用有效的下标值:[0,数组的大小-1]

长度为0的数组 int [0] ,可以存在,但没有意义

用数组做散列计算

写一个程序,输入数量不确定的[0,9]范围内的整数,统计每一种数字出现的次数,输入-1表示结束
请添加图片描述

二位数组

  • int a[3][5];
  • 通常理解为a是一个3行5列的矩阵
    请添加图片描述

二位数组的遍历

请添加图片描述

  • 列数是必须给出的,行数可以由编译器来数
  • 每行一个{},逗号分隔
  • 最后的逗号可以存在,有古老的传统
  • 如果省略,表示补零
  • 也可以用定位( *C99 ONLY)

tic-tac-toc游戏(〇X游戏)

  • 读入一个3×3的矩阵,矩阵中的数字为1表示该位置上有一个X,为0表示为〇
  • 程序判断这个矩阵中是否有获胜的一方,输出表示获胜一方的字符X或O,或输出无人获胜
#include <stdio.h>

int main()
{
	const int size = 3;
	int board [size] [size] ;
	int i,j;
	int numOfX;
	int numOf0;
	int result = -1;//-1:没人赢,1:X赢,0:0赢
	//读入矩阵
	for ( i=0; i<size; i++ ) {
		for ( j=0; j<size; j++ ) {
			scanf( "%d", &board [i][j]);
		}
	}
//检查行
	for ( i=0; i<size && result == -l; i++ ) {
		numOf0 = numOfX = 0;
		for ( j=; j<size; j++ ) {
			if ( board[i][j] == 1 ) {
				numOfX ++;
			}else {
				num0f0 ++;
			}
		}
			if ( num0f0 == size ) {
				result = 0;
			}else if (numOfx == size ) {
				result = 1;
		}
	}
//检查列
	for ( j=0; j<size && result == -l; j++ ) {
		numOf0 = numOfX = 0;
		for ( i=; i<size; i++ ) {
			if ( board[i][j] == 1 ) {
				numOfX ++;
			}else {
				num0f0 ++;
			}
		}
			if ( num0f0 == size ) {
				result = 0;
			}else if (numOfx == size ) {
				result = 1;
		}
	}
//检查正对角线
	numOf0 = numOfX = 0;
	for ( i=0; i<size; i++ ) {
		if ( board[i][i] == 1 ) {
			num0fX ++;
		}else {
			num0f0 ++;
		}
	}
	if ( numOf0 == size ) {
		result = 0;
	}else if (numOfX == size ) {
		result = 1;
//检查反对角线
	numOf0 = numOfX =0;
	for ( i=0; i<size;i++ ) {
		if ( board[i] [size-i-1] == 1 ) {
			numOfX ++;
		}else {
			num0f0 ++;
		}
	}
	if ( numOf0 == size ) {
		result = 0;
	}else if (numOfX == size ) {
		result = 1;
return 0;
}
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-07-21 21:19:47  更:2022-07-21 21:21:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:42:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码