当前位置: 首页 > news >正文

C及C++每日练习(1)

一.选择:

1.以下for循环的执行次数是()

 for(int x = 0, y = 0; (y = 123) && (x < 4); x++);

A.是无限循环 B.循环次数不定 C.4次 D.3次

对于for循环,其组成部分可以四个部分:
 

for(初始化;循环进行条件;调整)
{循环语句//
}

对于上面给出的for循环的循环条件,由于中间用于&&连接,因此,必须左右的条件都为真,循环才能继续进行。因此,当循环进行五次时,此时的y==4,不满足条件,退出循环,因此答案选择:C循环四次

2.以下程序的运行结果是()

 #include <stdio.h> 
int main(void) { printf("%s , %5.3s\n", "computer", "computer"); return 0; 
}

A.computer , puter

B. computer , com

C. computer , computer

D.computer , compu.ter

此题目的考点主要在于打印的格式,即题目中的%5.3s对于这种%m.ns格式的格式。其中m表示输出字符串的宽度,n表示左起截取字符串中的多少字符,且对齐格式为右对齐,如果字符不足则用空格补足。但是也存在特殊情况:

当字符串长度>n>m,此时m的作用不再生效。即输出左起截取字符串中的前n个字符。

n>字符串长度时,直接从头打印至尾部。

例如本题中,m==5,n==3,字符串长度<n,所以上述的打印格式应该为:打印字符串的长度5,从左截取字符串中的3个字符,由于截取的字符小于需要打印的字符,因此,用空格补齐,由于存在右对称,所以打印结果为:

computer,空格空格com

答案选择B,不过此处的答案并没有体现右对齐和补齐空格。

3.下列main()函数执行后的结果为()

