【C语言】数组相关选择题

目录

前言

题目一:

题目二:

题目三:

题目四:

题目五:

题目六:

题目七:

题目八:

题目九:

题目十:


前言

一些数组选择题


题目一:

关于数组描述错误的是:()

A .数组是一组相同类型元素的集合

B .数组的下标是从1开始的

C .数组的下标是从0开始

D .数组如果初始化,可以不指定数组的大小

选择B。

讲解:数组下标是从0开始。


题目二:

C语言中下面哪个数组的创建错误的:( )

A .int arr[10] = {0}

B .int n = 10; int arr[n] ={0}

C .int arr[] = {1,2,3,4,5,6,7,8,9,0}

D .char ch[10] = "hello bit"

选择B。

讲解:数组[]中存放的应为整型常量,而int n = 10为变量。在C99中,虽然支持变长数组,在数组定义时用变量作为数据大小,但变长数组不能初始化,而B选项数组初始化了。


题目三:

关于一维数组初始化,下面哪个定义是错误的?( )

A .int arr[10] = {1,2,3,4,5,6};

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

C .int arr[] = (1,2,3,4,5,6);

D .int arr[10] = {0};

选择C。

讲解:

  • 选项A是正确的。属于不完全初始化,未初始化部分以0表示。
  • 选项B是正确的。一维数组可以省略数组大小,即[]里的东西,会根据初始化的元素个数确定大小,但需要初始化。
  • 选项C错误。在数组初始化中,需要用{}进行包裹元素。
  • 选项D是正确的。这是一种常见的初始化方式,将数组元素全部初始化为0。

题目四:

以下能对二维数组a进行正确初始化的语句是:( )

A .int a[2][]={{0,1,2},{3,4,5}};

B .int a[][3]={{0,1,2},{3,4,5}};

C .int a[2][4]={{0,1,2},{3,4},{5}};

D .int a[][3]={{0,,2},{},{3,4,5}};

选择B。

讲解:

  • 选项A错误。二维数组中,可以省略行,但不能省略列,因为可以数组时连续存储的,可以通过列来确定数组大小,但需要初始化。
  • 选项B是正确的。二维数组可以省略行,选项中以3个元素一组,用{}包裹起来,其意思是一共有两行,每一行有3个元素。
  • 选项C错误。当已知道二维数组的行和列时,有两种初始化的方式:第一种跟一维数组一样,用{}将所有元素包裹起来;第二种外层一个{}包裹,内层根据行数,决定用几个{}包裹,内层的每一个{}里包裹的是每列的元素个数,如不够列数,则以0替代。选项C中用了第二种方式,但内层{}有3个,数组的行数为2,因此这是不符合语法的。
  • 选项D正确。内层有3个{},那就给数组的行分配为3,因为列数为3,则每个{}里的元素为3,不足3的则以0替代。

题目五:

定义了一维 int 型数组 a[10] 后,下面错误的引用是:( )

A .a[0] = 1;

B .a[0] = 5*2;

C .a[10] = 2;

D .a[1] = a[2] * a[0];

选择C。

讲解:

  • 选项A正确。数组下标从0开始,到n-1结束,给下标为0的位置赋值是可以的。
  • 选项B正确。赋值语句是从右向左执行的,会先计算完5*2表达式的结果,赋给下标为0的元素。
  • 选项C是错误的。数组的元素个数为10个,那末尾元素的下标为9,这种属于越界访问了。
  • 选项D正确。语句会先计算出a[2] * a[0]后,赋值个下标为1的元素。

题目六:

若定义int a[2][3]={1,2,3,4,5,6};则值为4的数组元素是( )

A .a[0][0]

B .a[1][0]

C .a[1][1]

D .a[2][1]

选择B.

讲解:

  • 选项A错误。已知二维数组的行和列,则会自动为{}里的元素进行划分,等价于{{1,2,3}, {4,5,6}},因此a[0][0]为第一行的第一个元素。
  • 选项B正确。查找值为4的元素,则该元素在第二行的第一个,那就是[1][0]。
  • 选项C错误。a[1][1]的元素为5。
  • 选项D错误。当访问行数2的下标时,属于越界访问。

题目七:

下面代码的结果是:( )

A .4

B .16

C .20

D .5

#include <stdio.h>
int main()
{int arr[] = {1,2,(3,4),5};printf("%d\n", sizeof(arr));return 0;
}

选择B。

讲解·:

  • 选项A错误。sizeof是单目操作符,计算元素的大小,单位是字节,在该题中,sizeof(arr)计算的是arr数组的大小,arr数组有4个元素,下标2的元素是一个逗号表达式的值,逗号表达式的结果是最后一个元素,选项A的结果为4是不正确的。
  • 选项B正确。数组名arr在ssizeof中时,表示整个数组大小,即字节大小,arr数组的大小是4,并且这是int形的数组,4字节,因此4*4为16字节。
  • 选项C错误。
  • 选项D错误。

题目八:

下面代码的结果是:( )

