提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 一、选择题
- 1-5题
- 6-10题
- 二、编程题
- 题目一
- 题目二
一、选择题
1-5题
如图所示,如图所示p-3指向的元素是6,printf里面的是%s,从6开始连续打印直到遇到0结束,所以打印的是6789。
答案选B。
首先第一个switch里x%3是1,为真,进入case 1,进入第二个switch,y是3,所以会进入default输出hello,又因为没有break,所以会进入第一个switch的case 2,输出third。
所以最终会输出hellothird,答案选D。
A:二维数组可以省略列,不可以省略行,故A错。
B: B正确。
C: 两行,初始化的时候有三个{},越界了。
D: {0,,2}不能间隔初始化,就是不能连续俩逗号,中间啥都不写。
故选B。
A不正确,C语言中不能return 两个数回去的.
–
int *p[4] 是一个指针数组,即存放指针的数组,这个是一个数组,里面放着4个int类型的指针。
A: 是放int类型的数组,不符。
B: 是一个int类型的指针。
C: []优先级本来就比*高,因此加上括号和不加括号int *p[4]等同,
D: p先和*结合表示p是一个指针,前面的在和int [4]结合,表示指向一个存放4个1int类型元素的数组,是一个数组指针,即指向数组的指针。
故选C。
6-10题
ABC均可。
D选项中ch=getchar放在了for循环的预处理位置
预处理位置的语句只会执行一次,所以无法统计,故选D。
mystring指向数组首元素,mystring赋值给ptr,ptr也指向数组首元素,ptr+=5,向后便宜五个单位,指向fg。
故选B。
考察指针常量和常量指针,const在*右边是指针常量,const在*左边是常量指针。故12是常量指针,3是指针常量。
故选C。
32位系统下指针大小是四个字节,[]优先级比**高,所以先和[]结合,是个三行四列的数组,放的是二级指针,3*4*4=48,故选B。
大端:低位存高地址
小端:低位存低地址
例如int i=1
大端:00 00 00 01
小端:01 00 00 00
低地址---------->高地址
long long a=1,b=2,c=3;
故选B。
二、编程题
题目一
题目链接:
字符串中找出连续最长的数字串
运行代码:
#include <iostream>
#include<string>
using namespace std;int main() {string a, b, c;std::cin >> a;for (char i : a) {if (i >= '0' && i <= '9')b += i;else {if (b.size() > c.size()) {c = b;b.clear();}b.clear();}}if (b.size() > c.size()) {c = b;b.clear();}cout << c;
}
// 64 位输出请用 printf("%lld")
运行结果:
题目二
题目链接:
数组中出现次数超过一半的数字
运行代码:
class Solution {public:int MoreThanHalfNum_Solution(vector<int> numbers) {
// 因为用到了sort,时间复杂度O(NlogN),并非最优if (numbers.empty()) return 0;sort(numbers.begin(), numbers.end()); // 排序,取数组中间那个数int middle = numbers[numbers.size() / 2];int count = 0; // 出现次数for (int i = 0; i < numbers.size(); ++i) {if (numbers[i] == middle) ++count;}return (count > numbers.size() / 2) ? middle : 0;}
};
运行结果: