【笔试强训】Day 4

简介: 【笔试强训】Day 4

🌈选择题


有以下程序


#include<iostream>
#include<cstdio>
using namespace std;
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


首先要区分各种进制的表达格式

%o 是八进制方式输出的

最后是如何进行进制间的转化:先%再/,直到等于0


0a2653c851af460fa595bd959398a8f1.png


答案选C


以下哪个选项一定可以将flag的第二个bit置0()

A flag&=~2

B flag|=2

C flag^=2

D flag>>=2


先来复习一下:按位或(有真为真)、按位与(都真为真)、按位异或 (相同为0,相异为1)


0a2653c851af460fa595bd959398a8f1.png


答案选A


请声明一个指针,其所指向的内存地址不能改变,但内存中的值可以被改变(知道原理还做错了)


A const int const *x = &y;

B int * const x = &y;

C const int *x = &y;

D int const *x = &y;

E const int * const x = &y;


还是const的使用,谁在const的后面就是不能改变

要求所指向的内存地址不能改变,内存中的值可以被改变:即x不能变,*x解引用的值可以改变

答案选B


以下C语言指令:运行结果是什么?


int a[5] = {1,3,5,7,9};

int *p = (int *)(&a+1);

printf(“%d,%d”,*(a+1),*(p-1));


A 2,1

B 3,1

C 3,9

D 运行时崩溃


只有在& 和 sizeof之后,才表示数组本身,其余都表示首元素的地址

&a是一个地址,该地址类型为: int(*)[5]

所以&a + 1 ,跨越了一个数组大小,p被强转为(int*),p-1指向9


0a2653c851af460fa595bd959398a8f1.png


答案选C


二维数组X按行顺序存储,其中每个元素占1个存储单元。若X[4][4]的存储地址为Oxf8b82140,X[9][9]的存储地址为Oxf8b8221c,则X[7][7]的存储地址为(没看懂)


A Oxf8b821c4

B Oxf8b821a6

C Oxf8b82198

D Oxf8b821c0


复杂点的解方程计算


0a2653c851af460fa595bd959398a8f1.png


答案选A


根据下面递归函数:调用函数Fun(2),返回值是多少()


int Fun(int n)
{
  if(n==5)
  return 2;
  else
  return 2*Fun(n+1);
}


A 2

B 4

C 8

D 16


这个自己套一下就出来结果了,就不说了


答案是D


以下程序的输出结果是:


#include <iostream>
using namespace std;
void func(char **m)
{
  ++m;
  cout<<*m<<endl;
}
int main()
{
  static char *a[]={"morning", "afternoon", "evening"};
  char **p;
  p=a;
  func(p);
  return 0;
}


A afternoon

B 字符o的起始地址

C 字符o

D 字符a的起始地址


数组名表示数组首元素的地址,只有在&和sizeof之后才表示数组本身,所以这里的*a指的是首元素的地址也就是morning的地址

“morning” —> char* ,所以p必须给成二级指针

++m也就是偏移一个元素的大小,也就是指向了afternoon


0a2653c851af460fa595bd959398a8f1.png


答案选A


求函数返回值,输入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


首先我们来看看这个算法是什么来头

接下来就算9999的二进制中有多少个1?算呗


0a2653c851af460fa595bd959398a8f1.png


答案是A


#include <stdio.h>
int cnt = 0;
int fib(int n) 
{
  cnt++;
  if (n == 0)
  return 1;
  else if (n == 1)
  return 2;
  else
  return fib(n - 1) + fib(n - 2);
}
void main() {
  fib(8);
  printf("%d", cnt);
}


下列程序执行后,输出的结果为()

A 41

B 67

C 109

D 177


cnt实际统计的是:斐波那契递归的总次数


0a2653c851af460fa595bd959398a8f1.png


答案选B


在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是()


struct A
{
  int a;
  short b;
  int c;
  char d;
};
struct B
{
  int a;
  short b;
  char c;
  int d;
};


A 16,16

B 13,12

C 16,12

D 11,16


又是结构体对齐,老生常谈了


0a2653c851af460fa595bd959398a8f1.png


答案选C


🌈编程题


1️⃣计算糖果

题目地址:传送


0a2653c851af460fa595bd959398a8f1.png


解题思路:


枚举法: 算出A、B1、B2、C的表达式,若B1==B2即可知道abc的值为真

2d65d23f6d4748949b924e4057485923.png

不多说上代码:

#include <iostream>
using namespace std;
int main() {
    int a,b,c,d;//输入的4个整数
    cin>>a>>b>>c>>d;
    //每个人手里的糖果
    int A = (a+c)/2;
    int B1 = (b+d)/2;
    int B2 = (c-a)/2;
    int C = (d-b)/2;
    if(B1 != B2)
    {
        cout<<"No"<<endl;
    }
    else
    {
        cout<<A<<" "<<B1<<" "<<C<<endl;
    }
}


2️⃣进制转换

题目地址:传送


0a2653c851af460fa595bd959398a8f1.png


解题思路:


首先建立两个字符串s和table分别来存放最后的输出结果、进制的对应各个数字

求得M中的每个数位上的数字(通过%和/来实现)

M求出的结果放进字符串s中,最后倒置字符串

如果M为负数,注意设flag进行区分处理

2d65d23f6d4748949b924e4057485923.png


#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main() {
    string s = "",table = "0123456789ABCDEF";
    int m, n;
    cin>>m>>n;
    //注意当m<0的时候
    bool flag = false;
    if(m < 0)
    {
        m = -m;
        flag = true;
    }
    //注意当m=0的时候
    if(m == 0)
    {
        s = "0";
    }
    while(m)
    {
        s += table[m%n];
        m /= n;
    }
    if(flag == true)
    {
        s += '-';
    }
    //逆置字符串 :3 2 1 -
    reverse(s.begin(), s.end());
    cout<<s<<endl;
}
相关文章
|
域名解析 网络协议 安全
记一次 HTTPS 抓包分析和 SNI 的思考
日常听说 HTTPS 是加密协议,那现实中的 HTTPS 流量,是真的完全加密吗?答案是,不一定。原因嘛,抓个包就知道了。我们用 curl 命令触发一下!
764 1
|
11月前
|
安全 网络协议 网络安全
无需花钱!教你申请免费 IP 地址 SSL 证书的完整指南
为IP地址配置SSL证书较为复杂,因大多数免费SSL证书仅支持域名验证,而不支持IP地址。SSL证书基于域名进行身份验证,而IP地址缺乏类似机制。通常,免费证书提供商如Let&#39;s Encrypt不支持IP地址,但JoySSL提供针对IP地址的免费试用SSL证书服务。用户需访问JoySSL官网注册并填写特定注册码230922获取资格,后续按提示提交申请并验证IP地址所有权。审核通过后可获得证书。JoySSL还提供多样化的证书选择、简便申请流程和优质技术支持,满足不同需求。
|
网络协议
Nmap 中的各种端口扫描技术
Nmap 中的各种端口扫描技术
708 0
|
运维 Kubernetes Devops
阿里云云效操作报错合集之Message: code: 403, 当前代码组下无法创建可见性为企业可见的代码库,该如何处理
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
区块链
NFT数字藏品(iBOX平台)交易系统开发逻辑技术方案
 NFT是元宇宙的核心和底层支撑之一。As a polymer of equity certificates and smart contracts,NFT has been highly consistent with digital art,intellectual property rights and other market attractive assets since its emergence.It is almost difficult for brands to completely ignore NFT in their own business consideratio
|
数据安全/隐私保护
chown命令,chown普通用户无法修改所属其他用户,只有root可以修改用户,su -
chown命令,chown普通用户无法修改所属其他用户,只有root可以修改用户,su -
|
小程序 算法 搜索推荐
2024基于协同过滤算法springboot微信订餐小程序项目
2024基于协同过滤算法springboot微信订餐小程序项目
196 0
2024基于协同过滤算法springboot微信订餐小程序项目
|
存储 缓存 弹性计算
阿里云服务器共享型、计算型、通用型、内存型有何区别,应该如何选择?
阿里云服务器共享型、计算型、通用型、内存型是目前阿里云的主售云服务器实例,因为这几个实例的云服务器具有安全、稳定,适合各类通用场景的特点,但是他们之间又是有区别的,那么我们应该如何选择呢?
阿里云服务器共享型、计算型、通用型、内存型有何区别,应该如何选择?
|
机器学习/深度学习 人工智能 计算机视觉
使用 LabVIEW调用LeNet快速搭建手写数字识别系统(内含源码)
使用 LabVIEW调用LeNet快速搭建手写数字识别系统(内含源码)
402 0
使用 LabVIEW调用LeNet快速搭建手写数字识别系统(内含源码)