實驗九

實驗目的和要求

1、掌握格式化的輸入輸出方法。

2、熟悉系統提供的輸入操作函數。

3、掌握磁盤文件的輸入輸出方法。

實驗內容

1、程序sy9_1.cpp用以打印表中的數據,但程序中存在邏輯錯誤。上機調試後寫出正確的代碼。

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
    int n[3][3]={{1,2,3},{4,5,6},{7,8,9}};
    cout<<setw(10)<<n[0][0]<<n[0][1]<<n[0][2]<<endl;
    cout<<setw(10)<<n[1][0]<<n[1][1]<<n[1][2]<<endl;
    cout<<setw(10)<<n[2][0]<<n[2][1]<<n[2][2]<<endl;
    return 0;
}

運行結果如下:

分析:

2、編程實現下面要求:(sy9_2.cpp)

                       以左對齊方式輸出整數40000,域寬爲15。

                       打印有符號數和無符號數100。

                       將十進制整數100以0x開頭的十六進制格式輸出。

                      用前導 * 格式打印1.234,域寬爲10。


#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
    double a=40000;
    cout<<setiosflags(ios_base::left)<<setw(15)<<a<<endl;
    cout<<showpos<<100<<"\t"<<100u<<endl;
    cout.setf(ios::showbase);
    cout<<"以0x開頭的十六進制輸出100:";
    cout.setf(ios::hex,ios::basefield);
    cout<<100<<endl;
    cout<<noshowpos<<right<<setfill('*')<<setw(10)<<1.234<<endl;
    return 0;
}

運行結果如下:


3、建立某班同學通訊錄二進制文件,文件中的每個記錄包括姓名、電話號碼、QQ號、E-mail和家庭住址。(sy9_3.cpp)


4、從鍵盤上輸入學生的QQ號,在由第4題所建立的通訊錄文件中查找該同學的資料。查找成功時,顯示其所有通訊信息。(sy9_4.cpp)


分析與討論

1、結合實驗中第1題和第2題,說明格式化的輸入輸出方法和應注意的問題。

     答:C++的I/O流庫提供了兩種控制格式的輸入輸出的方法:一種是iOS類的成員函數,另一種是使用控制符;在iOS類中有幾個成員函數可用來對輸入輸出的格式控制,這些成員函數通過對格式標誌字、域寬、填充符及輸出精度的設定來控制輸入輸出的格式,使其後的輸入輸出操作按設定的格式進行;C++的I/O流類庫中又提供一種使用控制符進行格式化輸出的方法,這些控制符與成員函數調用的效果一樣,它們可以直接插入到流中,而不必再單獨調用,也可直接被插入符或提取符操作。但控制符中沒有的功能還需使用成員函數的方法來提供。這些控制符是一些特殊的函數,其中所有不帶形式參數的函數是在頭文件iostream.h中定義的,而所有帶形式參數的函數定義則定義在iomanip.h中,如第1題中的set(10)和第2題中的set(10)就是在iomanip.h中定義的。應注意的問題:數據輸出寬度在默認情況下爲表示該數據所需的最少字符數;如果所設置的數據寬度小於數據所需的最少字符數,則數據寬度按默認寬度處理。

2、 結合實驗中第3題和第4題,說明磁盤文件的輸入輸出方法。

     答:按數據的存儲形式來分類,文件可分爲文本文件和二進制文件。按數據的存取方式來分類,文件可分爲順序文件和隨機讀取文件。文件的打開和關閉方法:打開文件就是使一個文件流對象與一個指定的文件相關聯。對象名.open(文件名,方式);

文件在打開後可進行讀寫操作,在讀寫操作完成後應將其關閉,就是使打開的文件與流對象“脫鉤”;<流對象名>.close()。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章