华为2016校园招聘上机笔试题
题库检索关键词:华为2016校园招聘上机笔试题
来源:牛客网
第一题
#include <stdio.h>
int main() {
int a, b;
while (scanf("%d %d", &a, &b) != EOF) { // 注意 while 处理多个 case
// 64 位输出请用 printf("%lld") to
int n = a, m = b;
int grade[n];
for (int i = 0; i < n; i++) {
scanf("%d", &grade[i]);
}
char operate;
int A, B;
for (int i = 0; i < m; i++) {
char c;
c = getchar();
scanf("%c", &operate);
scanf("%d%d", &A, &B);
if (operate == 'U') {
grade[A - 1] = B;
} else {
if (A > B) {
int temp = A;
A = B;
B = temp;
}
int max = grade[A - 1];
for (int i = A - 1; i < B; i++) {
if (grade[i] > max)max = grade[i];
}
printf("%d\n", max);
}
}
}
return 0;
}
参考C++代码
思考:
- 第一次编写的时候不习惯ACM格式,输入scanf(%c)的时候在考虑它会不会过滤\n,答案很显然->不会;
- 我理所当然地把getchar放到了最后,但是上面有n个数了,有数据上面的getchar给读取到了scanf;
- 跑出正确个数的答案后发现答案错误,debug发现比较max这个写错了>max写成了>grade[0]经常手飄这个;
- 用它的数据跑跑出错误之后,从源码复制输入输出,比对,发现一组数据经过思考差点取余,1到4之间和4到1之间是一样的。
总结:
- C++具有比C很大的优势,但是C更加贴合思考的本质
- C++在输入输出部分不用考虑那么多,在取最大值的时候失误也是极少的
- 代码量少,编写快
关于scanf(%c)