C语言:选择+编程(每日一练Day8)

目录

选择题: 

题一:

题二:

题三:

题四:

题五:

编程题:

题一:字符个数统计

思路一:

题二:多数元素

思路一: 

本人实力有限可能对一些地方解释和理解的不够清晰,可以自己尝试读代码,或者评论区指出错误,望海涵!

感谢大佬们的一键三连! 感谢大佬们的一键三连! 感谢大佬们的一键三连!


选择题: 

题一:

1、如下程序的运行结果是( )
char c[5]={'a', 'b', '\0', 'c', '\0'};
printf("%s", c);

A: 'a' 'b'    B: ab\0c\0    C: ab c    D: ab

答案解析:

        字符串的结束标志是'\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]

答案解析:

        本题主要考虑数组越界访问的情况,二维数组的行和列都是从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中的'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];

答案解析:

        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)

答案解析:

        本题考查的是二维数组的元素访问,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选项是标准的指针形式访问二位数组的一个元素。

编程题:

题一:字符个数统计

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

示例:

   输入:

   abc

   输出:

   3

思路一:

排序记录法:

        第一步:创建足够大小的数组arr,输入数组的元素,计算数组长度sz,通过my_string函数传参计算;

        第二步:在函数中将数组按升序排序以及记录数的定义count

        第三步:遍历数组:确保唯一性当数组为空或没有记录相同的字符时放入数组,每次记录完记录数都+1;

        第四步:将记录数count返回,打印。

#include <stdio.h>
#include <string.h>
#include <assert.h>
#include <stdlib.h>
//升序排列
int my_cmp(const void* p1,const void* p2)
{return strcmp((char*)p1,(char*)p2);
}
//计算字符个数函数
int my_string(char* arr,int sz)
{assert(arr);//升序排列qsort(arr,sz,sizeof(arr[0]),my_cmp);char sum[500]= {0};int count = 0;//遍历数组for(int i = 0;i < sz;i++ ){//当数组为空或没有记录相同的字符时放入数组if(count == 0 || arr[i] != sum[count-1]){sum[count++] = arr[i];}}return count;
}
int main() 
{char arr[500] ={0};scanf("%s",&arr);//就是数组长度int sz = strlen(arr);//记录不同个数int num = my_string(arr,sz);printf("%d\n",num);return 0;
}


题二:多数元素

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

思路一: 

轮番比较:

        第一步:定义记录数count比较数k,题目返回条件

        第二步:数组num按升序排列

        第三步:遍历数组:先判断k与上一个k值是否相同不相同则开始下一个数的记录;相同则记录数+1;当满足题目返回条件时退出。

//比较函数升序
int my_cmp(const void* p1,const void* p2)
{return *(int*)p1 - *(int*)p2;
}
int majorityElement(int* nums, int numsSize)
{int num = numsSize/2;int count = 0;int k = -1;//升序排序qsort(nums,numsSize,sizeof(nums[0]),my_cmp);//遍历数组for(int i = 0;i < numsSize;i++){//与k不相同就重新开始记录if(k != nums[i]){k = nums[i];count = 0;}//相同记录+1if(nums[i] == k){count++;}//达到要求返回if(count > num){return k;}}return 0;
}

本人实力有限可能对一些地方解释和理解的不够清晰,可以自己尝试读代码,或者评论区指出错误,望海涵!

感谢大佬们的一键三连! 感谢大佬们的一键三连! 感谢大佬们的一键三连!

                                              

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

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

相关文章

麒麟系统上安装 MySQL 8.0.24

我介绍一下在麒麟系统上安装 MySQL 8.0.24 的详细步骤&#xff0c;前提是您已经下载了 mysql-8.0.24-linux-glibc2.12-x86_64.tar.xz 安装包。其实安装很简单&#xff0c;但是有坑&#xff0c;而且问题非常严重&#xff01;由于麒麟系统相关文章博客较少&#xff0c;导致遇到了…

商城-学习整理-集群-K8S-集群环境部署(二十四)

