首页 > 其他分享 >c语言-数组(1)

c语言-数组(1)

时间:2024-07-24 20:00:53浏览次数:10  
标签:初始化 下标 语言 -- int 数组 长度

5. 数组(1)

  1. 数组的意义:保存多个具有相同数据类型的数据
    特点:
    (1)具有相同的数据类型。
    (2)数据的地址是连续的 

    alt text

  2. 数组的表现形式
    类型 标识符[长度];
  3. 数组的空间大小 

    alt text


    数组的空间大小 = 单个数据的空间大小 * 长度
    tip:已知数组table,求该数组的长度?
    int l = sizeof(table) / sizeof(table[0]);
  4. 数组的应用
    (1)数组类型变量
    变量的定义: 类型 标识符[长度] = 初始值;
    a) 标识符 --组成:字母、数字、下划线
    --不能以数字开头 --不能是关键字 --区分大小写
    --有意义

b) 长度 --在定义时必须提供,后期不可动态更改
--直接提供具体的数据 --int类型 --例如:int num[5] --5即为长度
--宏定义提供数据 --#define --替换 --建议使用 

alt text


--通过键盘输入数组长度 --scanf -- gcc编译器认可,其他编译器不认可。 

alt text


c) 初始化
-- 在定义变量的同时,进行初始化 --{}

alt text

tip:部分初始化int num[5]={1,2,3}; 后面没给初始值的初始化的值为0,而不是随机值,因为他受前面的影响。 --先定义变量,再进行初始化 --数组名[下标] --错误

alt text


--对数组空间逐个进行初始化 --数组下标
i. 下标:在定义数组变量时自动生成,默认从0开始,到数组长度-1结束。
ii. 通过下标获取数组元素空间 --数组名[下标]
 

alt text


iii. num[0] 等同于一个类型的空间变量
num[0] = 0 等同于 int a = 0;
--通过下标给数组元素赋值

alt text


--注:
(1)数组下标越界 --段错误(核心已转储)
 

alt text

 

alt text

 (2)数组元素变量的使用?
--输入,输出 -- for循环 --i表示数组下标进行操作数组元素

alt text

冒泡排序

alt text


外层循环控制轮数,内层循环控制次数。
外层循环N-1,内层循环N-1-i。

#include<stdio.h>

int main()
{
	int a[5]={12,35,8,17,20};
	printf("排序前:\n");
	for(int i=0;i<5;i++){
		printf("%d\t",a[i]);
	}
	printf("\n");
	int count=0;
	for(int i=0;i<5-1;i++){
		for(int j=0;j<5-i-1;j++){
		if(a[j+1]<a[j]){
			count++;
			int temp =a[j];
			a[j] = a[j+1];
			a[j+1] = temp;
			}
		}
	}
	printf("排序后:\n");
	for(int i=0;i<5;i++){
		printf("%d\t",a[i]);
	}
	printf("\n");
	printf("共比较了%d次\n",count);
	return 0;
}

tip:if里面统计的是交换次数,比较次数在内层循环里得到,count++

二维数组

-- 二维数据是数组类型的一维数组

alt text


-- 二维数组的定义: --类型 标识符[行长度][列长度] = 初始值
(1)类型、标识符、长度 --同一维数组
(2)初始化
--在定义二维数组变量的同时继续初始化 --{}
 

alt text


tip:int num5[][3] = {1,2,3,4,5}; --后面不够的补0;


--先定义二维数组,再继续初始化 --数组名[行下标][列下标]

alt text


二维数组的应用

  1. 输入输出 --数组名[行下标][列下标] --外层循环控制行,内层循环控制列。

alt text


tip:例题:将一个数组中的值按逆序重新存放。

int main()
{
	printf("请输入数组的长度\n");
	int n = 0;
	scanf("%d",&n);
	int a[n];
	printf("请输入n个数\n");
	for(int i=0;i<n;i++){
		scanf("%d",&a[i]);
	}
	for(int i=0;i<n/2;i++){
		int temp = a[i];
		a[i] = a[n-i-1];
		a[n-i-1] = temp;
	}
	printf("这些数按逆序重新存放为:");
	for(int i=0;i<n;i++)
	printf("%d\t",a[i]);
	printf("\n");
	return 0;
}

