官术网_书友最值得收藏!

數(shù)據(jù)輸入輸出

C++的輸入輸出功能是由函數(shù)來實現(xiàn)的,例如putchar(輸出字符),getchar(輸入字符),cin(輸入流),cout(輸出流)等。

putchar函數(shù)(字符輸出函數(shù))的作用是向終端輸出一個字符。例如:

    putchar(c);       //輸出字符變量C的值

請看下例:

1 //putchar函數(shù)的使用
2 #include <iostream>
3 using namespace std;
4
5 int main()
6 {
7  char a='A',b='B',c='C';
8  putchar(a);
9  putchar(b);
10  putchar(c);
11  system("pause");
12  return 0;
13 }

運行結(jié)果為ABC。

我們可以用putchar()函數(shù)輸出控制字符,如putchar('\n')輸出一個換行符。

還可以輸出其他轉(zhuǎn)義字符,如:

    putchar (' \101 ');      //輸出字符'A'
    putchar (' \\ ');    //輸出斜杠
    putchar (' \015 ');   //輸出回車,不換行,使輸出的當(dāng)前位置移到本行開頭

getchar函數(shù)(字符輸入函數(shù))的作用是從終端輸入一個字符,其一般形式為getchar()。例如:

1 //使用getchar函數(shù)輸入單個字符
2 #include <iostream>
3 using namespace std;
4
5 int main()
6 {
7  char c;
8  c=getchar();
9  putchar(c);
10  system("pause");
11  return 0;
12 }

在運行時,如果從鍵盤輸入字符'a'并按回車鍵,就會在屏幕上看到輸出的字符'a'。

請注意:getchar()只能接收一個字符,接收的字符可以賦給字符變量或整型變量也可以不賦給任何變量。如:

    putchar(getchar());

puts()

向屏幕輸出字符串并換行。

gets()

從鍵盤獲得字符串,回車不算字符串。

某些情況下,程序需要以八進制或十六進制數(shù)的形式輸出結(jié)果。C++提供了簡單的實現(xiàn)方法:只要在輸出流中輸出操作符dec(十進制)、oct(八進制)或hex(十六進制)即可,下面的程序分別以十進制、八進制、十六進制輸出n的值。

1 //進制轉(zhuǎn)換
2 #include <iostream>
3 using namespace std;
4
5 int main()
6 {
7  int n=314;
8  cout<<"十進制: "<<dec<<n<<endl;
9  cout<<"八進制: "<<oct<<n<<endl;
10  cout<<"十六進制:"<<hex<<n<<endl;
11  system("pause");
12  return 0;
13 }

表1.6是常用的I/O流類庫操作符,注意,設(shè)置一些特殊的格式時,我們還需使用I/O流類庫提供的操縱符。使用操縱符時,首先必須在源程序的開頭包含iomanip。

表1.6

一旦使用了這些進制操作符,它們的作用域?qū)⒁恢背掷m(xù)到程序結(jié)束,或者遇到另一個進制操作符為止。

C++提供的setw操作符可以指定每個數(shù)值占用的寬度。為了使用setw,程序必須包括頭文件iomanip,setw操作符只對緊跟著它的數(shù)值有效。如果要為多個數(shù)值設(shè)定寬度,必須多次使用setw操作符。

分析以下程序的執(zhí)行結(jié)果。

1 //setw操作符的使用
2 #include <iostream>
3 #include <iomanip>
4 using namespace std;
5
6 int main()
7 {
8  double a=234.34;
9  cout<<setw(10)<<1234567890<<endl;
10  cout<<setw(4)<<a<<endl;
11  cout<<setw(6)<<a<<endl;
12  cout<<setw(8)<<a<<endl;
13  cout<<setw(10)<<a<<endl;
14  system("pause");
15  return 0;
16 }

使用right或left可以控制字符串向左靠齊還是向右靠齊。例如:

    cout<<left;

C++提供的setprecision操作符可以控制浮點數(shù)的輸出精度,其中的參數(shù)代表輸出的浮點數(shù)的個數(shù)。為了使用該操作符,程序必須包括頭文件iomanip。

分析以下程序的執(zhí)行結(jié)果。

1 //setprecision用法
2 #include <iostream>
3 #include <iomanip>
4 using namespace std;
5 
6 int main()
7 {
8  double a=234.1234567890;
9  cout<<a<<endl;
10  cout<<setprecision(4)<<a<<endl;
11  cout<<setprecision(5)<<a<<endl;
12  cout<<setprecision(6)<<a<<endl;
13  cout<<setprecision(7)<<a<<endl;
14  cout<<setprecision(8)<<a<<endl;
15  cout<<setprecision(9)<<a<<endl;
16  cout<<setprecision(15)<<a<<endl;
17  system("pause");
18  return 0;
19 }

一旦使用了這些setprecision操作符,它的作用域?qū)⒁恢背掷m(xù)到程序結(jié)束,或者遇到另一個setprecision操作符為止。

