C语言假期作业 DAY 08

选择题

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
字符串的结束标志是 '\0' ,而 '\0' 的 ASCII 值是 0 ,而 c[2] 被初始化为 0 ,就相当于是 '\0' ,故字符串打印的内容只有 "ab"

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

A: a[2][0]
B: a[2][3]
C: a[0][3]
D: a[1>2][1]

答案解析

正确答案: D
本题主要考虑数组越界访问的情况,二维数组的行和列都是从 0 开始的,对于 a 数组来说,行下标最大是 1 ,列下标最大是 2 , D 选项中1>2 表达式的值是 0 ,是正确的,其他选项行和列都可能存在越界, A 是行越界, B 是行和列都越界, C 是列越界。

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

A: char a[20]="abcdefg" ;
B: char a[]="x+y=5." ;
C: char a[15] ;
D: char a[10]='5' ;

答案解析

正确答案: D

D 中的 '5' 是一个字符常量,不能给字符型数组 a 初始化

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];

答案解析

正确答案: AC
A 选项:宏替换,没问题; B 选项:非法定义,一维数组必须定义数组元素个数; C 选项:字符 '0' ,转换成十进制为 48 ,所以该 选项最终为int num[48] ; D 选项:错误,数组定义下角标不能为变量,注: C99 标准中支持了使用变量,这里不做特殊考虑。

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

A: *(X[i]+j)
B: *(X+i)[j]
C: *(X+i+j)
D: *(*(X+i)+j)

答案解析

正确答案: BC
本题考查的是二维数组的元素访问, A 选项是 正确的, X[i] 就是第 i 行的数组名,数组名表示首元素的地址, X[i] 表示第 i 行 的第一个元素的地址,+j 后就是第 i 行下标为 j 的元素的地址,整体解引用就是 X[i][j] , A 正确。 B 选项因为 [] 的优先级高于 *,所以代码相当于 **((x+i)+j),X+i+j 后就越界了,并不代表 X[i][j], 所以错误。 C 选项也明显不对, X 是二维数组的数组 名,数组名相当于第一行的地址,X+i+j ,跳过了 i+j 行,就越界了, C 错误。 D 选项是标准的指针形式访问二位数组的一个元素。

编程题

1:HJ10 字符个数统计

字符个数统计_牛客题霸_牛客网 (nowcoder.com)

描述

编写一个函数,计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 ,包括 0 和 127 ),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次

例如,对于字符串 abaca 而言,有 a、b、c 三种不同的字符,因此输出 3 。

数据范围: 1 \le n \le 500 \1≤n≤500 

输入描述

输入一行没有空格的字符串。

输出描述

输出 输入字符串 中范围在(0~127,包括0和127)字符的种数。

示例1

输入:abc

输出:3

示例2

输入:aaa

输出:1

【答案解析】

这道题思路比较简单,因为题目圈定出现的字符都是 ascii 值小于 127 的字符,因此只需要定义一个标记数组大小为 127 ,然后将字符作为数组下标在数组中进行标记,若数组中没有标记过表示第一次出现,进行计数,否则表示重复 字符。
示例:查表法, "aca" ,首先把 a 字符 ( ascii 值为 97 ) 作为下标,将标记数组的第 97 位置 1 ,下次如果还有 a 字符 出现,到下标 'a' 或者 97 的位置一看是 1 就表示 a 已经统计过了。

#include <stdio.h> 
int main() 
{ char tmp[501] = {0};while(~scanf("%s", tmp)) { char table[128] = {0}, *ptr = tmp;int count = 0;while(*ptr != '\0') { if (table[*ptr] != 1){                  count++;       }table[*ptr++] = 1;}printf("%d\n", count);}return 0;
}

2:LeetCode169. 多数元素

169. 多数元素 - 力扣(LeetCode)

给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。

你可以假设数组是非空的,并且给定的数组总是存在多数元素。

示例 1

输入:[3,2,3]
输出:3

示例 2

输入:[2,2,1,1,1,2,2]
输出:2

进阶

尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题。

【答案解析】

一个数组中有一个数字出现次数大于 n/2 ,从第 0 个字符开始,假设它就是最多的那个数字,遇到相同的数字则计 数 +1 , 遇到不同的则计数 - 1 ,其实就是互相消耗,等到计数为 0 的时候,表示本次互拼完毕,从下一个字符重新开 始互拼,但是归根结底出现次数大于 n/2 的这个数字数量更多,因此也是最后保留的字符。

示例

 "23335" 首先从字符 2 开始计数 1 ,遇到 3 ,不同则 - 1 ,互拼消耗 重新从剩下的 "335" 开始的过程,这时 候保存的字符为 3 ,遇到 3 则计数 +1 , 遇到 5 则计数 - 1 ,在计数不为 0 时,走到末尾保存的字符就是个数超过 n/2 的字符

int majorityElement(int* nums, int numsSize)
{int count = 1; int tmp = nums[0];for (int i = 1; i < numsSize; i++){if (tmp == nums[i]){              count++;}else{            count--;if (count == 0) tmp = nums[i + 1];}}
}

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

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

相关文章

行星碰撞(力扣)栈 JAVA

给定一个整数数组 asteroids&#xff0c;表示在同一行的行星。 对于数组中的每一个元素&#xff0c;其绝对值表示行星的大小&#xff0c;正负表示行星的移动方向&#xff08;正表示向右移动&#xff0c;负表示向左移动&#xff09;。每一颗行星以相同的速度移动。 找出碰撞后剩…

[SQL挖掘机] - 窗口函数介绍

介绍: 窗口函数也称为 OLAP 函数。OLAP 是 OnLine AnalyticalProcessing 的简称&#xff0c;意思是对数据库数据进行实时分析处理。窗口函数是一种用于执行聚合计算和排序操作的功能强大的sql函数。它们可以在查询结果集中创建一个窗口&#xff08;window&#xff09;&#xf…

unity进阶--xml的使用学习笔记

文章目录 xml实例解析方法一解析方法二 xml-path创建xml文档 xml实例 解析方法一 解析方法二 xml-path 创建xml文档

C++数据结构笔记(11)二叉树的#号创建法及计算叶子节点数

首先分享一段计算叶子节点数目的代码&#xff0c;如下图&#xff1a; 不难发现&#xff0c;上面的二叉树叶子节点数目为4。我们可以采用递归的方式&#xff0c;每当一个结点既没有左结点又没有右节点时&#xff0c;即可算为一个叶子结点。 int num0; //全局变量&#xff0c;代…

MyBatis-入门-快速入门程序

本次使用MyBatis框架是基于SpringBoot框架进行的&#xff0c;在IDEA中创建一个SpringBBot工程&#xff0c;根据自己的需求选择对应的依赖即可 快速入门 需求&#xff1a;使用MyBatis查询所有用户数据步骤&#xff1a; 准备工作&#xff08;创建Spring Boot工程、数据库user表…

【误差自适应跟踪方法AUV】自适应跟踪(EAT)方法研究(Matlab代码Simulin实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f308;4 Matlab代码、Simulink模型、文献 &#x1f4a5;1 概述 摘要&#xff1a;跟踪问题&#xff08;即如何遵循先前记忆的路径&#xff09;是移动机器人中最重要的问题之一。根据机器人状…

机器学习深度学习——线性回归的从零开始实现

虽然现在的深度学习框架几乎可以自动化实现下面的工作&#xff0c;但从零开始实现可以更了解工作原理&#xff0c;方便我们自定义模型、自定义层或自定义损失函数。 import random import torch from d2l import torch as d2l线性回归的从零开始实现 生成数据集读取数据集初始…

repvit 测试

目录 依赖项:timm库。 cuda版1060显卡运行时间 14ms左右 高通不支持gelu激活函数 需要的 SqueezeExcite代码,不是SqueezeExcite_o

windows默认编码格式修改

1.命令提示符界面输入 chcp 936 对应 GBK 65001 对应 UTF-8 2.临时更改编码格式 chcp 936(或65001) 3.永久更改编码格式 依次开控制面板->时钟和区域->区域->管理->更改系统区域设置&#xff0c;然后按下图所示&#xff0c;勾选使用UTF-8语言支持。然后重启电脑。此…

防止连点..

1.连点js文件 let timer; letflag /*** 节流原理&#xff1a;在一定时间内&#xff0c;只能触发一次** param {Function} func 要执行的回调函数* param {Number} wait 延时的时间* param {Boolean} immediate 是否立即执行* return null*/ function throttle(func, wait 500…

【数字IC基础】竞争与冒险

竞争-冒险 1. 基本概念2. 冒险的分类3. 静态冒险产生的判断4. 毛刺的消除使用同步电路使用格雷码增加滤波电容增加冗余项&#xff0c;消除逻辑冒险引入选通脉冲 1. 基本概念 示例一&#xff1a; 如上图所示的这个电路&#xff0c;使用了两个逻辑门&#xff0c;一个非门和一个与…

【javascript】refreshTime对象包括年月日时分秒;把一个时间戳转化为refreshTime对象并分别赋值

要将一个时间戳转换为包含年月日时分秒的 refreshTime 对象&#xff0c;您可以使用 JavaScript 的 Date 对象和其相应的方法。 以下是一个示例代码&#xff1a; function convertTimestampToRefreshTime(timestamp) {const date new Date(timestamp);const refreshTime {ye…

Windows 找不到文件‘chrome‘。请确定文件名是否正确后,再试一次

爱像时间&#xff0c;永恒不变而又短暂&#xff1b;爱像流水&#xff0c;浩瀚壮阔却又普普通通。 Windows 找不到文件chrome。请确定文件名是否正确后&#xff0c;再试一次 如果 Windows 提示找不到文件 "chrome"&#xff0c;可能是由于以下几种原因导致的&#xff1…

selenium交互代码

一&#xff1a;selenium交互 用selenium打开网页后&#xff0c;也可以做一系列真人的操作&#xff0c;也就是利用selenium和浏览器进行交互&#xff0c;可利用以下几个函数进行操作&#xff1a; input.send_keys() 传递输入内容给某输入框button.click() 点击某按钮browser.e…

机器学习深度学习——模型选择、欠拟合和过拟合

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——多层感知机的简洁实现 &#x1f4da;订阅专栏&#xff1a;机器学习&&深度学习 希望文章对你们有…

【GitOps系列】使用 ArgoCD 快速打造GitOps工作流

文章目录 ArgoCD简介ArgoCD安装访问ArgoCDGitOps 工作流总览创建 ArgoCD 应用检查 ArgoCD 同步状态访问应用 连接 GitOps 工作流体验 GitOps 工作流生产建议1&#xff09;修改默认密码2&#xff09;配置 Ingress 和 TLS3&#xff09;使用 Webhook 触发 ArgoCD4&#xff09;将源…

Linux时间体系与LinuxPTP

Linux时间体系 Linux 需要提供“知道当前时间、计算时间长度、定时提醒”这三种功能。 其中知道当前时间和计算时间长度在某种程度上可以互相转换。即以UNIX Epoch计时开始可以知道当前时间。 一般硬件可以提供下列的硬件时钟&#xff1a; RTC 【真实时钟】 对于PC而言&…

Android usb host模式通信示例

当使用Android设备作为USB主机时&#xff0c;可以使用Android提供的USB API来进行USB通信。下面是一个简单的Android USB通信的示例。在这个示例中&#xff0c;我们将发送一条消息到连接的USB设备并从USB设备接收响应。 首先&#xff0c;在AndroidManifest.xml文件中添加以下权…

DoIP学习笔记系列:(二)VN5620 DoIP测试配置实践笔记

文章目录 1. 添加.cdd2. CAPL中调用接口发送DoIP请求3. “Ethernet Packet Builder”的妙用4. CANoe也可以做交互界面在进行测试前,先检查车载以太网硬件连线是否正确,需要注意连接两端的Master、Slave,100M、1000M等基本情况,在配置VN5620的时候就可以灵活处理了。成功安装…

数学建模-MATLAB三维作图

导出图片用无压缩tif会更清晰 帮助文档&#xff1a;doc 函数名 matlab代码导出为PDF 新建实时脚本或右键文件转换为实时脚本实时编辑器-全部运行-内嵌显示保存为PDF