每日刷题-1

news2024/11/25 6:57:16

目录

一、选择题

二、编程题

1、组队竞赛

2、删除公共字符



一、选择题

1、

解析:%s遇到'\0'会停止,%m.ns中m表示字符串宽度,n表示左起取目标字符串n个字符,右对齐,(如果想要左对齐,可以写成%-m.ns)不够的补空格。注意:如果n>m,那么m就会失效,输出的宽度就是n,如果n>字符串长度,将输出全部字符串,不管m是多少。

所以本题答案是computer,  com。

2、

解析:在表达式中,不同类型的数据参与运算时,编译器会自动把较小的类型转换为较大的类型,然后在进行计算。在本例中,char 和 int 都是较小的类型,double 是较大的类型,所以 ‘A’ 和 a 都会被转换为 double 类型,然后与 b 相加,得到一个 double 类型的结果。本题选C。

3、

解析:当使用free释放掉一个指针后,free喊叔叔并不会自动把指针bianlinag设为NULL,它只是释放了指针之乡的内存空间,程序员还需要显式地给指针变量赋值为NULL。本题选A。

4、

解析:const在指针中的使用遵循这样的规则,

(1)如果const在星号的左边,那么const修饰指针指向的变量即指针指向为常量。例如const int*p和int const*p都表示p是一个指向const int的指针,p可以改变指向,但不可以通过p改变变量的值。

(2)如果const在星号的右边,那么const修饰指针本身,即指针本身为常量。例如int *const p表示p是一个指向int 的常量指针,p不能改变指向,但可以通过票改变指向的值。

(3)如果const同时在星号的左右,那么既不能修改p的指向,也不能通过p修改所指向的值,例如const int* const p。

因此,该程序中有以下错误:

 (1) 行:常量指针p1没有初始化,应该给定一个初始地址,且必须是变量地址。(答案少了这个)

 (6) 行:常量指针p2不能修改其指向的变量的值,应该去掉这一行。

(7) 行:指针常量p3不能改变指向,应该去掉这一行。

5、

解析:宏定义的常量并不一定比const常量更容易理解,因为宏定义的常量没有类型信息,而且可能会被重复定义或取消定义.。另外,const常量可以避免一些宏定义可能导致的运算优先级或副作用。本题选B。

6、

解析:一个有10个指针的数组,可以用int *a[10]来声明,这意味着a是一个数组,它的元素是指向整型数的指针。一个指向函数的指针,可以用int (*a)(int)来声明,这意味着a是一个指针,它指向一个有一个整型参数并返回一个整型数的函数。

因此,如果我们想要一个有10个指针的数组,而这些指针都指向同样类型的函数,我们可以用int (*a[10])(int)来声明,这意味着a是一个数组,它的元素是指向有一个整型参数并返回一个整型数的函数的指针。

7、

解析:在32位CPU上,缺省对齐的情况下,结构体的总大小为结构体最宽基本类型成员大小的整数倍。在这个例子中,结构体最宽的基本类型成员是unsigned int,占4个字节。结构体中的位域成员按照其所属的基本类型进行对齐。

在这个例子中,所有的位域成员都属于unsigned int类型,所以它们都按照4个字节进行对齐。结构体中的位域成员如果不能被其所属的基本类型整除,那么会从下一个基本类型开始存放。在这个例子中,a、b、c共占用19+11+4=34位,所以c放在第二个4字节里,4+29=33位,所以d放在第三个4字节里面。

因此,结构体中共占用了3个unsigned int和1个char,总共占用了3*4+1=13个字节。但是由于结构体的总大小要为4的整数倍,所以还需要在末尾补上3个字节的填充,使得结构体的总大小为16个字节。

8、

解析:&a和a的区别主要取决于a的类型和使用的上下文。一般来说,&a表示取a的地址,而a表示取a的值。但是,如果a是一个数组或一个函数,那么它们的区别就比较复杂。

如果a是一个数组,比如int a[10],那么&a和a都表示数组的首地址,但是它们的类型不同。&a的类型是指向数组的指针,即int(*)[10],而a的类型是指向数组第一个元素的指针,即int *。因此,&a+1和a+1的值也不同,&a+1表示跳过整个数组,而a+1表示跳过一个元素

如果a是一个函数,比如int a(int x),那么&a和a都表示函数的地址,但是它们的类型不同。&a的类型是指向函数的指针,即int (*)(int),而a的类型是函数类型,即int (int)。因此,在调用函数时,可以直接使用a(x)或者(*a)(x),也可以使用(&a)(x)或者(**&a)(x)等等。

现在来看题目:

&a是一个指向数组的指针,它的类型是int (*)[4],即指向有4个整型元素的数组的指针。

&a+1是将&a向后移动一个单位,即移动了一个数组的长度,也就是4个整型数的长度,即4*4=16个字节。

(int*)(&a+1)是将&a+1强制转换为一个指向整型数的指针,它的类型是int *,即指向整型数的指针。

ptr=(int*)(&a+1)是将(int*)(&a+1)赋值给ptr,这样ptr就指向了数组a之后的第一个位置,也就是内存中存放着数组a的下一个变量的位置。

*(ptr-1)是将ptr向前移动一个单位,即移动了一个整型数的长度,即4个字节,然后取出它所指向的值。这样就相当于取出了数组a的最后一个元素,也就是4。

二、编程题

1、组队竞赛

解析:本题的主要思路是贪心算法,贪心算法其实很简单,就是每次选值时都选当前能看到的局部最优解,所以这里的贪心就是保证每组的第二个值取到能选择的最大值就可以,我们每次尽量取最大,但是最大的数不可能是中位数,所以退而求其次,取每组中第二大的。

代码如下:

#include <iostream>
#include<vector>
#include<algorithm>
using namespace std;

int main() {
    int n;
    while(cin>>n)
    {
        long long sum=0;
        vector<int> team;
        team.resize(3*n);
        for(int i=0;i<3*n;i++)
        {
            cin>>team[i];
        }
        sort(team.begin(),team.end());
        for(int i=0;i<n;i++)
        {
            sum+=team[team.size()-(2*i+1)-1];
        }
        cout<<sum;
    }  
}

2、删除公共字符

解析:本题如果使用传统的暴力查找方式,如判断第一个串的字符是否在第二个串中,在再挪动字符删除这个字符的方式,效率为O(N^2),效率太低,很难让人满意。
1. 将第二个字符串的字符都映射到一个hash数组中,用来判断一个字符在这个字符串。
2. 判断一个字符在第二个字符串,不要使用删除,这样效率太低,因为每次删除都伴随数据挪动。这里可以考虑把字符添加到一个新字符串,最后返回新字符串。

代码如下:

#include <iostream>
#include<string>
using namespace std;

int main() {
    string str1,str2;
    getline(cin,str1);
    getline(cin,str2);

    int hash[256]={0};

    for(int i=0;i<str2.size();i++)
    {
        hash[str2[i]]++;
    }
    string newstr="";
    for(int i=0;i<str1.size();i++)
    {
        if(hash[str1[i]]==0)newstr+=str1[i];
    }
    cout<<newstr<<endl;

    
}

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

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

相关文章

【C++学习笔记】5、变量作用域

文章目录 【 1、局部变量 】【 2、全局变量 】【 3、局部变量和全局变量的初始化 】 作用域是程序的一个区域&#xff0c;一般来说有三个地方可以定义变量&#xff1a; 在函数或一个代码块内部声明的变量&#xff0c;称为局部变量。 在函数参数的定义中声明的变量&#xff0c;称…

【LeetCode】剑指 Offer <二刷>(2)

目录 题目&#xff1a;剑指 Offer 04. 二维数组中的查找 - 力扣&#xff08;LeetCode&#xff09; 题目的接口&#xff1a; 解题思路&#xff1a; 代码&#xff1a; 过啦&#xff01;&#xff01;&#xff01; 题目&#xff1a;剑指 Offer 05. 替换空格 - 力扣&#xff0…

【ROS 05】ROS常用组件

在ROS中内置一些比较实用的工具&#xff0c;通过这些工具可以方便快捷的实现某个功能或调试程序&#xff0c;从而提高开发效率&#xff0c;本章主要介绍ROS中内置的如下组件: TF坐标变换&#xff0c;实现不同类型的坐标系之间的转换&#xff1b;rosbag 用于录制ROS节点的执行过…

基于springboot实现了后台定时统计数据报表并将数据生成excel文件作为附件,然后通过邮件发送通知的功能

概述 本例子基于springboot实现了后台定时统计数据报表并将数据生成excel文件作为附件&#xff0c;然后通过邮件发送通知的功能。 详细 一、准备工作 1、首先注册两个邮箱&#xff0c;一个发送邮箱&#xff0c;一个接收邮箱。 2、发送邮箱开启IMAP/SMTP/POP3服务&#xff0c…

服务器间 ssh 免密登录

1、在所有服务器生产密钥文件 ssh-keygen -t rsa一直空格就可以 2、查看所有节点的公钥文件 cat /home/bigdata/.ssh/id_rsa.pub3、将所有节点的公钥文件写入到authorized_keys文件中 4、将authorized_keys文件分发给其他节点并修改权限 #注意查看authorized_keys文件的权…

131.【MySQL_基础篇】

MySQL_基础篇 (一)、MySQL 介绍1.MySQL三大阶段(1).基础篇(2).进阶篇(3).运维篇 2.MySQL 概念3.数据模型(1).关系型数据库(RDBMS) 4.数据库三大范式 (二)、SQL 编程语言1.SQL通用语法2.SQL 四大分类3.DDL (数据定义语言)(1).数据库操作 ->(增删改查)(2).表操作 -> (增删改…

整数拆分【动态规划】

整数拆分 给定一个正整数 n &#xff0c;将其拆分为 k 个 正整数 的和&#xff08; k > 2 &#xff09;&#xff0c;并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 class Solution {public int integerBreak(int n) {int[] dp new int[n 1];//正整数&#x…

day 48|● 583. 两个字符串的删除操作 ● 72. 编辑距离

583. 两个字符串的删除操作 dp的含义&#xff1a;指0开头&#xff0c;i- 1和j - 1为结尾的两个序列的删除最小数 递推公式方面&#xff1a; 初始化方面&#xff1a;前面0行和0列的初值要赋好 func minDistance(word1 string, word2 string) int {dp : make([][]int, len(wor…

工具教程【甜心转译】-双语字幕、中文语音生成,打破信息差

甜心转译是一款AI加持的音/视频生成双语字幕、中文语音的软件。帮助人们更容易的获取外语信息、不管是学习、还是娱乐&#xff0c;快人一步。 主要功能 字幕生成&#xff1a;只需几个简单的步骤&#xff0c;轻松生成字幕。字幕翻译&#xff1a;只需一键&#xff0c;就可以将字…

JavaScript代码中字符串如何换行?

在工作中&#xff0c;代码提交之前可能会有一些语法检查的限制&#xff0c;限制我们的单行代码长度。 对于一些逻辑代码&#xff0c;有多种换行方式。这里主要记录一下对于字符串过长情况的处理方式。 对于字符串&#xff0c;除了使用 进行字符串拼接之外&#xff0c;也可以…

算法通关村第12关【青铜】| 字符串转换问题

1.转换成小写字母 思路&#xff1a;ASCll码中&#xff0c;a-z&#xff1a;97-122 A-Z&#xff1a;65-90 小写转大写-32&#xff0c;大写转小写32 class Solution {public String toLowerCase(String s) {int len s.length();StringBuilder str new StringBuilder();for(int…

windos设置环境变量--java环境变量

1.右键此电脑---属性 2.点高级系统设置 3.点环境变量 4.点新建--自定义变量名 5.找到安装路径&#xff0c;并且找到bin目录下的启动程序 验证&#xff1a;winR 输入cmd

Elasticsearch 全文搜索引擎 ---- IK分词器

原理&#xff1a;分词的原理&#xff1a;二叉树 首先讲一下为什么要出这个文章&#xff0c;前面我们讲过分词方法&#xff1a;中文分词搜索 pscws&#xff08;感兴趣的同学可以去爬楼看一下&#xff09;&#xff0c;那为什么要讲IK分词&#xff1f;最主要的原因是&…

uniapp 手机 真机测试 ​ 云打包 要是没申请 可以使用云打包 然后采用 测试权限即可​

uniapp 手机 真机测试 打开手机 找到手机的 版本号 点击 知道提示 &#xff08;启动开发者模式&#xff09; 然后 在进行usb的连接打开 运行uniapp 到手机基台 手机确认 即可 四&#xff0c; 云打包 要是没申请 可以使用云打包 然后采用 测试权限即可

SpringMVC <url-pattern/>解读

1. < url-pattern/>的值 (1).使用拓展名的方式&#xff0c;语法*.xxx&#xff0c;xxx是自定义的拓展名&#xff0c;常用的方式*.do&#xff0c;*.action,不能使用*.jsp. (2).使用斜杠 "/"当项目中使用了 / &#xff0c;他会替代tomcat中的default。导致所有的…

OpenCV(二十一):椒盐噪声和高斯噪声的产生

目录 1.图像噪声介绍 2.椒盐噪声的产生 3.高斯噪声的产生 1.图像噪声介绍 噪声介绍 图像噪声是指在图像中存在的不期望的、随机的像素值变化&#xff0c;这些变化来源于多种因素。噪声可能导致图像细节模糊、失真或难以分辨。 以下是几种常见的图像噪声类型&#xff1a; 1…

Go语言中的数组、切片和映射解析

目录 数组数组的声明数组循环 切片切片声明切片元素循环 映射Map的声明及初始化Map的遍历 数组 数组存放的是固定长度、相同类型的数据&#xff0c;而且这些存放的元素是连续的。 数组的声明 例如声明一个整形数组&#xff1a; array : [3]int{1, 2, 3}在类型名前加 [] 中括…

MySQL之MHA高可用配置及故障切换

目录 一、MHA概念 1、MHA的组成 2、MHA的特点 3、主从复制有多少种复制方法 二、搭建MySqlMHA部署 1&#xff0e;Master、Slave1、Slave2 节点上安装 mysql 2&#xff0e;修改 Master、Slave1、Slave2 节点的 Mysql主配置文件/etc/my.cnf 3. 配置 mysql 一主两从 4、安…

【计算机网络】 ARP协议和DNS协议

文章目录 数据包在传输过程中的变化过程单播组播和广播ARP协议ARP代理免费ARP路由数据转发过程DNS协议 数据包在传输过程中的变化过程 在说ARP和DNS之前&#xff0c;我们需要知道数据包在传输过程的变化过程 从图片中可以看到&#xff0c;发送方的原数据最开始是在应用层&…

SystemVerilog 第5章 面向对象编程基础

5.1概述 对结构化编程语言,例如 Verilog和C语言来讲,它们的数据结构和使用这些数据结构的代码之间存在很大的沟壑。数据声明、数据类型与操作这些数据的算法经常放在不同的文件里,因此造成了对程序理解的困难。 Verilog程序员的境遇比C程序员更加棘手,因为Ⅴ erilog语言…