华为模拟机试
[编程|100分] a+b
题目描述
计算a+b的和
每行包含两个整数a和b
对于每行输入对应输出一行a和b的和
输入
1 5
输出
6
自解
#include<iostream>
using namespace std;
int main()
{
int a, b;
while(cin >> a >> b){
cout << a + b << endl;
}
}
- ⭐cin流本身有返回值,读取成功为true,失败为false
- 考虑使用EOF
- EOF是end of file的缩写,表示”文字流”(stream)的结尾。这里的”文字流”,可以是文件(file),也可以是标准输入(stdin)。
- EOF不是特殊字符,而是一个定义在头文件stdio.h的常量,一般等于-1。#define EOF (-1)
- 除了表示文件结尾,EOF还可以表示标准输入的结尾。但是,标准输入与文件不一样,无法事先知道输入的长度,必须手动输入一个字符,表示到达EOF。
[编程|200分] 0交换排序
题目描述
长度为n的数组乱序存放着0至n-1.现在只能进行0与其他数的交换,完成以下函数
自解
/**
* 交换数组里n和0的位置
* array: 存储[0-n)的数组
* len: 数组长度
* n: 数组里要和0交换的数
*/
extern void swap_with_zero(int* array, int len, int n);
class Solution {
public:
/**
* 调用方法swap_with_zero来对array进行排序
*/
void sort(int* array, int len) {
for (int i = 0; i < len; i++){
swap_with_zero(array, len, array[i]);
swap_with_zero(array, len, i);
}
}
};
思路
排序后应当每个位置的值与索引一致,所以应当先将0交换到此位置值对应的位置,再将此位置值与0交换,可将值放到对应位置
参考NOWCODER
/**
* 交换数组里n和0的位置
* array: 存储[0-n)的数组
* len: 数组长度
* n: 数组里要和0交换的数
*/
extern void swap_with_zero(int* array, int len, int n);
class Solution {
public:
/**
* 调用方法swap_with_zero来对array进行排序
*/
void sort(int* array, int len) {
for (int i = 0; i < len; i++){
if (array[i] == i)
continue;
swap_with_zero(array, len, array[i]);
swap_with_zero(array, len, i);
}
}
};
添加判断,如果此位置的值已经是正确的,那么可以利用continue跳过此次循环