安徽做网站电话,中国十大大型门户网站,猪八戒做网站怎么样,深圳网站建设厂家哪家好Day 1
一、选择题 解析#xff1a;
在数字不会溢出的前提下#xff0c;对于正数和负数#xff0c;有#xff1a;
1#xff09;左移n位#xff0c;相当于操作数乘以2的n次方#xff1b;
2#xff09;右移n位#xff0c;相当于操作数除以2的n次方。 解析#xff1a…Day 1
一、选择题 解析
在数字不会溢出的前提下对于正数和负数有
1左移n位相当于操作数乘以2的n次方
2右移n位相当于操作数除以2的n次方。 解析
int (*p[10])(int*)
(*p[10])p是一个数组这个数组的元素是指针
这些指针指向的是一个函数
这个函数的参数是 int *返回值是int。
因此p是 元素指向函数的指针 的数组 即 元素为函数指针 的数组。 一般我用来分辨这种 就看(*p),p(),p[]这三类——指针函数数组。一般来说和[]优先级先级相同比*高。 这题先和[]结合故为数组然后再分析各自内容 解析
STL中一级容器是指, 容器元素本身是基本类型, 非组合类型。
set, multiset中元素类型是pairkey_type, key_type
map, multimap中元素类型是pairkey_type, value_type;
STL中的常用容器包括顺序性容器vector、deque、list、关联容器map、set、容器适配器queue、stac。 二、编程题
1.计算某天是星期几
输入一个年月日计算出这个日期对应的是星期几 代码
#includeiostream
using namespace std;int main() {char weekname[][10] {Monday,Tuseday,Wednesday,Thursday,Friday,Saturday,Sunday};int year;int month;int day;cin year;cin month;cin day;if (month 1 || month 2) {month 12;year--;}int w;w (day 2 * month 3 * (month 1) / 5 year year / 4 - year / 100 year / 400) % 7;cout weekname[w] endl;
}Day 2
一、选择题 class XA {private: int x;public: XA(int n) {xn;}} ;class XB :public XA{private: int y;public: XB(int a,int b);}; 这句代码是XB类的构造函数的初始化列表部分。它用于初始化XB类的成员变量并调用基类XA的构造函数。
这里XB::XB(int a ,int b)是XB类的构造函数的声明它接受两个整数参数a和b。
后面的:XA(a),y(b)是初始化列表。它用于初始化类的成员变量和调用基类的构造函数。
XA(a): 这部分调用了基类XA的构造函数并将参数a传递给它。这是为了确保在XB的构造函数体执行之前基类XA的部分已经被正确地初始化。y(b): 这部分初始化了XB类自己的成员变量y使用参数b作为初始值。
初始化列表是一个高效且推荐的方式来初始化类的成员变量因为它可以避免额外的赋值操作并且对于某些类型如引用和常量成员是必需的。 重复多次fclose一个打开过一次的FILE *fp指针会导致未定义行为。
在C语言中fclose函数用于关闭文件流释放与之关联的资源。当你调用fclose时会将文件缓冲区的内容写入到磁盘中并清空缓冲区。如果你试图再次关闭已经关闭的文件流那么就会发生未定义行为因为文件流已经被关闭并且资源已经被释放再次调用fclose函数就会导致错误的结果。 16进制字母部分不分大小写的 两个考点 1.构造函数的调用顺序是基类》对象》派生类析构顺序相反 2.构造函数里初始化列表初始化顺序由成员变量的声明顺序决定。 二、编程题 #includeiostream
#includealgorithm
#includestdio.h
using namespace std;
int main(){int nums;cinnums;int* num new int[nums];for (int i 0; i nums; i)cinnum[i];sort(num, num nums);int i 0;for (; i nums; i){if (num[i] ! i)break;}cout (i) endl;return 0;}
// 64 位输出请用 printf(%lld)Day 3
一、选择题 int printf ( const char * format, ... );返回值 正确返回输出的字符总数错误返回负值 与此同时输入输出流错误标志将被置值可由指示器ferror来检查输入输出流的错误标志。 在行尾放一个 \ 编译器会忽略行尾的换行符起到续行的作用。 逗号表达式优先级最低从左到右执行如果逗号左边改变了某些变量的值右边使用改变后的变量值整个表达式最终的值为逗号右边的值-a对a的值没有发生改变所以a6自增自减的优先级高与关系运算符所以ba--返回falsecd返回false组合为如果前面的表达式为真则返回后面的值为假返回后面的值最后返回ab为false0。 1.这里为指针那么str存储的是该字符串的地址所以sizeofstr则为该字符串的首地址 如果是64位地址为8字节Byte如果是32位地址为4字节Byte。 2.而strlenstr就是统计字符串长度那么就是6。 在什么情况下系统会调用拷贝构造函数三种情况 1用类的一个对象去初始化另一个对象时 2当函数的形参是类的对象时也就是值传递时如果是引用传递则不会调用 3当函数的返回值是类的对象或引用时 二、编程题 #include iostream
#includebits/stdc.h
using namespace std;//#includealgorithm reverse//2x1 奇数 n 2x1 x (n - 1)/2
//2x2 偶数 n 2x2 x (n - 2)/2int main() {int n;cinn;string s;while(n){if(n%21)//奇数{s2;n (n-1)/2;}else//偶数{s3;n (n -2)/2;}}reverse(s.begin(),s.end());coutsendl;
}
Day 4
一、选择题 1.内联函数的函数体内不能含有复杂的结构控制语句如switch和while否则编译器将该函数视同普通函数那样产生函数调用代码。 2.递归函数不能被用来作为内联函数。 3.内联函数一般适合于只有1-5行语句的小函数对于一个含有很多语句的大函数没必要使用内联函数来实现。 4.内联函数的定义必须出现在内联函数第一次被调用之前。 5.对内联函数不能进行异常接口声明就是不能声明可能抛出的异常。 1. 内联函数是通过inline关键字来定义的它的作用是把函数的代码直接嵌入到调用该函数的地方而不是通过函数的调用来执行代码。 2. 内联函数的主要优势是可以减少函数调用的开销从而提高程序的执行效率。但是如果函数体过于庞大内联可能会导致代码膨胀增加程序的体积从而反而降低程序的效率。 3. 内联函数的调用方式和普通函数一样不同的是编译器不会生成函数调用代码而是直接拷贝内联函数的代码到调用处。 4. 内联函数适用于一些代码量较小频繁调用的函数比如一些简单的getter和setter函数。 5. 在编写内联函数时需要注意它只是建议编译器将函数呈现为内联形式而不是强制要求编译器这么做。如果编译器认为内联函数不适合内联它就会按照普通函数来处理 #define 定义一个预处理宏 #undef 取消宏的定义 #if 编译预处理中的条件命令相当于C语法中的if语句 #ifdef 判断某个宏是否被定义若已定义执行随后的语句 #ifndef 与#ifdef相反判断某个宏是否未被定义 #elif 若#if, #ifdef, #ifndef或前面的#elif条件不满足则执行#elif之后的语句相当于C语法中的else-if扩展条件 #else 与#if, #ifdef, #ifndef对应, 若这些条件不满足则执行#else之后的语句相当于C语法中的else扩展条件 #endif #if, #ifdef, #ifndef这些条件命令的结束标志. defined 与#if, #elif配合使用判断某个宏是否被定义 二、编程题
Day 5
一、选择题 A new和delete的释放方法不同. B 子类重新定义父类虚函数的行为叫做 重写(覆盖) C C语言函数可以递归调用但是不能嵌套定义. D 正确, 在C语言调用函数中只能把实参的值传给形参形参的值不能传给实参.(不考虑引用指针等情况) 官方解析正确答案B A 选项 static_cast 用于良性转换一般不会导致意外发生风险很低。 B 选项 dynamic_cast 借助 RTTI用于类型安全的向下转型Downcasting。 C 选项 const_cast 用于 const 与非 const、volatile 与非 volatile 之间的转换。 D 选项 reinterpret_cast 高度危险的转换这种转换仅仅是对二进制位的重新解释不会借助已有的转换规则对数据进行调整但是可以实现最灵活的 C 类型转换。 A友元函数并不需要通过对象或指针调用它可以像普通函数一样直接调用。 B友元函数是独立于类继承机制的和类是否被继承没有关系。因此友元函数可以被子类或父类继承。 C友元函数确实没有 this 指针因为它不属于类的成员函数也没有被绑定到任何一个类的对象上。 D这个说法是错误的。虽然友元函数能够访问类的私有成员但并没有破坏类的继承性机制。类的派生类仍然可以继承这些私有成员只是无法在自己的成员函数中访问而已。 二、编程题 #include iostream
using namespace std;int main() {int n;cinn;int *num new int[n];int f 0;int sum 0;for(int i 0;in;i){cinnum[i];sum num[i];if(num[i] 0){f;sum 0;}}if(f n){coutnum[n-1];}else {coutsumendl;}return 0;
}
// 64 位输出请用 printf(%lld)
标准答案 连续最大和
#includeiostream
using namespace std;
int main(){int n,*a;while(cinn){a new int[n];for(int i0;in;i){cina[i];}int suma[0],maxa[0];for(int i1;in;i){sum sum0? (suma[i]): a[i];if(summax){max sum;}}coutmaxendl;}return 0;
} #includeiostream
using namespace std;
#includestringint main()
{string a 11;//cin a;string b 10;//cin b;string res;int i a.size() - 1;int j b.size() - 1;int carry 0;while (i 0 || j 0 || carry ! 0){int digitA i 0 ? a[i] - 0 : 0;int digitB j 0 ? b[i] - 0 : 0;int sum digitA digitB carry;carry sum 2 ? 1 : 0;sum sum 2 ? sum - 2 : sum;res to_string(sum);i--;j--;}reverse(res.begin(), res.end());cout res endl;/** 1.字符转整数* 2.遍历两个字符串完成进位操作* 3.整数转换字符串函数to_string*/return 0;
}
Day 6
一、选择题 不应该说类的大小具体讲应该是类对象实例的大小有关因素普通成员变量虚函数、继承无关因素为静态成员变量、静态成员函数及普通成员函数。 1、为类的非静态成员数据的类型大小之和 由编译器额外加入的成员变量的大小用来支持语言的某些特性如指向虚函数的指针 为了优化存取效率进行的边缘调整字节对齐 与类中的构造函数析构函数以及其他的成员函数无关 在C中每个对象都必须具有非零的大小。即使类A没有显式定义任何成员变量编译器也会为其分配一个字节的大小以确保每个对象在内存中都有一个唯一的地址。这个额外的字节被称为“占位符”字节或“填充”字节 print(*)函数调用的返回值是字符串中字符个数,不包含结束标识符\0’相当于strlen,即返回值为1恒成立;而‘0’的asc 码是48不等于0也是恒成立所以选择B struct 的成员默认是公有的 class 的成员默认是私有的 class继承默认是私有继承 struct 的继承默认是公有的 二、编程题 #includeiostream
using namespace std;
#includevector
#includeunordered_map
class Solution {
public:int garbageCollection(vectorstring garbage, vectorint travel) {int res 0;//总时间(包括收集时间和移动时间)int cur_dis 0;//车辆当前位置距离起点的移动时间unordered_mapchar, intdistance;//存储每种垃圾类型累计的移动时间for (int i 0;igarbage.size(); i){res garbage[i].size();if (i 0)//取移动时间房子序号跟移动时间数组的序号差1{cur_dis travel[i - 1];//加上当前房子的垃圾收集时间//只有i大于0才累加移动时间}for (auto c : garbage[i])//遍历当前房子的垃圾类型{distance[c] cur_dis;//更新移动时间}}for (auto [k, v] : distance){cout k v endl;res v;//计算时间}return res;}
};int main()
{vectorstring garbage { G,P,GP,GG };vectorint travel { 2,4,3 };Solution s;int time s.garbageCollection(garbage,travel);cout time endl;return 0;
}
Day 7
一、选择题 数组做函数参数会退化成指针 故44 二、编程题 #includeiostream
using namespace std;
#includeunordered_map
#includemath.h
class Sultion
{unordered_mapint, intmemo;
public:int minDay(int n){if (n 1){return 1;}if(memo.contains(n)){return memo[n];}return memo[n] min((minDay(n / 2) n % 2), (minDay(n / 3) n % 3)) 1;}
};int main()
{int n;cin n;Sultion s;int minDay s.minDay(n);cout minDay endl;return 0;
}
大神题解https://leetcode.cn/problems/minimum-number-of-days-to-eat-n-oranges/solutions/2773476/liang-chong-fang-fa-ji-yi-hua-sou-suo-zu-18jv/
Day 8
一、选择题 double的范围要比float的范围大float要比int的范围大 类型转换分两种 自动类型转换隐式 特点 代码不需要进行特殊处理自动完成规则 数据范围从小到大安全性安全强制类型转换 特点代码需要进行特殊的格式处理不能自动完成格式范围小的类型 范围小的变量名 (范围小的类型) 原本范围大的数据数据损失比如3.14double转成int会丢失小数部分安全性不安全 C语言中以数字1-9开头表示十进制,以0开头表示八进制,以0X开头表示十六进制 Line::Line(Point xp1,Point xp2):p1(xp1),p2(xp2){} //解释4次的原因 首先这个方法是Line的构造函数,它有2个参数类型为Point(注意不是引用(Point),也不是指针(Point*)) 其次冒号后面的叫构造函数的初始化列表用于初始化成员变量,注意是初始化 知道这两点之后那么再来说原因 c这门语言不像java如果参数不写成引用Point或者指针Point*那么在传递参数的时候会建立一个对象的副本。 Line::Line(Point xp1,Point xp2):p1(xp1),p2(xp2){} 传入xp1时会去创建一个Point的对象调用1次Point的拷贝构造这是第1次同理xp2再进行p1(xp1)时这叫初始化p1,不是定义之后再赋值这又会调用1次Point的拷贝构造同理p2(xp2)因此共4次 一般来说这个方法最好这么写Line::Line(const Point xp1,const Point xp2):p1(xp1),p2(xp2){},这样就只会调2次了 第一种AI生成解法
class Solution {
public:int minimumRounds(vectorint tasks) {std::unordered_mapint, int counts;for (int task : tasks) {counts[task];}int totalRounds 0;for (const auto count : counts) {if (count.second 1) {return -1; // 如果有任务数量为1则无法完成} else if (count.second % 3 0) {totalRounds count.second / 3;} else {totalRounds (count.second / 3) 1;}}return totalRounds;}
};第二种大神的解法
https://leetcode.cn/problems/minimum-rounds-to-complete-all-tasks/solutions/1427626/ha-xi-biao-tan-xin-by-endlesscheng-tgtf/
class Solution {
public:int minimumRounds(vectorint tasks) {unordered_mapint, int cnt;for (int t : tasks) {cnt[t];}int ans 0;for (auto [_, c] : cnt) {if (c 1) {return -1;}ans (c 2) / 3;}return ans;}
}; 持续更新ing 分享完毕关注我带你了解更多的编程知识。
看到这里不妨点个攒关注一下吧 最后谢谢你的观看