C语言--每日五道选择题--Day9

第一题

1、如下程序的运行结果是( )

char c[5]={'a', 'b', '\0', 'c', '\0'};
printf("%s", c);

A: 'a' 'b' 

B: ab\0c\0 

C: ab c 

D: ab

答案及解析 D

        首先这是一个字符数组,我们要知道无论是字符串还是字符数组,它们遇到ASCII值为0就会停止打印,而‘\0’的ASCII值为0。

        然后我们以%s的格式打印这个字符数组,首先是依次输出这个字符数组的内容的,其次就是不会将里面的内容分开,最后遇到\0停止打印,故选D。

第二题

2、若有定义: int a[2][3]; ,以下选项中对 a 数组元素正确引用的是( )

A: a[2][0] 

B: a[2][3] 

C: a[0][3] 

D: a[1>2][1]

答案及解析 D

我们要明确,引用数组和定义数组的' [ ] '的这个符号的意义是不一样的;

在定义一个数组的时候,a[n] 这里是表示a数组有n个元素;

而在引用数组的时候a[1] 的1是表示数组的下标,并且数组下标从0开始,数组最后一个元素的下标是n-1;

我们知道这些之后就看选项吧!

A,B,C明显的数组越界,因为下标是2,还有3了

D :数组下标可以用表达式的,a[1 > 2] [1] 可以看作 a[0] [1] 。1 > 2是假为0;

第三题

3、在下面的字符数组定义中,哪一个有语法错误( )

A: char a[20]="abcdefg"; 

B: char a[]="x+y=5."; 

C: char a[15]; 

D: char a[10]='5';

答案及解析 D

本题考查的是数组的定义和初始化;

A:正确,字符数组可以这样定义,这是字符串的写法,“abcdefg”末尾默认有个\0,作为字符串的终点;

B:正确,虽然字符数组没有指定元素个数,但是后面初始化了,所以元素个数就是初始化的字符串的元素个数;

C:正确,定义一个未初始化的字符数组;

D:错误,字符数组的初始化,不可以是单个字符;

第四题

4、下列定义数组的语句中正确的是( )【多选】

A:

#define size 10
char str1[size], str2[size+2];

B: char str[]; 

C: int num['10']; 

D: int n=5; int a[n][n+2];

答案及解析 A C

本题仍然考察数组的定义;

A:正确,可以使用宏来作为数组的个数,也可以使用表达式;

B:错误,不初始化数组,必须定义数组个数;

C:正确,定义一个整型数组,数组个数为‘10’,我们要记住,每个字符都有对应的ASCII值,所以也可以使用单个字符来定义数组个数

D:在C99中支持了用变量来定义数组个数,但是在这里不做参考,你知道可以就行

ASCII值表:

第五题

5、已知 i,j 都是整型变量,下列表达式中,与下标引用 X[ i ] [ j ] 不等效的是【多选】

A: *(X[ i ]+j) 

B: *(X+i)[ j ] 

C: *(X+i+j) 

D: *(*(X+i)+j)

答案及解析 B C

这里考察的是指针的解引用和数组之间的关系

先知道这一个概念:

我们的二维数组,其实是一维数组的数组,有如下图解:

当我们真正弄懂这个概念,我们做这类题目才会快;

我们来看,一个二维数组,有三行三列,其实就是三个包含了三个元素的一维数组的数组

arr[0]是一个一维数组,我们要访问arr[0]的数组元素的时候,不就是在访问arr这个二维数组第一行的元素吗?

访问arr[0]的第一个元素,就是在访问arr这个数组的第一行第一列的元素: arr[0][0];

那我们把思维放在arr[0]是一维数组的身上,访问这个数组的第一个元素就是:arr[0][0]

我们就可以发现,arr[0]其实就相当于一维数组的数组名,要访问第一行的元素就是在数组名后面加下标引用操作符;a[0][0];a[1][0]......

所以我们来看选项:

A:*(x[i] + j),这里的x[i]相当于的是二维数组第i行的地址+j就相当于找第i行的第j个元素的地址,再解引用就找到了x[i][j]

B:这里要注意的是操作符优先级的问题,下标引用操作符是的优先级是高于解引用的,相当于的是**((X + i) + j),数组名相当于第一行的地址,➕了i+j个,跳过了i+j行,越界了;

C:在二维数组中,数组的元素名代表的是数组第一行的地址,所以对数组的首元素相加减,跳的位置是一个行的距离,很明显,这里是X+i+j,跳过了i+j行,越界了;

D:先找到i行,解引用,再找到j个元素,解引用;得到了x[i][j]

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

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

相关文章

分布式锁介绍

为什么需要分布式锁 在单机部署的系统中,使用线程锁来解决高并发的问题,多线程访问共享变量的问题达到数据一致性,如使用synchornized、ReentrantLock等。 但是在后端集群部署的系统中,程序在不同的JVM虚拟机中运行,且…

人工智能与充电技术:携手共创智能充电新时代

人工智能与充电技术:携手共创智能充电新时代 摘要:本文探讨了人工智能与充电技术的结合及其在未来充电设施领域的应用。通过分析智能充电系统的技术原理、优势以及挑战,本文展望了由人工智能驱动的充电技术为未来电动交通带来的巨大变革与机…

理解快速排序

理解快速排序 首先了解以下快速排序 快速排序(QuickSort)是一种常用的排序算法,属于比较排序算法的一种。它是由英国计算机科学家Tony Hoare于1960年提出的,是一种分而治之(divide and conquer)的算法。 …

基础课1——智能客服的定义

1.介绍 智能客服是一种采用人工智能技术的客户服务方式,它通过语音识别、自然语言处理、语义理解等技术,实现了与客户的自动交互。智能客服可以提供客户24小时不间断的服务,帮助客户快速解决问题,提高客户满意度。智能客服的应用…

vue day1(主要是指令)

1、引包 或者:cdn网址 2、创建实例,初始化渲染 3、插值表达式 {{}} 表达式:可以被求值的代码 4、响应式数据:数据发生变化,视图自动更新(底层是dom操作) data中数据会被添加到实例上&#x…

vue:如何把后端传过来的数组的其中一个对象加入新的属性

加入我们是更改数组中的第一个对象&#xff0c;在vue中可以使用$set方法将属性插入到第一个对象中作为属性。 Script部分&#xff1a; <script>export default {data() {return {boxes: [//模拟后端传过来的数组{id:1,name:张三},{id:2,name:李四},{id:3,name:王五},{i…

【Linux】Centos7 shell实现MySQL5.7 tar 一键安装

&#x1f984; 个人主页——&#x1f390;个人主页 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#x1f341; 感谢点赞和关注 &#xff0c;每天进步一点点&#xff01;加油&#xff01;&…

NFS服务器的搭建

架设一台NFS服务器&#xff0c;并按照以下要求配置 准备阶段&#xff1a;准备两台虚拟机&#xff0c;一台作为服务端&#xff0c;一台作为客户端 服务端&#xff08;Server&#xff09;&#xff1a;192.168.75.139 客户端&#xff08;Client&#xff09;:192.168.75.160 两…

Windows配置IP-SAN(iSCSI)

之前写了《Linux配置IP-SAN&#xff08;iSCSI&#xff09;》&#xff0c;现在简单记录Windows配置IP-SAN&#xff08;iSCSI&#xff09;&#xff0c;基本过程都是一样的。一些原理请参考《Linux配置IP-SAN&#xff08;iSCSI&#xff09;》&#xff0c;更详细一些。 目录 一、确…

开启学历新征程,电大搜题助您轻松获取知识

作为一名电大学者&#xff0c;有肩负着传递真实信息、宣传正面价值的使命&#xff0c;而今天我要向您介绍的是一款非常实用的学习工具——电大搜题微信公众号。通过该平台&#xff0c;您可以获得更多关于浙江开放大学和广播电视大学的学习资源&#xff0c;助您在学习和工作上取…

《未来之路:技术探索与梦想的追逐》

创作纪念日 日期&#xff1a;2023年07月05日文章标题&#xff1a;《从零开始-与大语言模型对话学技术-gradio篇&#xff08;1&#xff09;》成为创作者第128天 在这个平凡的一天&#xff0c;我撰写了自己的第一篇技术博客&#xff0c;题为《从零开始-与大语言模型对话学技术-…

【leetcode】8.字符串转换整数

题目 请你来实现一个 myAtoi(string s) 函数&#xff0c;使其能将字符串转换成一个 32 位有符号整数&#xff08;类似 C/C 中的 atoi 函数&#xff09;。 函数 myAtoi(string s) 的算法如下&#xff1a; 读入字符串并丢弃无用的前导空格 检查下一个字符&#xff08;假设还未…