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

【C/C++笔试练习】——printf在使用%的注意事项、for循环语句的三个条件、运算符优先级、删除公共字符

文章目录

  • C/C++笔试练习
    • 1.%符号在printf用作格式说明符的注意事项
      • (1)输出%5.3s
      • (2)判断%中小数点含义
    • 2.for循环语句的三个条件
      • (3)判断循环次数
      • (4)判断循环次数
    • 3.运算符优先级
      • (5)判断运算符优先级
      • (6)判断优先级再计算大小
    • 4.编程题
      • (7)删除公共字符

C/C++笔试练习

1.%符号在printf用作格式说明符的注意事项

(1)输出%5.3s

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

#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

  

   %m.ns:

  m:输出字符串的宽度

  n:左起截取目标字符串n个字符,并且是右对齐,如果实际字符串长度不足3,则会在右侧用空格填充。

   所以%5.3s在C语言中表示一个字符串宽度为5,其中包括3个字符和2个空格。如果实际字符串长度不足3,则会在右侧用空格填充。

   答案选:B

在这里插入图片描述

                   

(2)判断%中小数点含义

  使用printf函数打印一个double类型的数据,要求:输出为10进制,输出左对齐30个字符,4位精度。以下哪个选项是正确的?

  A %-30.4e      B %4.30e
  C %-30.4f      D %-4.30f

   %-30.4f 中的 %-30 表示左对齐且总宽度为30个字符。

   .4 表示小数点后有4位。

   f 表示浮点数,即 double 类型。

   答案选:C

                   

   在C语言中,%符号用于格式说明符,用于指定输入或输出的数据类型和格式。

   . 表示精度,指定了小数点后的位数或字符串中的最大字符数。

   例如:

   %5.3s表示一个字符串宽度为5,其中包括3个字符和2个空格。如果实际字符串长度不足3,则会在右侧用空格填充。

   %5.3f表示一个浮点数宽度为5,其中包括3位小数和2位整数。如果实际数字不足5位,则会在左侧用空格填充。

   需要注意的是,在%d、%c等格式说明符中,.并没有实际意义,因为这些格式说明符不支持小数点后的精度。
  

   以下是C语言中常见的%打印格式及其含义:

%打印格式含义
%d:打印十进制整数。
%f:打印浮点数。
%c:打印字符。
%s:打印字符串。
%u:打印无符号十进制整数。
%x:打印十六进制整数。
%o:打印八进制整数。
%e:打印科学计数法表示的浮点数。
%g:自动选择%f或%e输出。
%p:打印指针地址。
%%:打印一个%符号。

  

   这些格式说明符可以与一些标志字符一起使用,以控制输出格式,如:

标志字符输出格式
-:左对齐输出。
+:在正数前加正号。
空格:在正数前加空格。
#:对于%o,输出前导零;对于%x和%X,输出前导0x或0X。
0:用0填充输出的数字。

                 

2.for循环语句的三个条件

在这里插入图片描述

(3)判断循环次数

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

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

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

   在循环开始前,x和y都被初始化为0。然后,循环条件为 (y = 123) && (x < 4)。首先,y = 123是一个赋值操作,它将y的值设置为123,然后返回123。因此,循环条件中的y = 123始终为真。

   其次,x < 4 是一个比较操作,它检查x的值是否小于4。在每次循环迭代后,x的值增加1(因为在for循环的第三个部分中没有对x进行修改)。因此,循环将执行4次,直到x的值达到4,此时循环条件不再为真,循环终止。

   答案选:C
  

(4)判断循环次数

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

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

   A -1       B 0
   C 1       D 2

  同理这段代码中的函数 func 包含一个 for 循环,该循环的初始条件是 j = -1,并且在每次迭代中 j 的值都会增加 1。循环的终止条件是 j = 0,这意味着当 j 的值变为 0 时,循环将停止。

  然而 j 的值在开始就赋值为了 -1 ,在条件判断中 j =0 为假,所以根本不会进入到这个循环中,直接跳出,k=0。

   答案选:B

                 

3.运算符优先级

(5)判断运算符优先级

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

   A *p+=1;       B (*p)++;
   C ++(*p)       D *p++

  

   A、*p+=1; 等价于 *(p+1),先解引用得到year的值,然后增加1,再赋值给year,year的值变为1010,可以;

   B、(*p)++; 等价于 *(p+1),先解引用得到year的值,然后增加1,再赋值给year,year的值变为1010,可以;

   C、++(*p) 等价于 ++(year),先解引用得到year的值,然后增加1,再赋值给year,year的值变为1010,可以;

   D、*p++ 等价于 *p再对p++,先解引用得到year的值,然后p指针向后移动一位,year不变,所以D不可以。

   答案选:D
  
在这里插入图片描述
  
在这里插入图片描述
              

(6)判断优先级再计算大小

  32位系统中,定义**a[3][4],则变量占用内存空间为()。

  A 4      B 48
  C 192     D 12

  因为 [ ] 的优先级高于 * ,所以a先和 [ ] 结合,所以a是数组;

  在32位系统中,指针大小是4,此时a是一个二维数组a[3][4],每个数组元素是一个**类型变量,每个元素是一个二级指针,占用4个字节。整个数组a包含3行4列,共12个元素,所以整个数组占用的内存空间为12*4=48个字节。

   答案选:B

              

4.编程题

(7)删除公共字符

删除公共字符

   暴力解法

   本题可以使用传统的暴力查找方式,判断第一个串的字符是否在第二个串中,在再挪动字符删除这个字符的方式,时间复杂度为O(N^2),效率比较低。

#include <iostream>
#include <string>
using namespace std;int main() {string str1;string str2;getline(cin,str1);//使用getline可以输入空格getline(cin,str2);for(int i=0;i<str1.size();i++)//暴力查找{for(int j=0;j<str2.size();j++)//有一样的数字就删除{if(str1[i]==str2[j]){str1.erase(i,1);}}}cout<<str1;return 0;
}

  
   哈希表

   1.将第二个字符串的字符都映射到一个hashtable数组中,用来判断一个字符在这个字符串。

  2.判断一个字符在第二个字符串,不要使用删除,这样效率太低,因为每次删除都伴随数据挪动。这里可以考虑使用将不在字符添加到一个新字符串,最后返回新新字符串。

#include<iostream>
#include<string>
using namespace std;int main() {//IO输入字符串最好使用getline。string str1, str2;getline(cin, str1);getline(cin, str2);//使用哈希映射思想先str2统计字符出现的次数int hashtable[256] = {0};for (size_t i = 0; i < str2.size(); ++i) {hashtable[str2[i]]++;}//遍历str1,str1[i]映射hashtable对应位置为0,则表示这个字符在//str2中没有出现过,则将他+=到ret。注意这里最好不要str1.erases(i)//因为边遍历,边erase,容易出错。string ret;for (size_t i = 0; i < str1.size(); ++i) {if (hashtable[str1[i]] == 0)ret += str1[i];}cout << ret << endl;return 0;
}

相关文章:

【C/C++笔试练习】——printf在使用%的注意事项、for循环语句的三个条件、运算符优先级、删除公共字符

文章目录 C/C笔试练习1.%符号在printf用作格式说明符的注意事项&#xff08;1&#xff09;输出%5.3s&#xff08;2&#xff09;判断%中小数点含义 2.for循环语句的三个条件&#xff08;3&#xff09;判断循环次数&#xff08;4&#xff09;判断循环次数 3.运算符优先级&#xf…...

Linux部署elk日志监控系统

目录 一、简介 二、部署elasticsearch 2.1 安装jdk11&#xff08;jdk版本>11&#xff09; 2.2 下载安装包 2.3 授权elk用户 2.4 配置elasticsearch.yml 2.5 启动elasticsearch 三、部署logstash 3.1 启动测试 3.2 可能出现的报错 3.3 指定配置文件启动logstash 3.4 安装El…...

LINUX -SQL笔记(自学用)

1.安装 sudo apt-get install mysql-server sudo mysql -u root -p2.关系模型 在关系数据库中&#xff0c;一张表中的每一行数据被称为一条记录。一条记录就是由多个字段组成的。 每一条记录都包含若干定义好的字段。同一个表的所有记录都有相同的字段定义。 对于关系表&#…...

【Spark】win10配置IDEA、saprk、hadoop和scala

终于&#xff0c;要对并行计算下手了哈哈哈。 一直讲大数据大数据&#xff0c;我单次数据处理量大概在1t上下&#xff0c;是过亿级的轨迹数据。 用python调用multiprogress编写的代码&#xff0c;用多线程也要一个多月跑完。 我对这个效率不太满意&#xff0c;希望能快一点再快…...

MQTT 协议概要

01 MQTT协议 MQTT&#xff08;消息队列遥测传输&#xff09; 是基于 TCP/IP 协议栈而构建的支持在各方之间异步通信的消息协议。MQTT在空间和时间上将消息发送者与接收者分离&#xff0c;因此可以在不可靠的网络环境中进行扩展。虽然叫做消息队列遥测传输&#xff0c;但它与消息…...

向量数据库X云计算驱动大模型落地电商行业,Zilliz联合AWS探索并贡献成熟解决方案

近日,由Zilliz 联合亚马逊云科技举办的【向量数据库 X 云计算 驱动大模型落地电商行业】活动在上海落幕,获得业内专业人士的广泛好评。 众所周知,大模型技术的发展正加速对千行万业的改革和重塑,向量数据库作为大模型的海量记忆体、云计算作为大模型的大算力平台,是大模型…...

