C语言基本知识复习浓缩版:数组

server/2025/1/15 8:26:50/

所谓数组(Array),就是一系列数据的集合。这些数据具有相同的类型,并且在内存中挨着存放,彼此之间没有缝隙。换句话说,数组用来存放多份数据,但是它有两个要求:

  • 这些数据的类型必须相同;
  • 这些数据在内存中必须连续存储。

1、数组的概念和定义

  • 数组是一种数据结构,用于存储一组相同类型的数据
  • 数组中的元素在内存中是连续存放的。
  • 数组通过下标来访问元素,下标从0开始。

int arr[5]={1, 2, 3, 4, 5};

2、数组的声明和初始化


数组的声明


数组声明格式:数组类型 数组名[数组的大小]
数组的大小必须是正整数。
数组大小不能为负数,且数组一旦声明,大小就不能改变。

int a[10];                   合法,最创建的数组声明
int a[3+3];                 合法3+3的结果是一个确定的正整数
# define X 10 int a[X];    合法,X是一个符号常量。
int n=10, a[n];           不合法,n是一个变量

数组的初始化:


全部初始化:
int arr[5]={1 ,2 ,3 ,4, 5,};
部分初始化:
int arr[5]={1, 2};
没有初始化时,数组的默认值(通常为未定义)。

  • int a[5]={1, 2, 3, 4, 5};    合法,完全初始化
  • int a[5]={1, 2, 3};        合法,部分初始化
  • int a[]={1, 2, 3, 4, 5, 6};    合法,数组的大小由初始化元素个数决定
  • int a[5]=(1, 2, 3, 4, 5);    不合法,数组的大小由初始化完全初始化
  • int a[5]={1, 2, 3, 4, 5, 6};    不合法,初始化的元素个数大于数组本身大小。


真题


以下能对一维数组a进行初始化的语句是:


A、int a[5]=(0, 1, 2, 3, 4,);
B、int a(a)={};
C、int a[3]={0, 1 ,2};
D、int a{5}={10*1};
正确答案:C

c语言中对一维整形数组的正确定义为:


A、int a(10);        B、int n=10,a[10]
C、int n;a[n];        D、#define N 10
                 int a[N];
正确答案是:D

3、数组元素的访问

  • 使用下标访问数组中的元素:array[下标]。
  • 下标是从0开始,并且下标是一个整数。
  • 下标越界将导致未定义行为。

真题


已知:int a[10]; 则对a数组元素的正确引用是:


A、a[10]    B、a[3.5]    C、a(5)    D、a[0]
正确答案是:D

若有以下数组说明,则i=10;a[a[i]]元素数值是:


int a[12]={1, 4, 7, 10, 2, 5, 8, 11, 3, 6, 9, 12};
A、10    B、9    C、6    D、5
正确答案是:C

4、二维数组


二维数组可以看作是“数组的数组”,即一个包含多个一维数组的数组。
它用来表示矩阵或表格等二位数据。

二维数组的声明格式:数据类型 数据名[行数][列数];

二维数组的初始化

  • int arr[2][3]={{1, 2, 3}, {4, 5, 6}};        合法,第一行的元素是1,2,3,第二行的元素是4, 5, 6
  • int arr[2][3]={1, 2, 3,4, 5, 6};              合法,第一行的元素是1,2,3,第二行的元素是4, 5, 6
  • int arr[2][3]={1, 2, 3, 4};                     合法,第一行的元素是1,2,3,第二行的元素是4, 0, 0
  • int arr[][3]={1, 2, 3, 4};                       合法,行数可以根据初始化元素的个数推断出来
  • int arr[2][]={1, 2, 3, 4, 5};                   不合法,列数必须指定

真题


求一维数组a[10]中各元素的平均值,并输出小于平均值的元素。


假定数组内容为:1.2 7 5 1.8 1.6 0.8 4 1.0 6 2.2

#include <stdio.h>
int main()
{float a[10] = {1.2, 7, 5, 1.8, 1.6, 0.8, 4, 1.0, 6, 2.2};float sum = 0.0;float avg = 0.0;for (int i =0; i<10; i++){sum += a[i];}avg=sum /10;printf("avg= %f\n", avg);for (int i =0; i<10; i++){if (a[i] < avg){printf("%4.1f\n", a[i]);}}return 0;
}

输出:

avg= 3.060000
 1.2
 1.8
 1.6
 0.8
 1.0
 2.2


http://www.ppmy.cn/server/158180.html

相关文章

Linux物理地址到虚拟地址的映射

相关理论&#xff1a; Linux中用户空间是无法直操作寄存器的&#xff0c;需要先将寄存器对应的物理地址通过转换成虚拟地址然后在进行操作。 高性能处理器一般会提供一个内存管理单元&#xff08;MMU&#xff09;,该单元辅助操作系统进行内存管理&#xff0c;提供虚拟地址和物理…

网工考试——数据链路层、网络层、传输层

1、纠错和检错 基本概念&#xff1a;一个帧包含m个数据位&#xff08;报文&#xff09;和r个冗余位&#xff08;校验位&#xff09;&#xff0c;假设帧的总长度为n&#xff0c;则有nmr&#xff0c;包含数据和校验位的n位单元通常称为n位码字 海明码距&#xff1a;是两个码字中…

区块链-不可篡改

为什么区块链是不可纂改&#xff1f; 密码学哈希函数&#xff1a;每个区块都包含一个唯一的哈希值&#xff0c;这个哈希值是根据该区块内的所有交易数据以及其他信息&#xff08;如前一个区块的哈希值&#xff09;计算出来的。如果区块内的任何信息被更改&#xff0c;即使只是一…

口碑很好的国产LDO芯片,有哪些?

在几乎任何一个电路设计中&#xff0c;都可能会使用LDO&#xff08;低压差线性稳压器&#xff09;这个器件。 虽然LDO不是什么高性能的IC&#xff0c;但LDO芯片市场竞争异常激烈。最近几年&#xff0c;诞生了越来越多的精品国产LDO&#xff0c;让人看得眼花缭乱。 业内人士曾经…

【ROS2】URDF模型文件中Xacro宏语言详解

1、简介 URDF(Unified Robot Description Format)是ROS中用于描述机器人模型的一种XML文件格式; 而Xacro则是为了优化URDF文件的编写过程而引入的一种XML宏语言; Xacro提高了URDF文件的可读性和复用性,可以在URDF文件中使用变量、数学运算和宏定义等功能; 比如:连杆、关…

《软硬协同优化,解锁鸿蒙系统AI应用性能新高度》

在当今数字化时代&#xff0c;鸿蒙系统与人工智能的融合正逐渐成为科技领域的热门话题。如何通过软件和硬件协同优化&#xff0c;进一步提升鸿蒙系统中AI应用的整体性能&#xff0c;成为了开发者和技术爱好者们关注的焦点。 鸿蒙系统与AI应用的融合现状 鸿蒙系统以其独特的微…

python初体验: 处理excel数据

一. data.xlsx 二.python代码 import pandas as pd# 读取 Excel 文件 df pd.read_excel(./data.xlsx, sheet_nameSheet1, usecols[Name, Age, City])# 查看数据 print(df.head())# 筛选数据 df_filtered df[df[Age] > 30]# 添加新列 df_filtered[Salary] df_filtered[Ag…

windows 下npm 使用 n 切换node版本

windows 下npm 使用 n 切换node版本 下载使用查看当前的版本 下载 npm install -g n --force遇到问题注意点&#xff1a; 如果单纯的使用npm install -g n &#xff0c;没有加上–force 会报错【[npm]安装n模块报错notsup Unsupported platform】 使用 查看当前的版本 n -V…