ACM標準輸入輸出C/C++版
阿新 • • 發佈:2019-01-08
對於剛開始在OJ平臺上刷題的人來說,標準輸入輸出是一個很讓人頭痛的問題,個人也經歷過這樣的痛苦,因此在這裡進行一下總結。
- C++輸入
①只有一組測試資料
以計算a+b為例:
#include < iostream >
using namespace std;
int main()
{
int a,b;
cin >> a >> b;
cout << a+b << endl;
return 0;
}
②有多組測試資料,直到讀至輸入檔案結尾為止
#include < iostream >
using namespace std;
int main()
{
int a,b;
while(cin >> a >> b)
cout << a+b << endl;
return 0;
}
③在開始的時候輸入一個N,接下來是N組資料
#include <iostream>
using namespace std;
int main() {
int a, b, n;
cin >> n;
while (n--) {
cout << a + b << endl;
}
return 0;
}
④輸入不說明有多少組資料,但以某個特殊輸入為結束標誌
#include<iostream>
using namespace std;
int main()
{
int a ,b;
while(cin>>a>>b&&(a||b))
{cout<<a+b<<endl;}
return 0;
}
⑤重定向輸入,儲存歷史
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
freopen("input.txt","r",stdin); //輸入將被重定向到檔案
int a,b;
cin>>a>>b;
cout<<a+b<<endl;
return 0;
}
⑥輸入字串
#include<iostream>
using namespace std;
int main()
{
char buf[ 255 ];
while(cin.getline( buf, 255 ));
}
在C++中讀入字串通常使用cin.getline函式,可以接受使用者的輸入的字元,直到已達指定個數,或者使用者輸入了特定的字元。它的函式宣告形式(函式原型)如下:
istream& getline(char line[], int size, char endchar = '\n');
char line[]: 就是一個字元陣列,使用者輸入的內容將存入在該陣列內。
int size : 最多接受幾個字元,使用者超過size的輸入都將不被接受。
char endchar :當用戶輸入endchar指定的字元時,自動結束,預設是回車符。
2.C++輸出
①一組接著一組,每一組後面有一空行
cout << ans << endl << endl;
3.C語言輸入輸出
有時候C++的輸入輸出可能太慢,不妨使用C語言的輸入輸出
主要方法有:
printf ();//把鍵盤中的各類資料,加以格式控制輸出到顯示器螢幕上;
scanf ();//從鍵盤上輸入各類資料,並存放到程式變數中;
puts ()://把陣列變數中的一個字串常量輸出到顯示器螢幕上;
gets ()://從鍵盤上輸入一個字串常量並放到程式的陣列中;
putchar ()://把變數中的一個字元常量輸出到顯示器螢幕上;
getchar ()://從鍵盤上輸入一個字元常量,此常量就是該函式的值;
sscanf()://從一個字串中提取各類資料。
①輸入
while(scanf("%d", &n) != EOF)//讀取數字
while ((c = getchar()) != EOF)//讀取字元
char line[1024];
while(gets(line)) //讀取一行
②輸出
printf("a=%d,b=%f,c=%c\n",a,b,c);
這裡的格式化輸出如下:
格式字元
d 以十進位制形式輸出帶符號整數(正數不輸出符號)
o 以八進位制形式輸出無符號整數(不輸出字首O)
x 以十六進位制形式輸出無符號整數(不輸出字首OX)
u 以十進位制形式輸出無符號整數
f 以小數形式輸出單精度實數
lf 以小數形式輸出雙精度實數
e 以指數形式輸出單、雙精度實數
g 以%f%e中較短的輸出寬度輸出單、雙精度實數
c 輸出單個字元
s 輸出字串
精度控制
精度格式符以“.”開頭,後跟十進位制整數。意義是:如果輸出數字,則表示小數的位數;如果輸出的是字元, 則表示輸出字元的個數;若實際位數大於所定義的精度數,則截去超過的部分。
- 結果左對齊,右邊填空格
+ 輸出符號(正號或負號)空格輸出值為正時冠以空格,為負時冠以負號
如:
double c=24212345.24232;
printf(“%020.4”); 表示輸出精確到小數點後4位,輸出佔20位,若有空餘的位補0.