A .10 9

B .9 9

C .10 10

D .9 10

#include <stdio.h>
int main()
{char str[] = "hello bit";printf("%d %d\n", sizeof(str), strlen(str));return 0;
}

选择A。

讲解:

  • 选项A正确。sizeof为单目操作符,计算元素字节大小; strlen是库函数,计算字符串长度,遇到'\0'结束。对于字符数组,省略了数组大小,并且用双引号进行初始化时,末尾会隐藏一个\0,但会算作数组的大小,因此sizeof时为10字节,strlen计算\0之前的字符个数,则为9.
  • 选项B错误。
  • 选项C错误。
  • 选项D错误。

题目九:

以下说法正确的是( )

A .数组acX和数组acY等价

B .数组acX和数组acY的长度相同

C .sizeof(acX)>sizeof (acY)

D .strlen (acX)>strlen (acY)

char acX[] = "abcdefg";
char acY[] = { 'a','b','c','d','e','f','g'};

选择C。

讲解:

  • 选项A错误。在字符数组中,省略数组大小,初始化有两种方式,一种为用双引号包裹元素,末尾会隐藏\0; 一种是用{}包裹字符。因此是不等价的。
  • 选项B错误。acX的初始化方式是用双引号包裹,末尾会隐藏一个\0,则数组大小比实际字符个数多一个。acY的初始化方式是用{}包裹字符,{}里的字符个数就是数组大小。因此两个数组的长度不相同。
  • 选项C正确。acX数组末尾隐藏\0,acY没有,因此sizeof时,acX会算上\0的字节。
  • 选项D错误。strlen库函数是计算\0之前的字符个数,遇到\0停止,acY用双引号的方式末尾隐藏\0,acY末尾没有\0,因此strlen两个数组时,acX数组能准确计算出数组的元素个数,但acY因为没有\0,则strlen会一直计算,直到遇到\0,因此acY返回的是一个随机数,但肯定比acX大。

题目十:

关于一维数组描述不正确的是:( )

A .数组的下标是从0开始的

B .数组在内存中是连续存放的

C .数组名表示首元素的地址

D .随着数组下标的由小到大,地址由高到低

选择D。

讲解:

  • 选项A正确。数组下标从0开始,数组大小-1结束。
  • 选项B正确。数组在内存中是连续存储的,因此数组经常可以用指针来表示,可以通过指针加减操作访问连续地址。
  • 选项C正确。数组名正常情况是表示首元素地址的,但有两个例外:第一个为sizeof(数组名)时,此时数组名表示整个数组的字节大小;第二个为&数组名,此时表示整个数组的地址,通过加操作,会跳过整个数组字节个数的位置。
  • 选项D错误。数组随着下标从小到大,地址是由低到高的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/1092.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java程序实现多语言资源JSON文件生成

你好呀&#xff0c;我是小邹。 在现代软件开发中&#xff0c;实现应用程序的多语言支持是一项基本需求&#xff0c;以适应全球用户的语言环境。本文将介绍一段Java代码&#xff0c;其主要功能是生成一个特定格式的JSON文件&#xff0c;用于存储和管理中英文双语对照的键值对&a…

Claude 3 Opus 效果是否真的可以超过GPT-4?

实测,不仅是超过,而且我个人感觉这个差距甚至大于GPT3.5到GPT4的距离. claude3在长篇理学论文的解析能力是非常显著的,可以扩展补完作者省略的大量运用高等数学,复变函数以及更多数理方法的计算过程,并且将中间过程补完的非常完美.不会漏符号,错符号,偏差数值之类的问题.工科许…

ModuleNotFoundError: No module named ‘cv2‘

python运行到下面这一句“import cv2”时报错&#xff1a; >>> import cv2 Traceback (most recent call last):File "<stdin>", line 1, in <module> ModuleNotFoundError: No module named cv2 解决方法&#xff1a; 安装扩展包&#xff0…

基于K-prototype算法聚类

k-prototype聚类是一种用于混合数据类型聚类的算法&#xff0c;由Jain和Dubes在1988年提出。它主要用于同时包含连续属性和离散属性的数据集。k-prototype算法可以看作是k-means算法的扩展&#xff0c;它将k-means算法的思想应用于混合数据类型&#xff0c;通过为连续属性和离散…

ubuntu在xshell中使用快捷方式操作命令,减少命令行的数入量

第一步 第二步 然后无脑确定 第三步 在xshell的显示方式 方式一 这样就会在每个窗格中进行显示 方式二 效果显示–> 这种窗格的显示是全局的 然后你双击这个process就会自动把命令打在命令行上&#xff0c;减少你的输入量

Oracle数据库Bug:相关子查询多层嵌套报错:标识符无效

