華為模擬機試
[編程|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跳過此次循環