【C++】刷题日记(day7)

简介: 刷题是我们学习编程的一个重要模块,刷题能帮助我们巩固我们学习的知识,能够增强我们的编程水平. 本文总共讲了5题牛客高频的选择题,以及两道牛客编程题,希望大家读后能够有所收获!

mmexport7eab7fc3f7ceda3071803ddc874b543f_1669275.jpeg

平安喜乐,万事顺意!

一、选择题

1、关于子进程和父进程的说法,下面哪一个是正确的()

A、子选程被撤销时,其从属的父进程也被撤销

B、一个造程可以没有父进程或子进程

C、父进程被撤销时,其所有子进程也被相应撤消

D、一个父进程可以创建若干个子进程,一个子进程可以从属于若干个父进程

答案:C。一个父进程可以创建若干个子进程,一个子进程只能属于一个父进程。父进程被撤销时,其所有子进程也被相应撤消。

2、关于线程和进程,下面说法正确的是()

A、线程提高了不同执行程序间的通信效率

B、进程和线程都是资源分配和调度的基木单位

C、进程切换比同一进程内部的线程切换花费的时间少

D、终止上一个进程比终止一个线程花费的时间少

答案: A。分析:进程是资源分配和调度的基木单位,线程不是。进程切换比同一进程内部的线程切换花费的时间多,因为严格意义上线程是一个小进程。


3、整数Ox12345678,在采用bigendian中内存的排序序列是()

87 65 43 21

21 43 65 87

78 56 34 12

12 34 56 70

答案: C。分析:本题的考点是大端存储。

image.png


4、进程调度时,下列进程状态的变化过程哪一项是不可能发生的()

A、就绪挂起->阻塞挂起

B、阻塞挂起>就绪挂起

C、就绪挂起-就绪

D、阻塞挂起->阻塞

答案:A。分析:

image.png

5、以下关于多线程的叙述错误的是:

A.线程同步的方法包括使用临界区,互斥量,信号量等

B.两个线程同时对简单类型全局变量进行写操作也需要互斥

C.实现可重入函数时,对自动变量也要用互斥量加以保护

D.可重入函数不可以调用不可重入函数

答案:C。分析:可重入函数可认为是可以被中断的函数,自动变量定义的时候才被创建,函数返回时,系统回收空间。局部作用域变量,不需要互斥量。可重入函数对全局变量才需要互斥量保护。


编程题

1、反转部分单向链表

image.png

代码示例:

list_node*reverse_list(list_node*head, intL, intR)
{
//////在下面完成代码if(head==nullptr||R<L||L<1)
returnhead;
list_node*p=head;
list_node*pre=nullptr;//list_node*pos=nullptr;
intlen=0;
while(p){
len++;
pre= (len==L-1?p : pre);
pos= (len==R+1?p : pos);
p=p->next;
    }
if(R>len)
returnhead;
list_node*node1= (pre==nullptr?head : pre->next);
list_node*node2=node1->next;
node1->next=pos;
list_node*next=nullptr;
while(node2!=pos){
next=node2->next;
node2->next=node1;
node1=node2;
node2=next;
    }
if(pre!=nullptr){
pre->next=node1;
returnhead;
    }
returnnode1;
}

2、猴子分桃

 
         

image.png

分析题意:(1)开始时的总桃子数:X = 5^n - 4

(2)老猴子最后能得到的桃子数:n + (X+4)*(4/5)^n - 4 = n + 4^n - 4

 因为老猴子能得到的桃子主要有两个来源:一是每个小猴子都要给一个,有 n 只小猴子,就可以得到 n 个;二是最后剩余的桃子都归老猴子所有,从上面最后一次的结果来看,一共剩余了 (X+4)*(4/5)^n 个桃子,但是这里面包括我们最早借给它们的 4 个,实际上剩余的桃子数为 (X+4)*(4/5)^n - 4 ,所以最后总共能得到的桃子数就是 n + (X+4)*(4/5)^n - 4 = 4^n + n - 4。

代码示例:

#include<iostream>#include<string>#include<vector>#include<math.h>#include<algorithm>usingnamespacestd;
intmain()
{
intn;
while (cin>>n&&n!=0)
    {
longlonga, b=0;
longlongm=n;
a= (long)pow(5, n) -4;
longh=a;
while (n--)
        {
a-=1;
a= (a/5) *4;
        }
b=a+m;
cout<<h<<" "<<b<<endl;
    }
return0;
}


总结

本文总共讲了5题牛客高频的选择题,以及两道牛客编程题,希望大家读后能够有所收获!




相关文章
|
算法 C语言 C++
从C语言的使用转换到C++(上篇)——刷题、竞赛篇
从C语言的使用转换到C++(上篇)——刷题、竞赛篇
277 0
|
存储 C++
【五一创作】C++刷题 【入门4】数组
【五一创作】C++刷题 【入门4】数组
131 0
|
机器学习/深度学习 存储 人工智能
【c++百日刷题计划】 ———— DAY12,奋战百天,带你熟练掌握基本算法
【c++百日刷题计划】 ———— DAY12,奋战百天,带你熟练掌握基本算法
216 0
|
6月前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-2
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
6月前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-1
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
7月前
|
C语言 C++
【C语言/C++】牛客网刷题训练-12
【C语言/C++】牛客网刷题训练-12
|
7月前
|
存储 自然语言处理 C++
刷题用到的非常有用的函数c++(持续更新)
刷题用到的非常有用的函数c++(持续更新)
89 1
|
存储 C语言 C++
【C/C++刷题——leetcode】查找字符串中最大的子串
【C/C++刷题——leetcode】查找字符串中最大的子串
334 0
|
机器学习/深度学习 人工智能 C++
【c++百日刷题计划】 ———— DAY16,刷题百天,养成刷题好习惯
【c++百日刷题计划】 ———— DAY16,刷题百天,养成刷题好习惯
192 0
【c++百日刷题计划】 ———— DAY16,刷题百天,养成刷题好习惯
|
存储 算法 C++
【c++百日刷题计划】 ———— DAY13,奋战百天,带你熟练掌握基本算法
【c++百日刷题计划】 ———— DAY13,奋战百天,带你熟练掌握基本算法
360 0