不久前,在做一道奇安信的筆試題的過程中發現C/C++的格式化輸入輸出的知識記得不太清楚了,現在當做筆記複習一遍(反正這塊C++是兼容C的)。
當時那道題目比較簡單,但是差點因爲不記得格式化輸入輸出而翻了車,先看看我的題解(題幹不記得了,反正本文重點不是這道題的解法,畢竟不難)。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool Equal(vector<int>& v) {
if ( v.size() < 9) return false;
int s1 = v[0] + v[1] + v[2] + v[3];
int s2 = v[3] + v[4] + v[5] + v[6];
int s3 = v[6] + v[7] + v[8] + v[0];
if ( s1 == s2 && s1 == s3) return true;
return false;
}
int main() {
vector<int> nums;
int x = 0, count = 9;
char c = ' ';
for(int i = 0; i < 9; i++) {
scanf("%d %c", &x, &c); //可以看到這裏的格式化輸入scanf的取地址符&,
//注意,格式化輸出printf沒有取地址符&
nums.push_back(x);
}
if ( Equal(nums) ) cout << "yes" << endl;
else cout << "no" << endl;
return 0;
}
可以看到上邊代碼中註釋提到的格式化輸入輸出,除了注意取地址符&的有無之外還要注意" "內是沒有括號分隔的。另外不久後遇到的一題是要求保留輸出5位小數的,當時最後纔想起來想出來是printf("%.nf", 變量名) 其中n即爲需要保留的位數,保留5位的話就是printf("%.5f", 變量名) 。關於C/C++更多的內容可以看教材,因爲書在學校,疫情期間無法回校拿書,所以可以參考這篇博客:https://blog.csdn.net/xia7139/article/details/17028001。只需要注意在這塊領域C++標準是兼容C標準的就行。