C/C++ 笔试(一)

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

    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

    B

    %m.ns 输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格。

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

    A * p+=1;

    B (* p)++;

    C ++(* p) ;

    D *p++;

    D

    A 其效果等同于 *p = *p + 1

    B 解引用,后置++

    C 解引用,前置++

    D 首先执行解引用操作(即读取指针当前指向的值),然后执行指针自增操作(即移动指针到下一个位置)。但是,这个读取的值并不会被存储在一个临时变量中,它仅仅是为了执行解引用这个动作。之后,指针会立即移动到下一个位置。

  3. 下面代码会输出()

    int main()
    { int a[4]={1,2,3,4}; int *ptr=(int*)(&a+1); printf("%d",*(ptr-1)); return 0;
    }
    

    A 4

    B 1

    C 2

    D 3

    A

    数组名是一个常量指针,指向的是首元素地址,但是有这两个例外:

    1. sizeof(arr) 此时的数组名代表整个数组,即单独放在sizeof中的数组名代表整个数组

    2. &arr 这是的数组名也代表整个数组,取出的是整个数组的地址

    这里&a是把整个数组拿出来了,+1指针后移一个int的距离,后面ptr-1往前移动一个int的距离就是 4 了

  4. 请找出下面程序中有哪些错误()

    int main()
    {int i = 10;int j = 1;const int *p1;//(1)int const *p2 = &i; //(2)p2 = &j;//(3)int *const p3 = &i;//(4)*p3 = 20;//(5)*p2 = 30;//(6)p3 = &j;//(7)return 0;
    }
    

    A 1,2,3,4,5,6,7

    B 1,3,5,6

    C 6,7

    D 3,5

    C

    常量指针:指针所指空间的值不能被修改,但是指针的指向可以改变

    指针常量:指针就是一个常量,指向不能被修改,但是所指空间的指可以改变

    区分:const * 的相对位置:const在 * 的左边:常量指针;const在 * 的右边:指针常量

    1是一个常量指针,2也是常量指针,指向的值就不能被修改, 6修改了p2指向空间的值, 6错误, 3 p2的指向发生了改变,4是一个指针常量,5 p3所指空间的值被修改,7 指针的指向发生了改变,7错误

  5. 在32位cpu上选择缺省对齐的情况下,有如下结构体定义:

    struct A{unsigned a : 19;unsigned b : 11;unsigned c : 4;unsigned d : 29;char index;
    };
    

    则sizeof(struct A)的值为()

    A 9

    B 12

    C 16

    D 20

    C

    32位cpu选择缺省对齐是以4字节一个单位

    4字节:19 + 11

    4字节:4

    4字节:29

    4字节:8

  6. 设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是

    A n=0;while(ch=getchar()!=‘\n’) n++;

    B n=0;while(getchar()!=‘\n’)n++;

    C for(n=0;getchar()!=‘\n’;n++);

    D n=0;for(ch=getchar();ch!=‘\n’;n++);

    D

    for循环的初始化部分只会执行一次

  7. 假设在一个 32 位 little endian 的机器上运行下面的程序,结果是多少?

    int main()
    {long long a = 1, b = 2, c = 3;printf("%d %d %d\n", b, c, a);return 0;
    }
    

    A 1,2,3

    B 2,0,3

    C 1,3,2

    D 3,2,1

    B

    大端:低位存高地址

    小端:低位存低地址

    int a = 1;
    大端: 00 00 00 01
    小端: 01 00 00 00
    低地址      高地址
    

    三个数是从右向左入栈的,程序栈帧是由高地址向低地址开辟的

    a、b、c在程序栈中的存储:

    02 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00

    低地址 高地址

    栈是后进先出的,b先打印4字节是02 00 00 00 ,出栈,c再打印4字节是00 00 00 00,出栈,a先打印4字节是03 00 00 00, 所以最后打印是 2 0 3

    注:三个数的入栈顺序是由使用时决定的。

  8. int main()
    {int m=0123, n=123;printf("%o %o\n", m, n);return 0;
    }
    

    程序运行后的输出结果是()

    A 0123 0173

    B 0123 173

    C 123 173

    D 173 173

    C

    二进制:10101b

    八进制:0123

    十进制:123

    十六进制:0x123 或 123h

    %d:十进制方式输出

    %o:十进制方式输出

    %x:十六进制方式输出

  9. 二维数组X按行顺序存储,其中每个元素占1个存储单元。若X [4] [4]的存储地址为0xf8b82140,X [9] [9]的存储地址为0xf8b8221c,则X [7] [7]的存储地址为()。