單純使用setprecision()函數(shù),并不能精確控制小數(shù)點后保留多少位,而是將整數(shù)與小數(shù)加起來的位數(shù),如果僅僅控制小數(shù)點后的位數(shù),需加fixed函數(shù)。見下例:

1 //fixed函數(shù)的使用
2 #include <iostream>
3 #include <iomanip>
4 using namespace std;
5
6 int main()
7 {
8  float a=111.223333;
9  cout<<setprecision(6)<<fixed<<a<<endl;
10  system("pause");
11  return 0;
12 }

C++提供的setfill操作符可以填充字符。為了使用該操作符,程序必須包括頭文件iomanip。

分析以下程序的執(zhí)行結(jié)果。

1 //setfill用法
2 #include <iostream>
3 #include <iomanip>
4 using namespace std;
5
6 int main()
7 {
8  double a=234.123;
9  cout<<a<<endl;
10  cout<<setw(10)<<setfill('*')<<setprecision(4)<<a<<endl;
11  cout<<setw(10)<<setprecision(10)<<a<<endl;
12  system("pause");
13  return 0;
14 }

也可以直接使用cout的相關(guān)函數(shù)如precision、width、fill和put等函數(shù)。

分析以下程序的運行結(jié)果。

1 //輸出控制
2 #include <iostream>
3 #include <iomanip>
4 using namespace std;
5 
6 int main()
7 {
8  double a=234.123456;
9  cout<<a<<endl;
10  cout.precision(7);
11  cout<<a<<endl;
12  cout.width(8);
13  cout<<a<<endl;
14  cout.fill('*');
15  cout.width(10);
16  cout.precision(5);
17  cout<<a<<endl;
18  system("pause");
19  return 0;
20 }

put函數(shù)用于輸出字符,put可以級聯(lián),如put('a').put('b')。

請看下面的程序:

1 //put級聯(lián)
2 #include <iostream>
3 using namespace std;
4
5 int main()
6 {
7  cout.put('C').put('+').put('+').put('\n');
8  system("pause");
9  return 0;
10 }

C++提供了輸入流cin,可以利用輸入流cin讀取鍵盤輸入的字符和數(shù)字等。我們可以使用I/O操作符控制輸入的格式。

請看下面的程序:

1 //輸入格式控制
2 #include <iostream>
3 using namespace std;
4 
5 int main()
6 {
7  int a,b,c;
8  cout<<"a:";cin>>dec>>a;
9  cout<<"b:";cin>>oct>>b;
10  cout<<"c:";cin>>hex>>c;
11  cout<<"a="<<a<<endl;
12  cout<<"b="<<b<<endl;
13  cout<<"c="<<c<<endl;
14  system("pause");
15  return 0;
16 }

cin提供了get成員函數(shù)從指定的數(shù)據(jù)流中輸入一個字符,并返回這個字符作為函數(shù)調(diào)用的值。

請看下面的程序:

1 //get成員函數(shù)的使用
2 #include <iostream>
3 using namespace std;
4
5 int main()
6 {
7  char c;
8  c=cin.get();
9  cout<<"c:"<<c<<endl;
10  cout<<"ASCII:"<<(int)c<<endl;
11  system("pause");
12  return 0;
13 }

cin提供了getline函數(shù),其格式為:getline(字符串首地址,最大長度);用于將用戶輸入的字符串存放在“字符串首地址”指定的內(nèi)存中,其最大長度不能超過“最大長度”指定的值。該函數(shù)的一個用處是可以讀入一行帶空格的字符串,當(dāng)然gets()函數(shù)也能達(dá)到同樣效果。

下面的程序是輸入一個字符序列(最大長度不超過80)并輸出:

1 //getline的使用
2 #include <iostream>
3 using namespace std;
4
5 int main()
6 {
7  char a[80];
8  cin.getline(a,80);
9  cout<<a<<endl;
10  system("pause");
11  return 0;
12 }

我看附錄中C語言的輸入輸出語句,即scanf和printf也完全可以完成以上的格式控制,而且還特別好用,速度也非常快。

建議在大批量讀寫數(shù)據(jù)時,使用C語言的輸入輸出語句。

【上機實踐】 格式練習(xí)

編寫一個程序,按以下格式輸出數(shù)據(jù),其中姓名部分寬度為8,左靠齊,第2列數(shù)據(jù)寬度為10,左靠齊,第3列數(shù)據(jù)格式寬度為10,右靠齊:

張三 345.5—— ***34345.4

李四 342.2—— *****123.5

劉強 556.6—— *343434.55

主站蜘蛛池模板: 东源县| 张北县| 贺兰县| 炉霍县| 舒城县| 竹溪县| 大田县| 新绛县| 丰原市| 焉耆| 方山县| 肥乡县| 广南县| 德惠市| 辽宁省| 瓦房店市| 察哈| 安多县| 时尚| 姚安县| 普兰店市| 武邑县| 名山县| 沧州市| 濮阳县| 万州区| 台州市| 闵行区| 铜川市| 儋州市| 太湖县| 油尖旺区| 武山县| 德令哈市| 思茅市| 博客| 县级市| 台江县| 平塘县| 新平| 丽江市|