注:排序的时候范围是n/2,因为交换一次就相当于两个元素已经排序好了。

标签:初始化,下标,语言,--,int,数组,长度
From: https://blog.csdn.net/m0_71813740/article/details/140645516

相关文章

  • C语言 ——— 函数指针数组的讲解及其用法
    目录前言函数指针数组的定义函数指针数组的使用前言数组是存放一组相同类型数据的存储空间关于指针数组的知识请见:C语言———指针数组&指针数组模拟二维整型数组-CSDN博客那么要将多个函数的地址存储到数组中,这个数组该如何定义呢?函数指针数组的定义把多个函数......
  • c语言(7.24)
    今天学习了指针的两个作用#include<stdio.h>voidgetmaxandmin(intarr[],intlen,int*max,int*min);intmain(){ //指针作用2: //函数返回多个值 //练习: //定义一个函数,求数组的最大值和最小值,并进行返回 intarr[]={1,2,3,4,5,6,7,8,9}; intlen=sizeof......
  • 【C语言】动态内存管理详解!!!
    目录为什么存在动态内存分配?动态内存函数的介绍常见的动态内存错误几个经典的笔试题 C/C++程序的内存开辟柔性数组为什么存在动态内存分配?在动态内存函数之前,我们知道的内存开辟有两种。1. 在栈空间上开辟四个字节。intval=20;2. 在栈空间上开辟10个字节的......
  • 本地快速私有化部署和运行大语言模型
    ollama是一个快速部署和运行大语言模型的开源工具,https://ollama.com/。通过它可以在终端与大语言模型交互,而且安装非常的简单,支持非常多的模型,并且可以随意切换模型,支持模型地址:https://ollama.com/library如果你想使用LLM模型但是又不想暴露你的私人数据到公网,不放试......
  • 2个月搞定计算机二级C语言——真题(1)解析
    1.前言大家好,我是梁国庆。这段时间将持续发布计算机二级C语言真题的解析,想要同步练习,需要资源包的朋友可以跳转免费获取——《3个月搞定计算机二级C语言——准备工作》。现在恐怕要改为2个月搞定计算机二级C语言了,不过没有关系,干就完了!本篇博客将解析计算机二级C语言......
  • 二维数组的定义
    一、二维数组的定义类型名变量名[常量表达式][常量表达式] 这个方括号只是说明他的类型。二维数组类似一个表单如下图所示二、二维数组的引用数组名[下标][下标]第一个是行号,第二个是列号,超过所容纳的范围,会造成越界访问。三、二维数组的特点1、本质上有三个元素,......
  • Linux系统安装Cobol语言及IBM大型机模拟软件Hercules
     COBOL(CommonBusiness-OrientedLanguage)起源于50年代中期,是一种面向过程的高级程序设计语言,主要用于商业和数据处理领域。经过不断发展和标准化,已成为国际上应用最广泛的商业编程语言之一,在某red书上还有招聘COBOL程序员去日本的帖子,个人害怕噶腰子所以不推荐。COBOL语言具......
  • 33.【C语言】实践扫雷游戏
    预备知识:第13篇一维数组 第13.5篇二维数组第28篇库函数 第29篇自定义函数 第30篇函数补充0x1游戏的运行:1.随机布置雷2.排雷基本规则:点开一个格子后,显示1,对于9*9,代表以1为中心的去心九宫格内有一个雷,找到后标记,直到标完所有的雷,游戏结束;如果中途点中雷,游戏结束......
  • js-数组内置函数-filter、map、forEach、reduce
    1、过滤数组-filter筛选数组元素,并生成新数组//过滤出分数为60分以上的数据<script>constarr=[{'name':'张三','score':80},{'name':'张六','score':50},{'name':'李四','scor......
  • 【C语言】结构体详解 -《探索C语言的 “小宇宙” 》
    目录C语言结构体(`struct`)详解结构体概览表1.结构体的基本概念1.1结构体定义1.2结构体变量声明2.结构体成员的访问2.1使用点运算符(`.`)访问成员输出2.2使用箭头运算符(`->`)访问成员输出3.结构体的初始化3.1结构体初始化输出3.2使用指定初始化器输出4.结构......