【C语言】利用数组处理批量数据(一维数组和二维数组)

这篇具有很好参考价值的文章主要介绍了【C语言】利用数组处理批量数据(一维数组和二维数组)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:在前面学习的程序中使用的变量都属于基本类型,例如整型、字符型、浮点型数据,这些都是简单的数据类型。对于简单的问题,使用这些简单的数据类型就可以了。但是对于有些需要处理的数据,只用以上简单的数据类型是不够的,难以反映出数据的特点,也难以有效的进行处理。


💖 博主CSDN主页:卫卫卫的个人主页 💞
👉 专栏分类:C程序设计谭浩强版本 👈
💯代码仓库:卫卫周大胖的学习日记💫
💪关注博主和博主一起学习!一起努力!【C语言】利用数组处理批量数据(一维数组和二维数组),C程序设计谭浩强版本,c语言,开发语言



怎样定义和引用一维数据

  • 一维数组是数组中最简单的,它的元素只需要用数组名加一个下标,就能唯一的地确定。
  • 数组是一组有序数据的集合
  • 数组中的每一个元素都属于同一个数据类型
  • C语言规定用方括号中的数字表示下标,如S[15]表示第15个元素

怎样定义一维数组

要使用数组,必须在程序中先定义数组,即通知计算机:由哪些数据组成数组,数组中有多少元素,属于哪个数据类型。否则计算机不会自动的把一批数据作为数组处理。例如,下面是对数组的定义:

int a[10] ;
它表示定义了一个整型数组, 数组名是a,此数组包含了 10个元素

数组的一般形式为:

类型说明符 数组名[常量表达式]

说明:

  1. 数组名的命名规则和变量名相同,遵循标识符命名规则。
  2. 在定义数组时莫须有指定数组中元素的个数,方括号中的常量表达式用来表示元素的个数,即数组的长度。
  3. 常量表达式中可以包括常量和符号常量,如 int a[3 + 5]是合法的的。
  4. “int a[10];”定义了数组后a后,在内存中划出了一片存储空间(下图所示),存放了一个有10个整型元素的数组,可以看到,用一个 “int a[10];”就相当于定义了10个简单的整型变量,显然简单方便。
    【C语言】利用数组处理批量数据(一维数组和二维数组),C程序设计谭浩强版本,c语言,开发语言

怎样引用一维数组

在定义数组并对其各个元素赋值后,就可以引用数组中的元素。应注意:只能引用数组元素而不能一次整体调用整个数组全部元素的值。
引用数组元素的表示形式为:

数组名[下标]

例题: 对10个数组元素一次赋值为0,1,2,3 … 8,9,要求逆序输出。

int main()
{
	int i = 0;
	int arr[10] = { 0 };
	for (i = 0; i < 10; i++)
	{
		arr[i] = i;//赋值
	}
	for (i = 9; i >= 0; i--)
	{
		printf("%d ", arr[i]);//打印
	}
	printf("\n");
	return 0;
}

运行结果:
【C语言】利用数组处理批量数据(一维数组和二维数组),C程序设计谭浩强版本,c语言,开发语言


一维数组的初始化

  1. 在定义数组时对全部数组元素赋予初值。例如:
int a[10] = {0,1,2,3,4,5,6,7,8,9);
  1. 也可只给数组中的一部分元素赋值。例如:
int a[10] = {0,1,2,3,4};
//定义a数组有10个元素,但花括号内只提供5个元素的初始值,
//系统自动给后面5个元素的初始值赋值为0
  1. 如果想一个数组中全部元素为0,可以写成:
int a[10] = {0};
  1. 在对全部数组元素赋初始值时,由于数据的个数已经确定,因此可以不指定数组长度。例如:
int a[5] = {1,2,3,4,5};
//或者
int a[] = {1,2,3,4,5}; 

一维数组程序举例

例题1:用数组来处理求Fibonacci(斐波那契数列)问题。这个数列有以下特点:第1,2两个数为1,1。从第3个数开始,该数是其前面两个数之和。即该数列为1,1,2,3,5,8,13…,求其前20个数。

int main()
{
	int i = 0;
	int arr[20] = {1,1};//前俩项赋值为1
	for (i = 2; i < 20; i++)
	{
		arr[i] = arr[i - 1] + arr[i - 2];
	}
	for (i = 0; i < 20; i++)
	{
		printf("%d ", arr[i]);
	}
	printf("\n");
	return 0;
}

运行结果:【C语言】利用数组处理批量数据(一维数组和二维数组),C程序设计谭浩强版本,c语言,开发语言


例题2(冒泡排序):有10个地区的面积,要求对它们按由小到大的顺序排序。

int main()
{
	int area[10] = { 0 };
	int i = 0;
	int j = 0;
	int min = 0;
	printf("请分别输入10个田地的面积\n");
	for (i = 0; i < 10; i++)
	{
		scanf("%d", &area[i]);
	}
	for (i = 0; i < 9; i++)//排升序(趟数)
	{
		for (j = 0; j < 9 - i; j++)//两两交换
		{
			if (area[j] > area[j + 1])
			{
				min = area[j + 1];//将较小的放临时变量中
				area[j + 1] = area[j];//将两交换位置
				area[j] = min;//将较小值赋值给较大值
			}
		}
	}
	for (i = 0; i < 10; i++)
	{
		printf("%d ", area[i]);
	}
	printf("\n");
	return 0;
}


运行结果:【C语言】利用数组处理批量数据(一维数组和二维数组),C程序设计谭浩强版本,c语言,开发语言


怎样定义和引用二维数组

前面已经提到,有的问题需要用二维数组来处理。例如3个小分队,每队有6名队友,需要把这些队友的工资用数组保存起来以备查。这就需要用到二维数组(如下图)。如果建立一个数组Pay,它应当是二维的,第一维用来表示第几个分队,第二维用来表示第几个队员。
【C语言】利用数组处理批量数据(一维数组和二维数组),C程序设计谭浩强版本,c语言,开发语言
二维数组通常称为 矩阵 。把二维数组写成行(row)和列(column)的排列形式,可以有助于形象化的理解二维数组的逻辑结构。


怎样定义二维数组

怎样定义二维数组呢? 其基本概念与方法和一维数组相似。如:

float pay[3][6]
以上定义了一个float类型的二维数组,第1维有3个元素,第2维有6个元素。每一维的长度分别用一对方括号扩起来。 二维数组的一般定义形式如下: 类型说明符 数组名[常量表达式][常量表达式]

例如: float a[3][4],b[5][10];


C语言对二维数组采用这样的定义方式,使得二维数组可以被看作一种特殊的一维数组:它的元素又是一个一维数组。例如可以把a看作一个一维数组,它有3个元素:a[0],a[1],a[2],每个元素又是一个包含4元素的一维数组,如图所示【C语言】利用数组处理批量数据(一维数组和二维数组),C程序设计谭浩强版本,c语言,开发语言
我们可以把a[0],a[1], a[2]看成三个一维数组的名字。上面定义的二维数组可以理解为定义了3个一维数组,即相当于:

float a[0][4],a[1][4],a[2][4]
此处把a[0],a[1],a[2]看作一维数组名。C语言的这种处理方法在数组初始化和用指针表示时显得很方便,这在以后的使用中各位会经常体会到

二维数组在内存中存放的顺序

C语言中,二维数组中元素排放的顺序是按行存放的,即在内存中先顺序存放第一行的元素,接着存放第2行的元素。如下图所示:
【C语言】利用数组处理批量数据(一维数组和二维数组),C程序设计谭浩强版本,c语言,开发语言

怎样引用二维数组

二维数组元素的表示形式为:

数组名[下标][下标]
例如:a[2][3]表示a数组中序号为2的行中序号为3的列元素。下标应是整型表达式,如 a[2 - 1][2 * 2 - 1]形式。 数组元素可以出现在表示中也可以被赋值。

二维数组的初始化

  1. 分行给二维数组赋初始值。 这种赋初始值的方式比较直观,把第一个花括号内的数据给第1行的元素,第2个花括号内的值给第2行的元素。例如:
int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
  1. 可以将所有数据写在一个花括号内,按数组元素在内存中的排列顺序对各元素赋初始值。例如:
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12,};
  1. 可以对部分元素赋初始值,例如:
int a[3][4] = {{1},{5},{9}};

二维数组程序举例

例题:有一个3 * 4的矩阵,要求编写程序求出求字最大的那个元素的值,以及其所在的行号和列号。

int main()
{
	int arr[3][4] = { {1,2,3,4},{5,55,7,8},{9,55,11,12} };
	int i = 0;
	int j = 0;
	int max = 0;//最大值
	int col = 0;//列坐标
	int row = 0;//行坐标
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 4; j++)
		{
			if (max  < arr[i][j])//将数组中的每一个元素和它进行比较找出最大的
			{
				max = arr[i][j];
				row = i;
				col = j;
			}
		}
	}
	printf("row = %d col = %d max = %d \n", row,col,max);
	return 0;
}

运行结果:
【C语言】利用数组处理批量数据(一维数组和二维数组),C程序设计谭浩强版本,c语言,开发语言


结语:今天的内容就到这里吧,谢谢各位的观看,如果有讲的不好的地方也请各位多多指出,作者每一条评论都会读的,谢谢各位。文章来源地址https://www.toymoban.com/news/detail-718368.html


🫵🫵🫵 祝各位接下来好运连连 💞

到了这里,关于【C语言】利用数组处理批量数据(一维数组和二维数组)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C语言基础入门】二级指针、一维数组与指针、二维数组与指针

    在学习C语言的过程中,理解指针的概念是非常重要的。指针提供了一种直接访问内存地址的方式,使得我们可以更加灵活地管理数据和内存。在本文中,我们将介绍C语言中的二级指针、一维数组与指针,并通过通俗易懂的语言和示例代码来帮助读者理解这些概念。 二级指针

    2024年02月05日
    浏览(48)
  • C语言问题 - 关于一维数组和二维数组用*a+i形式表达

    今天在编写程序时被一个语句搞懵了: 输出结果: 把我搞懵的是*(pa + k) = *(a + i) + j; (其实真的很简单的道理还一直在纠结。。。) 其实这句话就是指(对等号左右边语句分别解释): 每次循环 pa+k都会让pa指针都会向下移动一格,而加上星号*就是为了取指针所指的值,而

    2024年02月11日
    浏览(34)
  • Visual Studio 2022环境中C语言的使用——一维数组和二维数组

    我是荔园微风,作为一名在IT界整整25年的老兵,今天总结一下,Visual Studio 2022环境中,是如何使用C语言的数组的。 先说一维数组,直接上代码: 这里特别容易搞错的就是一维数组的初始化,方法有如下几种: 1.在定义数组时直接对数组元素赋初值,例如: int iArray[6]={1,3,

    2024年02月05日
    浏览(66)
  • C语言例题(二维数组)【转置矩阵】【成绩登记】【斐波那契】【简单矩阵查找】【螺旋数阵】【一维数组转二维数组】

    例一:转置矩阵 程序: 输出:通过b[j][i] = a[i][j];这一步实现了转置 进阶:用6个1~20内的随机数按行的顺序生成一个a[2][3]的矩阵,并输出它的转置矩阵 输出: 例2.登记某班三人的数学、英语两门课程的成绩。 分析:此类问题可以通过使用3个一维数组来解决,也可以通过使用

    2024年02月03日
    浏览(37)
  • 【C语言数组】一维数组,二维数组详解,数组传参,变长数组,这篇文章让你更全面的认识数组。

    前言: 大家好,我是 良辰丫 💞,今天带大家全面认识一下C语言里面的 数组 ,大家是不是满怀期待呢?嘿嘿嘿,别着急,我们往下看,感受C语言数组的魅力!!!💌💌💌 要么出众,要么出局。💝 乾坤未定,💟你我皆是黑马。 保存一组成绩的数据,数据多的时候难道要

    2024年01月19日
    浏览(45)
  • 多轴机械臂运动控制:4x4坐标变换矩阵该用C语言的二维数组还是一维数组?

            做多轴机械臂的运动控制,免不了要对4x4的坐标变换矩阵进行乘法,C语言中可以用二维数组或者一维数组来实现矩阵,下面来比较一下二维数组和一维数组的性能差异。         开发环境:Visual Studio 2022,分别在Debug和Release模式下测试函数Multi4x4和Multi16,Re

    2024年03月25日
    浏览(50)
  • 数据结构与算法—一维数组、二维数组、矩阵、顺序串、链接串的C++代码实现

    1、一维数组:ArrayOneD.h 数组这种数据结构可以看作线性表的推广。数组一般采用顺序存储的方法表示。 这是一个模板类 ArrayOneD 的实现,用于表示一维数组。它包括了 构造函数、拷贝构造函数、析构函数、重载下标运算符、重载赋值运算符、求数组长度、重新设置数组长度

    2024年02月07日
    浏览(50)
  • Java——一维数组和二维数组(主要详讲一维数组)

    目录 一维数组 创建,初始化,赋值 注意 一些数组的便捷使用方法 使用 .length得到数组长度 Arrays相关的使用 二维数组 文章某些地方会出现java与c语言的比较 文章内容参考韩顺平老师的课堂笔记 可以先创建再初始化,也可以创建的时候直接初始化。但是,如果选择先创建再

    2024年02月01日
    浏览(39)
  • 【PHP】二维数组转一维数组

    在 PHP 中,如果你想将一个二维数组转换为一维数组,你可以使用几种不同的方法。以下是一些常见的方法: array_column() 用于提取数组中的列,最为直接 array_map() 用于对数组中的每个元素应用回调函数,返回的是由回调函数的返回值组成的新数组。 以上任何一种方法都可以

    2024年02月04日
    浏览(53)
  • 【JavaSE】一维数组和二维数组详解

    欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 一维数组 基本语法 初始化 遍历和打印 数组是引用型变量 基本类型变量与引用类型变量的区别 null 数组传参和返回 总结 二维数组 基本语法 初始化 遍历和打印 数组:可以看成是相同类型元素的

    2024年04月09日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包