int func(){  int i, j, k = 0; for(i = 0, j = -1;j = 0;i++, j++){ k++; } return k; 
} 
int main(){ cout << (func()); 

A.-1

B. 0

C.1

D.2 

在上面给出的代码中,调用了func()函数,结果打印func()函数的返回值。在func()函数的循环中,由于j==-1,因此,并不符合循环的判断条件,因此不会进入循环,所以直接返回0.。答案选择B

4.下面程序输出是什么?

#include <stdio.h> 
int main() 
{   int a=1,b=2,c=3,d=0; if(a == 1 && b++==2) if(b!=2||c--!=3) printf("%d,%d,%d\n" ,a,b,c);else  printf("%d,%d,%d\n" ,a,b,c);else  printf("%d,%d,%d\n" ,a,b,c);return 0; 
}

A.1,2,3

B. 1,3,2

C.3,2,1

D.1,3,3

在本题给出的代码中,由于if并没有搭配相应的括号,因此会有些混乱,下面将题目的格式进行一定的更改,即:

#include <stdio.h> 
int main() 
{   int a=1,b=2,c=3,d=0; if(a == 1 && b++==2) {if(b!=2||c--!=3) {printf("%d,%d,%d\n" ,a,b,c);}else  {printf("%d,%d,%d\n" ,a,b,c);}else  printf("%d,%d,%d\n" ,a,b,c);}return 0; 
}

在第一个if判断中,第一个条件a==1判断为真,第二个条件由于是后置++,即:先使用,后++,因此也满足条件。但是在判断结束后,b==3

在第二个if判断中,需要注意,此时的操作符||存在短路机制,即如果第一个条件满足,则结果直接判断为真,不再判断第二个条件,哟与b!=2为真,因此不再运行b++==2。直接进行打印,此时a,b,c的值分别是1,3,3,因此答案选择D

5.若有定义语句:

 int a=10 ; double b=3.14 ; 则表达式 'A'+a+b 值的类型是()

A.char B. int C.double D. float

针对此题目,需要注意,不同类型的变量在进行运算时,会出现自动提升的机制,即表示数据范围小的类型会自动提升到表示范围大的类型,在题目给出的类型中,'A'占用一个字节,a占用4字节,b占用8字节,因此,运算结果在最后会转换为double。因此答案选择C

6.在下面给出的数组中中,p[1][2]的值是():

int p[][4] = {{1}, {3, 2}, {4, 5, 6}, {0}};

A.1 B. 0 C.6 D.2

给出的数组是一个二维数组,其行数没有给出,列数为4,在数组中的数组中,如果给出的数没有达到4位,则会用0补齐。因此,题目中给出的二维数组的结构为:

{1,0,0,0}
{3,2,0,0}
{4,5,6,0}
{0,0,0,0}

对于二维数组,其行、列数都是从0开始算起的,因此,p[1][2]==0.,因此答案选择B

7.选择表达式 11|10 的结果(本题数值均为十进制):

A.11 B. 10 C.8 D.2

题目涉及到二进制的运算,将11转为二进制形式,其后八位为:

0000 1011

对于10,其二进制位数为:

0000 1010

对于二者的|运算,规则为二进制位数有11,全0则为0.:

11:0000 1011
10:0000 1010 运算结果:0000 1011

因此答案选择A

8.fun(21)运行结果是

 int fun(int a){ a^=(1<<5)-1; return a; 
}

A.10 B. 5 C.3 D.86

在本题目中,涉及到了两个操作符,分别是异或操作符^,以及位运算操作符>> \, \, \, <<。对于异或操作符,其运算规则为两个二进制位相异为1,相同则为0

对于本处的位操作符是左移操作符<<,其规则是右边二进制位丢弃且补0

而对于右移操作符>>,则分为算术右移和逻辑右移,对于题目,一般默认采用算术右移,即右边丢弃,左边补上符号位,负数补1,正数补0.

在本题中,1<<5,其位移后为:

移动前:0000 0001
移动后:0010 0000

移动后,此时二进制位数转换为10进制,则表示的数为32。所以,答案是变量a,即2131的异或,即:

21的二进制位:0001 0101
31的二进制位:0001 1111
异或结果:    0000 1010

所以答案选择A

9.若有定义语句:int year=1009,*p=&year;以下不能使变量 year 中的值增至 1010 的语句是

A.*p+=1;

B. (*p)++;

C.++(*p)

D. *p++

在本题目中,涉及到了操作符结合的优先顺序,在选项A中,*的优先级大于+=,因此可以增到1010。对于B,C存在括号,因此不做解释,可以增到1010.对于选项D由于后置++的优先级大于*。但是由于是后置++,因此D选项的整体运行顺序为:解引用指针,在对指针进行++,答案选择D

10.下面关于"指针"的描述不正确的是

A.当使用free释放掉一个指针内容后,指针变量的值被置为NULL

B. 32位系统下任何类型指针的长度都是4个字节

C.指针的数据类型声明的是指针实际指向内容的数据类型

D.野指针是指向未分配或者已经释放的内存地址

对于A选项,当指针被free后,指针变量的值不是NULL,而是依旧指向一块空间的地址,但是由于这块空间被释放,因此指针为野指针。

对于B选项,指针的定义,正确

对于D选项正确,此处给出避免野指针的措施,即创建指针时即使初始化,free掉指针指向的空间后将指针置空,不进行数组的越界访问

二.编程:

2.1 删除公共字符:


题目对于链接如下:
删除公共字符_牛客题霸_牛客网 (nowcoder.com)

对于本题,可以利用哈希的思想进行解决,首先创建两个string类型的对象,分别命名为str1,str2,其中,str1,str2分别用于接收第一行、第二行的输入。

在完成输入后,创建一个数组arr[256],用于统计str2中各个字符出现的次数,如果出现一个字符,则对于数组的位置置为1.

最后,从头遍历str1中的字符,如果arr[str1[i]]位置的值为0,即str1中的字符在数组中在str2中没有出现过。则输出该字符,具体代码如下:

int main()
{string str1,str2;getline(cin,str1);getline(cin,str2);int arr[256] = {0};for( size_t i = 0; i < str2.size(); i++){arr[str2[i]] = 1;}for(size_t j = 0; j < str1.size(); j++){if(arr[str1[j]] == 0){cout << str1[j];}}return 0;}


2.2 组队竞赛:

题目分析:

本题题目较长,看起来较为复杂,其实原理并不难,具体如下:
题目会给定n个队伍,每个队伍均有三名选手,对于每个选手都定义了一个水平值,为了方便表示,这里将水平值定义为value

对于一个队伍整体的水平值等于队伍中第二高的水平值。

对于题目的要求,是需要n个队伍的整体水平值达到最大。例如题目中给出的例子:1,2,5,5,5,8。最大水平值的组合应该是1,5,52,5,8.不难看出,在本题目中,最大的水平值永远无法取到。如果想要让两个队伍的水平值之和为最大。最优情况,是在每组中,均能取到所有人水平值的第二高。具体如下:
     假如对于3*3的组,其每个人的水平值为:1,2,3,4,5,6,7,8,9。对于最优的水平值上面说到了,是取总体水平值的第二高。因此,也就是8,而为了能取到8,队伍中需要一个比8大的值,一个最小的值,也就是1,9.所以第一组分组为1,8,9。同理,第二组的分组为2,6,7。第三组为3,4,5

所以,解决题目的重点有两个,一是将选手的水平值排列成升序序列,此问题比较简单,直接调用sort函数即可。

第二个问题,是如何取到第二大的值:

对于上面给出的图:蓝色方框表示需要选中的数,下面的蓝色数字表示数组的下标。对于数组的长度设为n,不难看出,蓝色方框选出的数的下标可以通过下面给出的式子表示,即:
                                n-2*(i+1) \, \, \, \, \, \, \, \, \, \, \, \, \, \, \, i==0,1,2,......

因此,代码为:

#include <iostream>
#include<vector>
#include<algorithm>
using namespace std;int main()
{vector<int> v;int n = 0;cin >> n;v.resize(3*n);for( size_t i = 0; i < 3*n; i++){cin >> v[i];}long long sum = 0;sort(v.begin(),v.end());for( size_t j = 0; j < n; j++){sum += v[v.size()-2*(j+1)];}cout << sum;return 0;}

相关文章:

C及C++每日练习(1)

一.选择&#xff1a; 1.以下for循环的执行次数是&#xff08;&#xff09; for(int x 0, y 0; (y 123) && (x < 4); x); A.是无限循环 B.循环次数不定 C.4次 D.3次 对于循环&#xff0c;其组成部分可以四个部分&#xff1a; for(初始化;循环进行条件;调整) …...

Oracle 12c dataguard查看主备库同步情况的新变化

导读 本文介绍Oracle 12c dataguard在维护方面的新变化 前提&#xff1a;主库备库的同步是正常的。 1、主库上查看archive Log list SYScdb1> archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination…...

时间序列-AR MA ARIMA

一、AR模型(自回归) AR探索趋势和周期性 预测依赖于过去的观测值和模型中的参数。模型的阶数 p pp 决定了需要考虑多少个过去时间点的观测值。 求AR模型的阶数 p和参数 ϕ i \phi_i ϕi​ &#xff0c;常常会使用统计方法如最小二乘法、信息准则&#xff08;如AIC、BIC&#xf…...

Spring Boot(六十六):集成Alibaba Druid 连接池

1 Alibaba Druid介绍 在现代的Java应用中,使用一个高效可靠的数据源是至关重要的。Druid连接池作为一款强大的数据库连接池,提供了丰富的监控和管理功能,成为很多Java项目的首选。本文将详细介绍如何在Spring Boot项目中配置数据源,集成Druid连接池,以实现更高效的数据库…...

leetcode 经典题目42.接雨水

链接&#xff1a;https://leetcode.cn/problems/trapping-rain-water 题目描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 思路分析 首先&#xff0c;我们需要遍历数组&#xff0c;对于每个元素&am…...

高防服务器的主要作用有哪些?

高防服务器是属于服务器的一种&#xff0c;主要是为了解决流量攻击而设计的&#xff0c;高防服务器能够维护服务器的稳定性和安全性&#xff0c;具备很高的防御能力和更加优质的网络带宽&#xff0c;能够提供更加可靠的服务保障&#xff0c;那么高防服务器主要都有哪些作用呢&a…...

【30 天 JavaScript 挑战】学习笔记

30 天 JavaScript 挑战 专为 JavaScript 初学者设计 掌握必备 JavaScript 技能 前端人&#xff0c;前端魂&#xff0c;刷完 JS 即入门! 题目地址&#xff1a;https://leetcode.cn/studyplan/30-days-of-javascript/ 个人学习笔记&#xff1a;https://github.com/kaimo313/…...

生成 Linux/ubuntu/Debian 上已安装软件包的列表

你可以在终端中使用以下命令生成已安装软件包的列表&#xff1a; 列出所有已安装的软件包&#xff1a; dpkg --get-selections要将列表保存到文件中&#xff1a; dpkg -l > installed_packages_detailed.txt这将在当前目录中创建一个名为“installed_packages_detailed.txt”…...

精品中国货出海wordpress外贸独立站建站模板

旗袍唐装wordpress外贸网站模板 旗袍、唐装、华服wordpress外贸网站模板&#xff0c;适合做衣服生意的外贸公司官网使用。 https://www.jianzhanpress.com/?p3695 劳动防护wordpress外贸独立站模板 劳动防护wordpress外贸独立站模板&#xff0c;劳动保护、劳动防护用品外贸…...

使用Animated.View实现全屏页面可以向下拖动,松开手指页面返回原处的效果

使用Animated.View实现全屏页面可以向下拖动,松开手指页面返回原处的效果 效果示例图代码示例 效果示例图 代码示例 import React, {useRef, useState} from react; import {View,Text,Animated,Easing,PanResponder,StyleSheet, } from react-native;const TestDragCard () …...

【教程】uni-app iOS打包解决profile文件与私钥证书不匹配问题

摘要 当在uni-app中进行iOS打包时&#xff0c;有时会遇到profile文件与私钥证书不匹配的问题。本文将介绍如何解决这一问题&#xff0c;以及相关的技术细节和操作步骤。 引言 在uni-app开发过程中&#xff0c;iOS打包是一个常见的操作。然而&#xff0c;有时会出现profile文…...

预约自习室

预约自习室 1、技术介绍 自习室预约系统的后端开发语言采用Node&#xff0c;后端开发框架采用Express&#xff0c;数据库采用的Node的最佳搭档MySQL。采用Vue作为前端开发框架&#xff0c;Element-UI作为开发的组件库&#xff0c;微信小程序。期间采用axios实现网页数据获取&a…...

网络安全审计是什么意思?与等保测评有什么区别?

网络安全审计和等保测评在信息安全领域中都是非常重要的环节。但不少人对于这两者是傻傻分不清楚&#xff0c;今天我们就来简单聊聊网络安全审计是什么意思&#xff1f;与等保测评有什么区别&#xff1f; 网络安全审计是什么意思&#xff1f; 网络安全审计是通过对网络系统和网…...

HarmonyOS学习——HarmonyOS习题

harmonyOS开发学习课程 HarmonyOS第一课 1.【习题】运行Hello World工程 判断题 1. DevEco Studio是开发HarmonyOS应用的一站式集成开发环境。&#xff08;√&#xff09; 2. main_pages.json存放页面page路径配置信息。&#xff08;√&#xff09; 单选题 1. 在stage模…...

Python程序怎么让鼠标键盘在后台进行点击,不干扰用户其他鼠标键盘操作

在Python中实现鼠标和键盘在后台点击而不干扰用户的其他操作是一个比较复杂的任务。大多数库&#xff0c;如pyautogui或pynput&#xff0c;都是直接控制鼠标和键盘的&#xff0c;这意味着它们的操作会干扰用户的正常活动。 为了在不干扰用户的情况下实现这一点&#xff0c;你可…...

HTML静态网页成品作业(HTML+CSS)——新年春节介绍网页设计制作(3个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示1、首页2、子页13、子页2 三、代码目录四、网站代码HTML部分代码CSS部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0…...

vue实现base64格式转换为图片

找了很多&#xff0c;但是都不太好用&#xff0c;打算自己总结一个保姆级教学&#xff0c;无需动脑&#xff0c;电脑有电就能实现 在HTML部分&#xff0c;我们需要一个标签来放置图片 <template><div><img :src"imageSrc" alt"未获取到图片&qu…...

【杂言】迟到的 2024 展望

研一下开学已有半月&#xff0c;本来想在家写的新年展望拖到了现在。翻看 2021 年的展望&#xff0c;我发现 flag 基本达成了&#xff08;除了 12 点睡觉&#xff09;&#xff0c;所以给新的一年立下大方向也是很有必要的。也许等到 60 岁我再回看&#xff0c;也是一件趣事吧。…...

结构体(C语言进阶)(一)

目录 前言 1、结构体声明 1.1 结构体基本概念 1.2 结构体声明 1.3 特殊的结构体声明 1.3.1 匿名结构体声明 1.4 结构体自引用 1.5 结构体变量的定义和初始化 1.6 结构体内存对齐 1.7 修改默认对齐数 1.8 结构体传参 总结 前言 C语言除了有其内置类型&#xff0c;还有…...

【react】对React Router的理解?常用的Router 组件有哪些

1 react-router 是什么 react-router等前端路由的原理大致相同&#xff0c;可以实现无刷新的条件下切换显示不同的页面 路由的本质就是页面的URL发生改变时&#xff0c;页面的显示结果可以根据URL的变化而变化&#xff0c;但是页面不会刷新 因此&#xff0c;可以通过前端路由可…...

生成式 AI

生成式 AI 进入应用爆发期&#xff0c;将极大地推动数字化内容生产与创造。 摘要 生成式 AI &#xff08; Generative AI 或 AIGC &#xff09; 是利用现有文本、音频文件或图像创建 新内容的技术。过去一年&#xff0c;其技术上的 进展主要来自于三大领域&#xff1a;…...

云计算 3月6号 (crontab-计划任务 日志轮转 免密登录)

一、计划任务 计划任务概念解析 在Linux操作系统中&#xff0c;除了用户即时执行的命令操作以外&#xff0c;还可以配置在指定的时间、指定的日期执行预先计划好的系统管理任务&#xff08;如定期备份、定期采集监测数据&#xff09;。RHEL6系统中默认已安装了at、crontab软件…...

Windows Shell命令详解:入门指南

Windows操作系统的Shell命令是执行各种任务和管理系统的关键工具。本文将深入探讨Windows Shell命令的基础知识&#xff0c;介绍常用的命令以及它们的功能和用法&#xff0c;并探讨一些高级技巧&#xff0c;帮助用户更好地利用Shell命令提高工作效率。 1. 什么是Windows Shell命…...

MogDB/openGauss关于PL/SQL匿名块调用测试

MogDB/openGauss 关于 PL/SQL 匿名块调用测试 一、原理介绍 PL/SQL(Procedure Language/Structure Query Language)是标准 SQL 语言添加了过程化功能的一门程序设计语言。 单一的 SQL 语句只能进行数据操作&#xff0c;没有流程控制&#xff0c;无法开发复杂的应用。PL/SQL …...

STP---生成树协议

STP的作用 a)Stp通过阻塞端口来消除环路&#xff0c;并能够实现链路备份目的 b)消除了广播风暴 c)物理链路冗余&#xff0c;网络变成了层次化结构的网络 STP操作 选举一个根桥每个非根交换机选举一个根端口每个网段选举一个指定端口阻塞非根&#xff0c;非指定端口 STP--生成树…...

算法D38| 动态规划1 | 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯

理论基础 无论大家之前对动态规划学到什么程度&#xff0c;一定要先看 我讲的 动态规划理论基础。 如果没做过动态规划的题目&#xff0c;看我讲的理论基础&#xff0c;会有感觉 是不是简单题想复杂了&#xff1f; 其实并没有&#xff0c;我讲的理论基础内容&#xff0c;在动…...

Vue教学13:组件的生命周期:掌握组件的每一个关键时刻

大家好&#xff0c;欢迎回到我们的Vue教学系列博客&#xff01;在前十二篇博客中&#xff0c;我们学习了Vue.js的基础知识、安装Node.js与npm、使用Vue Devtools进行调试、Vue实例与生命周期钩子、数据绑定&#xff08;单向与双向&#xff09;、计算属性与侦听器、条件渲染和列…...

mitmproxy代理

文章目录 mitmproxy1. 网络代理2. 安装3. Https请求3.1 启动mitmproxy3.2 获取证书3.3 配置代理3.4 运行测试 4. 请求4.1 读取请求4.2 修改请求4.3 拦截请求 5. 响应5.1 读取响应5.2 修改响应 6. 案例&#xff1a;共享账号6.1 登录bilibili获取cookies6.2 在代理请求中设置cook…...

【GPU驱动开发】- mesa编译与链接过程详细分析

前言 不必害怕未知&#xff0c;无需恐惧犯错&#xff0c;做一个Creator&#xff01; 一、总体框架图 暂时无法在飞书文档外展示此内容 二、Mesa API 处理 OpenGL 函数调用 Mesa API 负责实现 OpenGL 和其他图形 API 的函数接口。Mesa API 表是一个重要的数据结构&#xf…...

如何恢复已删除的华为手机图片?5 种方式分享

不幸的现实是&#xff0c;华为的珍贵时刻有时会因为意外删除、软件故障或其他不可预见的情况而在眨眼之间消失。在这种情况下&#xff0c;寻求恢复已删除的图片成为个人迫切关心的问题。 本文旨在为用户提供如何从华为恢复已删除图片的实用解决方案。我们将探索五种可行的方法…...