1. %m.ns 打印输出

day01 1. %m.ns 打印输出
以下程序的运行结果是()_表示空格
#include int main(void) {printf("%s , %5.3s\n", "computer", "computer");return 0;}
A, puter
B, __com
C,
D, compu.ter
【答案解析】B
%m.ns打印输出,其中m表示的是输出字符串的宽度,而n表示从左起截取目标字符串n个字符,并且是右对齐,如果左边不够补空格
若字符串长度>n>m
例如:%3.5s,“” 输出的就是"com"
若n>字符串长度
例如:%.15s,“” 输出的就是""
那么该题%5.3s的输出结过应该为"__com"
2. 赋值表达式的返回值
下列main()函数执行后的结果为()
int func() {int i, j, k = 0;for (i = 0, j = -1; j = 0; i++, j++) {k++;}return k;}int main() {cout << (func());return 0;}
A -1
B 0
C 1
D 2
【答案解析】B
该题目其实考察的是进入for循环的次数,而for循环的判断部分是 j = 0 ,是一个赋值语句,而赋值语句的返回值就是赋值符号右边的值,也就是0,不会进入循环
3. 贪心算法
队伍的水平值等于该队伍队员中第二高水平值,为了所有队伍的水平值总和最大的解法,也就是说每个队伍的第二个值是尽可能大的值 。所以实际值把最大值放到最右边,最小是放到最左边 。
【解题思路】:
本题的主要思路是贪心算法,贪心算法其实很简单,就是每次选值时都选当前能看到的局部最优解,所以这里的贪心就是保证每组的第二个值取到能选择的最大值就可以,我们每次尽量取最大,但是最大的数不可能是中位数,所以退而求其次,取每组中第二大的
例如 现在排序后 有 1 2 5 5 8 9 ,那么分组为1 8 9 和 2 5 5
关系arr[arr.-2*(i+1)
#include#include#includeusing namespace std;int main(){// IO型OJ可能会有多组测试用例,所以这里要持续接收输入多组测试用例 。int n;while (cin >> n){long long sum = 0;vector a;a.resize(3 * n);for (int i = 0; i < (3 * n); i++){cin >> a[i];}std::sort(a.begin(), a.end());for (int i = 0; i < n; i++) {sum += a[a.size() - (2 * (i + 1))];}cout << sum << endl;}}
day02 4. 指针内容的改变
下面叙述错误的是()
char acX[]="abc";char acY[]={'a','b','c'};char *szX="abc";char *szY="abc";
A acX与acY的内容可以修改
B szX与szY指向同一个地址
C acX占用的内存空间比acY占用的大
D szX的内容修改后,szY的内容也会被更改
【答案解析】D
针对于D选项,szX的内容改变是指的指针指向的改变,而常量字符串"abc"并未改变,所以选D
而A选项,两个字符数组开辟在栈区,所以都是可改变的对象
5. 根据递增递减分段
【答案解析】
解题思路:
本题依次比较整个数组a[i+1]>a[i] ,则进入非递减序列判断,直到遍历到下一个值不大于等于为止count++,然后进行下一位置的判断a[i+1]a[i+1] == a[i]不进行操作,++i进行下一位置遍历,因为相等既可以属于非递增序列,也可以属于非递减 序列 。
本题注意点:本题开始比较a[i+1]与a[i]进行比较,为了避免越界,数组定义为n+1个,同时给a[n] = 0; a[n] =0带来的影响,我们分为三种情况讨论:若到a[n-1] 的最后一组是非递减序列,当i==n-1,a[i] >a[i+1],因为前面的数都是大于0的,这个输入条件已经说明了(去看看题目输入条件描述),里面的循环结束,i++,count++,i==n,外面的循环结束 。若到a[n-1] 的最后一组是非递增序列,当i==n-1,a[i] >a[i+1],因为前面的数都是大于0的,这个输入条件已经说明了(去看看题目输入条件描述),循环再走一次,i++,i== n,里面的循环结束,i++,count++,i==n+1,外面的循环结束 。第三种情况 1 2 1 2 1最后一个数是单独的情况,后面补个0,序列变成1 2 1 2 1 0,当走完全面的序列 i==n-1时,a[i] > a[i+1],进入判断出一个非递增序列,count++,i++,循环结束 。也就是说数组最后一个位置多增加一个0,不会影响第1、2情况的判断,主要是帮助第3情况的正确判断 。