【vue2】解决Vuex刷新页面数据丢失的问题

最近写vue2 项目需要用到vuex, 但遇到一个问题&#xff0c;存进store里的数据刷新就丢失了&#xff0c;于是乎百度解决。将自己的感受与解决方法记录下来。 数据丢失的原因 vuex存储的数据只是在页面中&#xff0c;相当于全局变量&#xff0c;页面刷新的时候vuex里的数据会重…...

小皮面板配置Xdebug,调试单个php文件

小皮面板配置Xdebug 首先下载phpstrom&#xff0c;和小皮面板 打开小皮面板&#xff0c;选中好要使用的php版本 然后点击【管理】> 【php扩展】> 【xdebug】 然后打开选中好版本的php位置 D:\Program_Files\phpstudy_pro\Extensions\php\php7.4.3nts打开php.ini文件…...

版本控制系统:Perforce Helix Core -2023

Perforce Helix Core是领先的版本控制系统&#xff0c;适用于需要加速大规模创新的团队。存储并跟踪您所有数字资产的更改&#xff0c;从源代码到二进制再到IP。连接您的团队&#xff0c;让他们更快地行动&#xff0c;更好地构建。 通过 Perforce 版本控制加速创新 Perforce H…...

回归预测 | Matlab实现基于MIC-BP最大互信息系数数据特征选择算法结合BP神经网络的数据回归预测

回归预测 | Matlab实现基于MIC-BP最大互信息系数数据特征选择算法结合BP神经网络的数据回归预测 目录 回归预测 | Matlab实现基于MIC-BP最大互信息系数数据特征选择算法结合BP神经网络的数据回归预测效果一览基本介绍研究内容程序设计参考资料 效果一览 基本介绍 Matlab实现基于…...

Hive-命令行CDH访问开启kerberos的hive

1.通过hive用户访问 切换用户为hive [rootslave conf]# su - hive 上一次登录&#xff1a;五 4月 12 13:59:19 CST 2019pts/1 上 [hiveslave ~]$命令行直接输入hive就可以进入hive [hiveslave ~]$ hive log4j:WARN No such property [maxFileSize] in org.apache.log4j.Dail…...

手机能搜到某个wifi,电脑搜不到解决方法(也许有用)

方法一&#xff1a;更新驱动 下载驱动大师、驱动精灵等等驱动软件&#xff0c;更新网卡驱动 方法二 按 win 键&#xff0c;打开菜单 搜索 查看网络连接&#xff08;win11版本是搜这个名字&#xff09; 点击打开是这样式的 然后对 WLAN右击->属性->配置->高级 这…...

Java-day18(网络编程)

网络编程 1.概述 Java提供跨平台的网络类库&#xff0c;可以实现无痛的网络连接&#xff0c;程序员面对的是一个统一的网络编程环境 网络编程的目的&#xff1a;直接或间接地通过网络协议与其他计算机进行通信 网络编程的两个主要问题&#xff1a; 1.如何准确定位网络上一台…...

Java多线程编程-栅栏CyclicBarrier实例

前言 本文是基于《Java多线程编程实战指南-核心篇》第五章个人理解&#xff0c;源码是摘抄作者的源码&#xff0c;源码会加上自己的理解。读书笔记目前笔者正在更新如下&#xff0c; 《Java多线程编程实战指南-核心篇》&#xff0c;《How Tomcat Works》&#xff0c;再到《spr…...

【100天精通Python】Day67:Python可视化_Matplotlib 绘制动画,2D、3D 动画 示例+代码

1 绘制2D动画&#xff08;animation&#xff09; Matplotlib是一个Python绘图库&#xff0c;它提供了丰富的绘图功能&#xff0c;包括绘制动画。要绘制动画&#xff0c;Matplotlib提供了FuncAnimation类&#xff0c;允许您创建基于函数的动画。下面是一个详细的Matplotlib动画示…...

变量、常量以及与其他语言的差异 - Go语言从入门到实战

知识点 源码文件以_test结尾&#xff1a;xxx_test.go测试方法名以Test开头&#xff1a;func TestXXX(t *testing.T){…} 利用单元测试来写代码段&#xff0c;保存之后会自动运行程序返回结果&#xff0c;可以快速实践得到反馈。 编写测试程序 接下来练习一下&#xff0c;怎…...

Android 编译插桩操纵字节码

本文讲解如何编译插桩操纵字节码。 就使用 ASM 来实现简单的编译插桩效果&#xff0c;通过插桩实现在每一个 Activity 打开时输出相应的 log 日志。实现思路 过程主要包含两步&#xff1a; 1、遍历项目中所有的 .class 文件​ 如何找到项目中编译生成的所有 .class 文件&#…...