Oracle Bug? 一、案例描述二、解决方案<一>、升级版本<二>、改写语句 一、案例描述 在Mysql中常常有如下写法用相关子查询 order by desc limit 1来完成需求 select code,date,(select value from test t1 where t.code t1.code and t1.date between date_su…

【Gradle如何安装配置及使用的教程】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

新型大数据架构之湖仓一体(Lakehouse)架构特性说明——Lakehouse 架构(一)

文章目录 为什么需要新的数据架构&#xff1f;湖仓一体&#xff08;Lakehouse&#xff09;——新的大数据架构模式同时具备数仓与数据湖的优点湖仓一体架构存储层计算层 湖仓一体特性单一存储拥有数据仓库的查询性能存算分离开放式架构支持各种数据源类型支持各种使用方式架构简…

递归求阶乘和(不熟悉)

本题要求实现一个计算非负整数阶乘的简单函数&#xff0c;并利用该函数求 1!2!3!...n! 的值。 函数接口定义&#xff1a; double fact( int n ); double factsum( int n ); 函数fact应返回n的阶乘&#xff0c;建议用递归实现。函数factsum应返回 1!2!...n! 的值。题目保证输…

快速访问github

修改本地hosts文件 GitHub访问慢的原因在于域名解析&#xff0c;通过修改本地的hosts文件&#xff0c;将远程DNS解析改为本地DNS解析。 fang 步骤1&#xff1a;打开hosts文件&#xff08;没有就创建&#xff09; host所在位置&#xff1a; C:\Windows\System32\drivers\etc…

1031:反向输出一个三位数

#include<bits/stdc.h> using namespace std; int main() {int a;cin>>a;cout<<a%10;cout<<a/10%10;cout<<a/100%10;return 0; } 时间限制: 1000 ms 内存限制: 65536 KB 提交数:146171 通过数: 89399 【题目描述】 将一个三位数反向…

linux@内核@内核版本发展@镜像文件查看内核

文章目录 linux内核介绍简介小结 linux发行版和内核各个linux发行版和内核的关系内核更新追踪GAHWE版的内核 内核版本查看&#x1f60a;linux当前系统内核查看未安装时查看网络搜索内核版本号挂载镜像查看虚拟机启动镜像体验版查看内核版本 linux(内核)版本演进&#x1f60a;相…

python_列表和元组

介绍 列表&#xff08;List&#xff09;和元组&#xff08;Tuple&#xff09;是Python中两种不同的数据结构&#xff0c;它们都可以用来存储一系列的元素。下面是它们的主要特点和区别&#xff1a; 列表&#xff08;List&#xff09; 可变性&#xff1a;列表是可变的&…

【c基础】文件操作

1.fopen和fclose函数 函数原型 FILE *fopen(const char *path, const char *mode); 参数解释&#xff1a; 返回值&#xff1a;fopen打开成功&#xff0c;则返回有效file的有效地址&#xff0c;失败返回NULL。path是文件路径&#xff0c;可以相对路径&#xff0c;可以绝对路径…

C# 将 TextBox 绑定为 KindEditor 富文本

目录 关于 KindEditor 绑定设计 部署 KindEditor 实现代码 小结 关于 KindEditor KindEditor 基于JavaScript 编写&#xff0c;可以与众多WEB应用程序结合。KindEditor 依靠出色的用户体验和领先的技术提供富文本编辑功能&#xff0c;是一款非常受欢迎的HTML在线编辑器。…

400电话如何对接配置SIP

400电话对接配置SIP的基本步骤 要配置400电话对接SIP&#xff0c;通常需要遵循以下基本步骤&#xff1a; 注册和认证&#xff1a;首先需要在相应的云通信平台上注册账号&#xff0c;并进行企业实名认证。 开通语音服务&#xff1a;在通过认证后&#xff0c;需要开通语音服务&…

(007)Blender 根据顶点组分离模型

1.选中模型&#xff0c;并且进入【3D视图】【编辑模式】&#xff1a; 2.选择顶点组&#xff1a; 3.分离选中项&#xff1a;

【经验总结】Jupyter 配置内核

1. 背景描述 使用 国家超算互联网中心 的服务器&#xff0c;创建 jupyterlab 容器&#xff0c;想在之前 conda 创建的环境中运行&#xff0c;可是不行&#xff0c;进入容器就直接进入 jupyterlab 2. 解决方法 配置内核 2.1 激活环境 conda activate peft2.2 安装内核 pip…

易保全网络赋强公证系统,前置预防、快速化解债权纠纷

网络赋强公证是一种创新的法律服务模式&#xff0c;为金融机构和债权人提供了一种便捷、高效的债权保障方式。既可以加大对违约方的司法震慑力&#xff0c;又能降低维权方实现债权的风险&#xff0c;且执行时间更快&#xff0c;债权周期更短&#xff0c;诉讼费用更低&#xff0…

Oracle函数

Oracle 函数 一、SQL函数分类 二、单行函数字符函数数字函数日期函数转换函数to_charto_numberto_date 其它函数单行函数嵌套 三、组函数数据分组创建分组过滤分组&#xff08;having子句&#xff09;分组和排序 Selecct子句顺序 一、SQL函数 函数一般是在数据上执行的&#x…