目录 一、MySQL集群1、mysql集群原理2、Docker安装模拟MySQL主从复制集群1、下载mysql镜像2、创建Master实例并启动3、创建 Slave 实例并启动4、为 master 授权用户来同步数据1、进入 master 容器2、进入 mysql 内部 &#xff08;mysql –uroot -p&#xff09;3、查看 master 状…

根据源码,模拟实现 RabbitMQ - 转发规则实现(6)

目录 一、转发规则实现 1.1、需求分析 1.2、实现 Router 转发规则 1.2.1、bindingKey 和 routingKey 参数校验 1.2.2、消息匹配规则 1.2.3、主题交换机匹配规则 一、转发规则实现 1.1、需求分析 这里主要实现 routingKey 和 bindingKey 参数的校验&#xff0c;以及 Topic…

MySQL回表是什么?哪些情况下会回表

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌&#xff0c;CSDN博客专家&#xff0c;阿里云社区专家博主&#xff0c;2023年6月CSDN上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责…

第4篇:vscode+platformio搭建esp32 arduino开发环境

第1篇:Arduino与ESP32开发板的安装方法 第2篇:ESP32 helloword第一个程序示范点亮板载LED 第3篇:vscode搭建esp32 arduino开发环境 1.配置默认安装路径&#xff0c;安装到D盘。 打开环境变量&#xff0c;点击新建 输入变量名PLATFORMIO_CORE_DIR与路径&#xff1a;D:\PLATF…

3DXML在线查看与转换工具

3DXML 由软件巨头达索系统推出&#xff0c;是 3D 设计和工程中的关键文件格式&#xff0c;提供了封装和共享 3D 数据的系统方法。 为了将简单性与丰富的数据表示相结合&#xff0c;3DXML 在与 STEP 等其他文件格式相比时展现出其独特的优势&#xff0c;特别是在数据丰富性和紧凑…

SpringMVC中Controller层获取前端请求参数的几种方式

SpringMVC中Controller层获取前端请求参数的几种方式 1、SpringMVC自动绑定2、使用RequestParam 注解进行接收3、RequestBody注解&#xff08;1&#xff09; 使用实体来接收JSON&#xff08;2&#xff09;使用 Map 集合接收JSON&#xff08;3&#xff09; 使用 List集合接收JSO…

【WebSocket】前端使用WebSocket实时通信

目录 前言什么是WebSocketWebSocket的工作原理WebSocket与HTTP的关系HTTP建立持久化连接WebSocket类封装 前言 最近写项目&#xff0c;需要实现消息通知和实时聊天的功能&#xff0c;就去了解了一些关于websocket的知识&#xff0c;总结如下。 什么是WebSocket WebSocket 是一…

PL 侧驱动和fpga 重加载的方法

可以解决很多的问题 时钟稳定后加载特定fpga ip &#xff08;要不内核崩的一塌糊涂&#xff09;fpga 稳定复位软件决定fpga ip 加载的时序 dluash load /usr/local/scripts/si5512_setup.lua usleep 30 mkdir -p /lib/firmware cp -rf /usr/local/firmare/{*.bit.bin,*.dtbo} …

【JVM基础】JVM入门基础

目录 JVM的位置三种 JVMJVM体系结构类加载器双亲委派机制概念例子作用 沙箱安全机制组成沙箱的基本组件 NativeJNI&#xff1a;Java Native Interface&#xff08;本地方法接口&#xff09;Native Method Stack&#xff08;本地方法栈&#xff09; PC寄存器&#xff08;Program…

List 去重两种方式:stream(需要JDK1.8及以上)、HashSet

1、使用Stream 方法 使用JDK1.8及以上 /*** Java合并两个List并去掉重复项的几种做法* param args*/public static void main(String[] args) {String[] str1 {"1", "2", "3", "4", "5", "6"};List<String&…

Redis数据结构之Set

Set 类型是一个无序并唯一的键值集合&#xff0c;它的存储顺序不会按照插入的先后顺序进行存储。Redis 中集合是通过哈希表实现的&#xff0c;所以添加&#xff0c;删除&#xff0c;查找的复杂度都是 O(1)。相对于列表&#xff0c;集合也有两个特点&#xff1a;无序、不可重复 …