个人主页:Lei宝啊
愿所有美好如期而遇
选择题
请找出下面程序中有哪些错误()
int main()
{int i = 10;int j = 1;const int *p1;//(1)int const *p2 = &i; //(2)p2 = &j;//(3)int *const p3 = &i;//(4)*p3 = 20;//(5)*p2 = 30;//(6)p3 = &j;//(7)return 0;
}
A. 1,2,3,4,5,6,7
B. 1,3,5,6
C. 6,7
D. 3,5
解析:(1)限制*p1,并不限制p,也就是说,可以修改指针。(2)const同样不限制p,初始化地址是正确的。(3)也是同(2)的道理,所以是对的。(4)中的const限制指针,但是初始化不受影响,所以是对的。(5)中p3不能修改,但是*p3可以修改。(6)中p2可以修改,但是*p2不可修改,所以是错的。(7)中p3不可修改,所以错误。
因此正确答案选C。
编程题
排序子序列https://www.nowcoder.com/questionTerminal/2d3f6ddd82da445d804c95db22dcc471?orderByHotValue=0&commentTags=Java
思路:
判断v[i]和v[i+1]的大小,如果结果是小于,则进入小于的while循环,在结束该循环时算一个子序列;如果是大于,则进入大于的while循环,在结束循环时算一个子序列;如果是等于,则走完等于序列即可。
#include <iostream>
#include <vector>
using namespace std;int main()
{int n = 0;cin >> n;vector<int> v(n+1);v[n] = 0;for(auto &e : v) cin >> e; int i = 0;int count = 0;while(i < n){if(v[i] < v[i+1]){while(v[i] < v[i+1]){i++;}count++;i++;}else if(v[i] == v[i+1]){while(v[i] == v[i+1]){i++;}}else{while(v[i] > v[i+1]){i++;}count++;i++;}}cout << count;return 0;
}