A 0xf8b821c4

B 0xf8b821a6

C 0xf8b82198

D 0xf8b821c0

A

解法一:

设:数组的起始地址为start,总共m行,n列

&x [4] [4] = start + 4*n + 4 = 0xf8b82140

&x [9] [9] = start + 9*n + 9 = 0xf8b8221c

start = n =

&x [7] [7] = start + 7*n + 7

解法二:

&x [4] [4] = 0xf8b82140

&x [4] [9] = 0xf8b82145

&x [9] [9] = 0xf8b8221c

4 4 和 9 9 隔了5行

21c - 145 = 0xb7 = 215

一行有43列

&x [7] [7] = &x [7] [9] - 2

= &x [4] [9] + 3*43 -2

= 0xf8b82145 + 127

= 0xf8b82145 + 0x75

= 0xf8b821c4

  1. 求函数返回值,输入x=9999

    int func(int x)
    {int count=0;while (x){count++;x=x&(x-1);//与运算}return count;
    }
    

    A 8

    B 9

    C 10

    D 12

    A

    x=x&(x-1) 算法就是把x二进制中的一位1消去,所以就要计算x二进制中1的个数

    9的二进制:1001

    9999的二进制 :1001 1001 1001 1001

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

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

相关文章

BigDecimal比较两数大小

文章目录 关于BigDecimal 关于BigDecimal 在Java中,可以使用compareTo方法来比较两个BigDecimal类型的数据的大小。该方法会返回一个整数,表示两个数的大小关系。 如果返回值小于0,表示第一个数小于第二个数。 如果返回值等于0,表…

【Logback】Logback 中的 Appenders

目录 1、什么是 Appenders? 2、解说 AppenderBase.doAppend() 方法 3、logback-core 模块中的 Appenders (1)OutputStreamAppender (2)ConsoleAppender (3)FileAppender (4&a…

乐观锁存在哪些问题?

乐观锁存在哪些问题? 文章目录 乐观锁存在哪些问题?ABA 问题循环时间长开销大只能保证一个共享变量的原子操作 文章来自Java Guide 用于学习如有侵权,立即删除 ABA 问题是乐观锁最常见的问题。 ABA 问题 如果一个变量 V 初次读取的时候是 A…

SpringCloud微服务-DockerCompose(初识、安装、部署)

DockerCompose(初识、安装、部署) 文章目录 DockerCompose(初识、安装、部署)初识DockerCompose?DockerCompose安装DockerCompose部署微服务问题解决(重要!!!&#xff09…

final修饰符、多态、抽象类以及抽象类与接口的区别

final修饰符作用: 修饰变量:被final修饰的变量不能被重新赋值,即变为常量。对于基本数据类型的变量,其数值一旦在初始化后就不能更改;对于引用类型的变量,其引用不能更改,但是指向的对象内容可以…

小白跟做江科大51单片机之DS1302按键可调时钟

1.引入上一个程序的代码 2.引入Key和Timer0文件 3.获取按键值 定义全局变量unsigned char keynum main函数中 keynumKey(); 4.设置第一个按键的两种模式,以此来控制时钟的设定和显示 if(keynum1) { if(MODE0) { …

c++ primer学习笔记(二)

目录 第三章 一、命名空间的using声明 二、标准库的string类型 1、string对象的定义和初始化 2、string对象的读写 3、string对象的操作 4、string对象中字符的处理 三、标准库的vector类型 1、vector对象的定义和初始化 2、vector对象的操作 四、迭代器简介 1、简…

前端复选框问题-节点赋值未选中最后显示时确变成选中状态?

问题&#xff1a; 前两天一同事请教我&#xff1a;前端复选框问题-节点赋值未选中最后显示时确变成选中状态&#xff1f; 还有就是明明传过为的是false&#xff0c;在控制台上打印确变成选中状态&#xff0c;如下图&#xff1a; 以下是前端vue代码&#xff1a; <Scroll h…

CentoS迁移好帮手——银河麒麟服务器迁移运维管理平台最新介绍

•银河麒麟服务器迁移运维管理平台&#xff0c;面向大规模、集群式的服务器主机管理场景&#xff1b; •跨多种环境、高可用与分布式部署、配置管理、漏洞修复、服务包升级、CentoS迁移等多种核心运维场景解决方案&#xff1b; •CPU架构同源支持&#xff0c;兼容Intel、 海光…

Linux下下载安装JDK配置Java环境变量

Linux下下载安装JDK配置Java环境变量 1. 下载JDK 下载链接&#xff1a;(https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html) 2. 上传至服务器并解压 可通过shell工具进行上传&#xff0c;我这里是上传安装在/opt目录 解压jdk-17.0.10_linux-x64_b…

C++之关联式容器set和map的使用

目录 1、set的使用​编辑 1、初始化 2、遍历 3、查找​编辑 4、插入​编辑 5、不支持修改与下标 2、map的使用 1、初始化​编辑 2、遍历 3、map的下标(重点) #include <iostream> #include <vector> #include <set> #include <map> #include…

软件开发项目管理中各角色职责介绍

项目经理&#xff1a;项目经理在项目全生命周期中扮演着核心统筹与协调者的角色&#xff0c;负责从项目的启动、规划、执行、监控直至收尾的全过程管理。具体职责包括但不限于以下几点&#xff1a; 制定项目计划&#xff1a;依据项目业务主客户需求&#xff0c;明确项目范围、时…

MySQL学习Day26——事务基础知识

一、数据库事务概述: 事务是数据库区别于文件系统的重要特性之一,事务会让数据始终保持一致性,能通过事务机制恢复到某个时间点,可以保证提交到数据库的修改不会因为系统崩溃而丢失 1.查看引擎支持事务的情况:只有InnoDB存储引擎支持事务 SHOW ENGINES; 2.基本概念: 事…

2023预测误差位平面冗余-RDHEI Based on Bit-Plane

RRBE 本文仅供学习&#xff0c;切勿转载和搬运&#xff0c;如有侵权&#xff0c;联系立删~ 一、背景知识 The Gradient-Adjusted Predictor&#xff08;GAP&#xff0c;梯度调整预测器&#xff09; 根据被预测像素周围的七个像素进行预测 具体流程可参考文献X. Wu and N. M…

selenium4的相对定位

selenium4相对定位 Selenium 4新增了相对定位器&#xff0c;能帮助用户查找元素附近的其他元素。可用的相对定位器有above、below、toLeftOf、toRightOf、near。在Selenium 4中&#xff0c;find_element方法能够接受一个新方法withTagName&#xff0c;它将返回一个RelativeLoca…

项目管理必备的五张图表,助力你高效掌控全局

在项目管理中&#xff0c;图表作为一种直观的工具&#xff0c;帮助项目经理更有效的规划、监控和控制项目的各个方面&#xff0c;以下是项目经理常用的几张图表&#xff0c;它们在项目管理中发挥着至关重要的作用。 1、甘特图 甘特图&#xff08;Gantt Chart&#xff09;是最…

C语言——oj刷题——猜数字游戏

当用C语言来实现猜数字游戏时&#xff0c;我们可以设计一个简单的游戏规则&#xff1a;计算机随机生成一个1到100之间的整数&#xff0c;玩家需要通过猜测来猜出这个数字。游戏会根据玩家猜测的数字与目标数字的大小关系给出提示&#xff0c;直到玩家猜中为止。 下面是一个用C…

类体相关知识

定义 类声明之后的一对大括号“{”&#xff0c;“}” 以及它们之间 的内容称作 &#xff0c;大括号之间的内容称作类体的内容。 组成部分 变量的声明&#xff1a;用来刻画属性 。 方法的定义&#xff1a;用来刻画行为功能

2023年12月CCF-GESP编程能力等级认证Python编程七级真题解析

本文收录于专栏《Python等级认证CCF-GESP真题解析》,专栏总目录・点这里 一、单选题(每题 2 分,共 30 分) 第1题 假设变量 x 为 float 类型,如果下面代码输入为 100,输出最接近( )。 A.0 B.-5 C.-8 D.8 答案:B 第2题 对于下面动态规划方法实现的函数,以下选项中…

python 远程代码第一次推送

conda windows 环境 conda 安装后 配置环境变量 运行 conda init; conda active base 创建虚拟环境 conda create -n my_venv python3.9.5 虚拟环境应用 file-->New project --> Existing interpreter ... -->Virtualenv environment-->interpreter ...--&g…