提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 一、选择题
- 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;
}
};
运行结果: