1、iostream文件在C++I/O中扮演這種角色?
答:?iostream文件定義了用于管理輸入和輸出的類、常量和操縱符,這些對象管理用于處理I/O的流和緩沖區。該文件還創建了一些標準對象(cin、cout、cerr和 clog以及對應的寬字符對象),用于處理與每個程序相連的標準輸入和輸出流。
2、為什么鍵入數字作為輸入要求程序進行轉換?
答:鍵盤輸入生成一系列字符。輸入121將生成3個字符,每個字符都由一個1字節的二進制碼表示。要將這個值存儲為int類型,則必須將這3個字符轉換為121值的二進制表示。
3、標準輸入與標準錯誤之間有什么區別?
答:在默認情況下,標準輸出和標準錯誤都將輸出發送給標準輸出設備(通常為顯示器)。然而,如果要求操作系統將輸出重定向到文件,則標準輸出將與文件(而不是顯示器)相連,但標準錯誤仍與顯示器相連。
4、為什么在不為每個類型提供明確指示的情況下,cout仍能夠顯示不同的C++類型?
答:
ostream類為每種C++基本類型定義了一個operator<<()函數的版本。編譯器將下面的表達式:
cout<< spot
解釋為:
cout.operator<< (spot)
這樣,它便能夠將該方法調用與具有相同參數類型的函數原型匹配。
5、輸出方法 定義的哪一特征讓您能夠拼接輸出?
答:
可以將返回ostream &類型的輸出方法拼接。這樣,通過一個對象調用方法時,將返回該對象。然后,返回對象將可以調用序列中的下一個方法。
6、編寫一個程序,要求用戶輸入一個整數,然后以十進制,八進制和十六進制顯示該整數。在寬度為15個字符的字段中顯示每種形式,并將它們顯示在同一行上,同時使用C++數基前綴。
答:
#include <iostream>
#include <iomanip>
int main()
{
using namespace std;cout << "Enter an integer:";int n;cin >> n;cout << setw(15) << "base ten" << setw (15) <<"base sixteen" << setw (15)<< "base eight" << "\n" ;cout.setf (ios::showbase);cout << setw(15)<< n << hex << setw (15)<< n << oct << setw(15) << n << "\n";return 0;
}
7、編寫一個程序,請求用戶輸入下面的信息,并按下面的格式顯示它們。
Enter your name :Billy Gruff
Enter your hourly wages : 12
Enter nhumber of hours worked: 7.5
First format:Billy Gruff: $ 12.00: 7.5
Second format:
Billy Gruff : $12.00 :7.5
答:
#include <iostream>
#include <iomanip>
int main ()
{using namespace std;char name [20] ;float hourly;float hours;cout<< "Enter your name: ";cin.get (name,20).get();cout << "Enter your hourly wages: ";cin >> hourly;cout << "Enter number of hours worked: ";cin >> hours;cout.setf(ios::showpoint);cout.setf (ios::fixed, ios:: floatfield);cout.setf (ios : :right,ios: :adjustfield);// or cout<< showpoint<c fixed <c right;cout << "First format : \n" ;cout << setw(30)<< name << ":$" << setprecision(2)<< setw(10)<< hourly << ":" << setprecision (1)<< setw(5)<< hours << " \n" ;cout << "Second format : \n" ;cout.setf(ios: :left, ios: :adjustfield);cout <c setw (30)<< name<< ":$"<< setprecision(2) << setw(10)<< hourly << ":" << setprecision (1)<<setw(5)<< hours << "\n";return 0;
}
8、對于下面的程序,如果輸入
I see a q<Enter>
I see a q<Enter>
?將打印什么內容?
程序:
#include <iostream>
int main()
{using namespace std;char ch;int ct1 = 0;cin >> ch;while(ch != 'q'){ct1++;cin >> ch;}int ct2 = 0;cin.get(ch);while(ch != 'q'){ct2++;cin.get(ch);}cout << "ct1 = " << ct1 << "; ct2 =: << ct2 << "\n";return 0;}
答:
ct1 = 5;ct2 = 9
該程序的前半部分忽略空格和換行符,而后半部分沒有。注意,程序的后半部分從第一個q后面的換行符開始讀取,將換行符計算在內。
9、下面的兩條語句都讀取并丟棄行尾之前的所有字符(包括行尾)。這兩條語句的行為在哪些方面不同?
while(cin.get() != '\n')continue;
cin.ignore(80.'\n');
答:
如果輸入行超過80個字符,ignore()將不能正常工作。在這種情況下,它將跳過前80個字符。