云原生的简单理解

一、何谓云原生&#xff1f; 一种构建和运行应用软件的方法 应用程序从设计之初即考虑到云的环境&#xff0c;原生为云而设计&#xff0c;在云上以最佳姿势运行&#xff0c;充分利用和发挥云平台的弹性分布式优势。 二、包括以下四个要素 采用容器化部署&#xff1a;实现云平…...

AVL Cruise 2020.1 安装教程

文章目录 安装包安装破解 安装包 链接&#xff1a;https://pan.baidu.com/s/1GxbeDj_SyvKFyPeTsstvTQ?pwd6666 提取码&#xff1a;6666 安装 安装文件&#xff1a; 双击setup.exe&#xff1a; 一直netx&#xff0c;中间要修改两次路径&#xff0c;第一次是安装位置&#xf…...

数组07-滑动窗口、HashMap

LeetCode——904. 水果成篮 你正在探访一家农场&#xff0c;农场从左到右种植了一排果树。这些树用一个整数数组 fruits 表示&#xff0c;其中 fruits[i] 是第 i 棵树上的水果 种类 。 你想要尽可能多地收集水果。然而&#xff0c;农场的主人设定了一些严格的规矩&#xff0c…...

【C++杂货店】类和对象(上)

【C杂货店】类和对象&#xff08;上&#xff09; 一、面向过程和面向对象初步认识二、类的引入三、类的定义四、类的访问限定符及封装4.1 访问限定符4.2 封装 五、类的作用域六、类的实例化七、类对象模型7.1 类对象的存储规则7.2 例题7.3结构体内存对齐规则 八、this指针8.2 t…...

K8S笔记

...

MySQL关于日期函数的使用-笔记

韩老师笔记 select current_time select CURRENT_DATE create table mes ( id int, content VARCHAR(255), send_time DATETIME ) select * from mes; insert into mes values(1,北京,CURRENT_DATE) insert into mes (id,send_time) values(2,CURRENT_TIME) insert into mes v…...

【postgresql 】 ERROR: “name“ is not supported as an alias

org.postgresql.util.PSQLException: ERROR: "name" is not supported as an alias 错误&#xff1a;不支持将“name”作为别名 SELECT real_name name FROM doc_user 加上 在关键词上加上 “” 示例&#xff1a; SELECT real_name "name" FROM do…...

都用HTTPS了,还能被查出浏览记录?

最近&#xff0c;群里一个刚入职的小伙因为用公司电脑访问奇怪的网站&#xff0c;被约谈了。他很困惑 —— 访问的都是HTTPS的网站&#xff0c;公司咋知道他访问了啥&#xff1f; 实际上&#xff0c;由于网络通信有很多层&#xff0c;即使加密通信&#xff0c;仍有很多途径暴露…...

vi配置文件.vimrc内容示例

1、.vimrc配置文件介绍 &#xff08;1&#xff09;.vimrc是vi编辑器的配置文件&#xff0c;里面可以对vi编译器做个性化配置&#xff1b; &#xff08;2&#xff09;.vimrc在用户目录下&#xff0c;每个用户有一个&#xff0c;类似于.bashrc文件&#xff0c;将下面的配置文件内…...

MacOS上的Pip和Python升级指南

在MacOS系统上&#xff0c;保持Pip和Python版本的最新状态对于顺利进行Python开发至关重要。通过升级Pip和Python&#xff0c;你可以享受到最新的功能、修复的bug以及提升的开发效率。本文将为你提供在MacOS上升级Pip和Python的详细指南&#xff0c;助你打造更强大的开发环境。…...

VB6.0实现修改EXE程序的图标

当你给一家公司做技术支持的时候&#xff0c;需求各种各样的&#xff0c;其中今天遇到就是要修改某个程序的图标&#xff0c;代码实现如下。 // q1016058890 群 214016721 //注 意&#xff1a;这个方法貌似只对有些EXE文件有效&#xff0c;这不是万能的方法&#xff0c;此…...

Python 编程基础 | 第二章-基础语法 | 2.3、for 语句

一、for 语句 1、循环语句 for循环的语法格式如下&#xff1a; for iterating_var in sequence:statements(s)例如&#xff1a; for ch in "hello world":print(ch)fruits ["banana", "apple", "mango"] for fruit in fruits:print(…...

linux下解决tomcat错误问题

错误一&#xff1a; Linux下Tomcat启动报错&#xff1a;Neither the JAVA_HOME nor the JRE_HOME environment variable is defined 原因&#xff1a;可能是Linux环境变了&#xff0c;需要在catalina.sh文件里指定JDK路径 解决方式&#xff1a; 在/bin/catalina.sh配置文件中加…...