1. 程式人生 > >ACM標準輸入輸出C/C++版

ACM標準輸入輸出C/C++版

對於剛開始在OJ平臺上刷題的人來說,標準輸入輸出是一個很讓人頭痛的問題,個人也經歷過這樣的痛苦,因此在這裡進行一下總結。

  1. 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.