第03章 数据的输入和输出

更新时间:2023-07-23 12:56:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C语言

第3章 数据的输入和输出 章3.1 3.2 3.3 3.4 3.5 C++语言的输入/输出 C++语言的输入/ 语言的输入 预定义输入流对象cin 预定义输入流对象cin 预定义输出流对象cout 预定义输出流对象cout 预定义格式控制符 程序举例

C语言

C++语言的输入/ 语言的输入 3.1 C++语言的输入/输出 输入/输出(简称I/O):程序运行所需要的数据往往要 输入/输出(简称I/O): I/O) 从外设(如键盘等)得到, 从外设(如键盘等)得到,程序的运行结果通常也要输 出到外设(如显示器、打印机等) 出到外设(如显示器、打印机等)。 I/O是程序的基本组成部分,是人与计算机交流的界 I/O是程序的基本组成部分 是程序的基本组成部分, 深受程序的设计者和使用者重视。 面,深受程序的设计者和使用者重视。 C++语言没有专门的I/O语句,I/O操作通过库函数或 C++语言没有专门的I/O语句 I/O操作通过库函数或 语言没有专门的I/O语句, 库对象来实现。例如, 库对象来实现。例如, –预定义I/O流对象cin/cout:源自C++语言旧库 预定义I/O流对象cin/cout C++语言旧库 预定义I/O流对象cin/cout:源自C++ iostream.h和C++语言新标准库 语言新标准库iostream iostream.h和C++语言新标准库iostream –scanf/printf函数:源自C语言标准库stdio.h scanf/printf函数 scanf/printf函数:源自C语言标准库stdio.h

C语言

预定义I/O流对象cin/cout 预定义I/O流对象cin/cout I/O流对象 为何使用C++语言新标准库“iostream”提供的预定义 为何使用C++语言新标准库“iostream 提供的预定义 C++语言新标准库 I/O流对象cin/cout? 流对象cin/cout I/O流对象cin/cout? 因新标准库全面支持C++语言新标准,包括模板、命 因新标准库全面支持C++语言新标准,包括模板、 C++语言新标准 名空间、异常处理等。 名空间、异常处理等。 如何才可使用cin和cout? 如何才可使用cin cout? cin和 在程序开头增加下列代码: 在程序开头增加下列代码: #include<iostream> using namespace std; 即包含C++标准I/O iostream并使用C++标准库命名 C++标准I/O库 并使用C++ 即包含C++标准I/O库iostream并使用C++标准库命名 空间std中的预定义的标识符。 std中的预定义的标识符 空间std中的预定义的标识符。

C语言

预定义输入流对象cin 3.2 预定义输入流对象 cin :可以直接输入基本数据类型的数据,包括整数、 可以直接输入基本数据类型的数据,包括整数、 实数、字符和字符串。 实数、字符和字符串。 格式: 格式: cin>>变量名 [>>变量名2>>…>>变量名n] 变量名1 变量名2>> >>变量名 cin>>变量名1 [>>变量名2>> >>变量名n] 其中,">>"称为提取运算符 表示将暂停程序的执行, 称为提取运算符, 其中,">>"称为提取运算符,表示将暂停程序的执行, 等待用户从键

盘上输入相应的数据。 等待用户从键盘上输入相应的数据。在提取运算符后 只能跟一个变量名, ">>变量名 可以重复多次, 变量名" 只能跟一个变量名,但">>变量名"可以重复多次,即 可给一个变量输入数据,也可给多个变量输入数据。 可给一个变量输入数据,也可给多个变量输入数据。

C语言

输入十进制整数和实数 举例: 举例: int i; float x; cin>>i; //A cin>>x; //B 当执行到A行语句时,若用户从键盘输入: 当执行到A行语句时,若用户从键盘输入: 350↙ 350↙ 则将350送给变量i 当执行到B行时,若输入: 350送给变量 则将350送给变量i。当执行到B行时,若输入: 0.618↙ 0.618↙ 则将0.618送给变量x 0.618送给变量 则将0.618送给变量x。

C语言

输入十进制整数和实数 说明: 说明: 上述两个数据也可一起输入,效果相同: ①上述两个数据也可一起输入,效果相同: 0.618↙ 350 0.618↙ 注意在输入的数据之间用一个或多个空格隔开。 注意在输入的数据之间用一个或多个空格隔开。 行和B行的输入也可合写成: ②A行和B行的输入也可合写成: cin>>i>>x; //C 而上述两种数据输入方式同样适用。 而上述两种数据输入方式同样适用。

C语言

输入十进制整数和实数③回车键的作用:⑴告知cin已输入一行数据,cin开始 回车键的作用: 告知cin已输入一行数据,cin开始 cin已输入一行数据 从输入行中提取数据,依次赋给它所列举的变量; 从输入行中提取数据,依次赋给它所列举的变量;⑵ 分隔输入数据。 cin遇到回车键时 遇到回车键时, 分隔输入数据。当cin遇到回车键时,若仍有变量等 待输入数据,则继续等待用户输入新的一行数据。 待输入数据,则继续等待用户输入新的一行数据。 输入数据的类型,必须与cin中列举的变量一致, cin中列举的变量一致 ④输入数据的类型,必须与cin中列举的变量一致,否 则输入出错。例如,对于C行的语句,若输入: 则输入出错。例如,对于C行的语句,若输入: a 0.618↙ 则变量i的值为0 而变量x没有获得输入数据, 则变量i的值为0,而变量x没有获得输入数据,并使 后面的cin无法正确提取数据。 cin无法正确提取数据 后面的cin无法正确提取数据。

C语言

输入字符数据 为字符变量输入数据时,输入数据必须是字符型。 为字符变量输入数据时,输入数据必须是字符型。 举例: 举例: char c1,c2; cin>>c1>>c2; //D 执行到D行时,cin等待用户输入数据 若输入: 等待用户输入数据, 执行到D行时,cin等待用户输入数据,若输入: a b↙ cin分别将字符 分别将字符a 赋给变量c1 c2,而输入: c1和 则cin分别将字符a、b赋给变量c1和c2,而输入: ab↙ cin也分别将字符 也分别

将字符a 赋给变量c1 c2。 c1和 cin也分别将字符a、b赋给变量c1和c2。 在缺省时,cin自动跳过输入的空白符(空格、回车和 在缺省时,cin自动跳过输入的空白符 空格、 自动跳过输入的空白符( 跳格) cin不将输入的空白符赋给字符型变量 不将输入的空白符赋给字符型变量。 跳格),即cin不将输入的空白符赋给字符型变量。

C语言

如何输入每个字符(包括空白符) 如何输入每个字符(包括空白符)? 方法1:用格式控制符noskipws。 方法1 格式控制符noskipws。 noskipws C++标准库iostream提供的格式控制符noskipws可使 标准库iostream提供的格式控制符noskipws C++标准库iostream提供的格式控制符noskipws可使 cin不跳过输入的空白符 例如,设有语句: 不跳过输入的空白符。 cin不跳过输入的空白符。例如,设有语句: char c1,c2; cin>>noskipws noskipws>>c1>>c2; //E cin>>noskipws>>c1>>c2; 执行到E行时,若输入: 执行到E行时,若输入: a b↙ cin分别将字符 和空格赋给字符型变量c1 c2。 分别将字符a c1和 则cin分别将字符a和空格赋给字符型变量c1和c2。 若希望cin跳过输入的空白符,则可用格式控制符 cin跳过输入的空白符 若希望cin跳过输入的空白符,则可用格式控制符 skipws。 skipws。

C语言

如何输入每个字符(包括空白符) 如何输入每个字符(包括空白符)? 方法2:用函数cin.get()。格式为: 方法2 用函数cin.get()。格式为: cin.get() cin.get(<字符型变量 字符型变量>); cin.get(<字符型变量>); 该语句一次只能从输入行中提取一个字符。 该语句一次只能从输入行中提取一个字符。 举例:将D行的语句改写成: 举例: 行的语句改写成: cin.get(c1); //E cin.get(c2); 执行到E行时,若输入: 执行到E行时,若输入: a b↙ 在输入字符a前没有空格,在字符a 在输入字符a前没有空格,在字符a与b之间有一个空 则将字符a和空格分别赋给变量c1 c2, c1、 格,则将字符a和空格分别赋给变量c1、c2,而在输 入行中仍保留字符b和回车键。 入行中仍保留字符b和回车键。

C语言

输入十六进制或八进制数据 输入整数默认时用十进制,但也可用八进制或十六进 输入整数默认时用十进制, 若按八进制或十六进制输入,则应在cin中指明: cin中指明 制。若按八进制或十六进制输入,则应在cin中指明: hex为十六进制 oct为八进制 dec为十进制 为十六进制, 为八进制, 为十进制。 hex为十六进制,oct为八进制,dec为十进制。 例如:int i,j,k; 例如: cin>>hex>>i;//指明输入为十六进制数 hex>>i;// cin>>hex>>i;//指明输入为十六进制数 //输入仍为十六进制数 cin>>j; //输入仍为十六进制数 cin>>dec>>k;//指明输入为十进制数 dec>>k;// cin>>dec>>k;//指明输入为十进制数 当执行到语句cin ci

n时 若输入: 当执行到语句cin时,若输入: 11↙ 11 11 11↙ 则将十六进制数11 11、十进制数11分别赋给变量i 11和 11分别赋给变量 则将十六进制数11和11、十进制数11分别赋给变量i、 j 和k 。

C语言

输入十六进制或八进制数据 使用非十进制输入数据时,应注意: 使用非十进制输入数据时,应注意: –八或十六进制数的输入,只适用于整型变量。 八或十六进制数的输入,只适用于整型变量。 八或十六进制数的输入 –若在cin中指定数制,则指定数制一直有效,直到 若在cin中指定数制, 若在cin中指定数制 则指定数制一直有效, 在后续的cin中指明另一数制为止。如上例中, cin中指明另一数制为止 在后续的cin中指明另一数制为止。如上例中,输 的值时,仍为十六进制。 入j的值时,仍为十六进制。 –输入十六进制数时,可用0x开始,也可不用0x开始; 输入十六进制数时, 输入十六进制数时 可用0 开始,也可不用0 开始; 输入八进制数时可用0开始,也可不用0开始。 输入八进制数时可用0开始,也可不用0开始。原因 是在cin中已指明输入数据时所用的数制。 cin中已指明输入数据时所用的数制 是在cin中已指明输入数据时所用的数制。

C语言

预定义输出流对象cout 3.3 预定义输出流对象 作用:直接输出基本类型的数据,包括整数、实数、 作用:直接输出基本类型的数据,包括整数、实数、 字符及字符串。 字符及字符串。 格式: 格式: cout<<表达式1[<<表达式2<<…<<表达式n]; 表达式1[<<表达式2<< <<表达式 cout<<表达式1[<<表达式2<< <<表达式n]; 其中"<<"称为插入运算符, "<<"称为插入运算符 其中"<<"称为插入运算符,它将紧跟其后的表达式 的值输出到显示器当前光标位置。 的值输出到显示器当前光标位置。

C语言

输出字符或字符串 举例1: 举例1 cout<<"输入变量的值 输入变量的值: cout<<"输入变量的值:"; 执行时,在显示器的当前光标位置显示: 执行时,在显示器的当前光标位置显示: 输入变量的值: 输入变量的值: cout将双引号中的字符串常量按其原样输出 将双引号中的字符串常量按其原样输出。 即cout将双引号中的字符串常量按其原样输出。 举例2: 举例2 char c='a',b='b'; cout<<"c="<<c<<",b="<<b<<'\n'; cout<<"c="<<c<<",b="<<b<<'\ 执行cout语句时,输出结果为: cout语句时 执行cout语句时,输出结果为: c=a,b=b

C语言

输出十进制整数设有说明"int i=12,j=100;",则执行语句: 设有说明" i=12,j=100;",则执行语句: 设有说明 cout<<i<<j<<endl; 的输出为: 的输出为: 12100 –现象:很难分清输出结果。 现象: 现象 很难分清输出结果。 –原因:缺省情况下,输出数据时,按数据的实际宽 原因: 原因

缺省情况下,输出数据时, 左对齐输出,即输出数据之间没有分隔。 度、左对齐输出,即输出数据之间没有分隔。 –对策1:在输出数据之间添加分隔字符,如: 对策1 在输出数据之间添加分隔字符, 对策 cout<<i<<‘, <<j<<endl; //添加逗号做分隔 cout<<i<< ,’<<j<<endl; //添加逗号做分隔 输出为: 输出为: 12,100

C语言

输出十进制整数–对策2:输出数据时使用格式化控制符。如: 对策2 输出数据时使用格式化控制符。 对策 cout<<left<<setw(6) left<<setw(6)<<i<<setw(6)<<j<<endl; cout<<left<<setw(6)<<i<<setw(6)<<j<<endl; 输出为: 输出为: setw(n)指明其后的输出项 setw(n)指明其后的输出项 12100 100 12100 个字符宽度。注意: 占n个字符宽度。注意:left使输出数据左对齐, left使输出数据左对齐, 使输出数据左对齐 right使输出数据右对齐 使输出数据右对齐。 right使输出数据右对齐。对 齐方式设置后,一直有效, 齐方式设置后,一直有效,直 到设置另一种对齐方式。 到设置另一种对齐方式。 格式控制符right left由 right、 格式控制符right、left由 iostream库提供 库提供。 iostream库提供。 right、left和setw适合所有 right、left和setw适合所有 基本类型的数据输出。 基本类型的数据输出。 ⑴n的值为正整数。若指定的 的值为正整数。 输出项宽度小于实际输出数 据的宽度,则按实际数据的 据的宽度, 宽度输出数据。 宽度输出数据。 ⑵该设置仅对其后的一个输出 项有效。 项有效。一旦按指定的宽度 输出其后的数据, 输出其后的数据,又恢复缺 省的输出方式。 省的输出方式。 格式控制符setw setw由 格式控制符setw由iomanip 库提供。 库提供。

C语言

输出八进制数和十六进制数 输出八进制数和十六进制数 十六进制对于整型数据可指定以八进制或十六进制输出。如: 对于整型数据可指定以八进制或十六进制输出。 对于整型数据可指定以八进制或十六进制输出 int a=1,b=10; cout<<hex hex<<a<<','<<b<<endl; cout<<hex<<a<<','<<b<<endl; cout<<oct oct<<a<<','<<b<<endl; cout<<oct<<a<<','<<b<<endl; 输出结果为: 输出结果为: 格式控制符hex oct分别指明以十 hex和 格式控制符hex和oct分别指明以十 c,a 六进制和八进制输出数据。 六进制和八进制输出数据。 14,12 一旦指定,对其后的输出一直有效, 一旦指定,对其后的输出一直有效, 直到指明另一种进制。 直到指明另一种进制。

C语言

输出实数 浮点数的默认输出格式:左对齐、定点数、6个有效 浮点数的默认输出格式:左对齐、定点数、 位。 浮点数的输出格式可以重新设置: 浮点数的输出格式可以重新设置: –格式控制符fixed或scientific(iostream库提供) 格式控制符fixed 库提供) 格式控制符fi

xed或scientific(iostream库提供 可设置浮点数以定点数或指数形式输出。 可设置浮点数以定点数或指数形式输出。一旦指明 一种浮点数的输出形式,则对其后的浮点数输出一 一种浮点数的输出形式, 直有效,直到指明另一种浮点数的输出形式。 直有效,直到指明另一种浮点数的输出形式。 –格式控制符setprecision(n)(iomanip库提供)可 格式控制符setprecision(n)(iomanip库提供) 格式控制符setprecision(n)(iomanip库提供 设置输出浮点数的精度。若已用格式控制符fixed 设置输出浮点数的精度。若已用格式控制符fixed scientific设置了浮点数的输出形式 设置了浮点数的输出形式, 或scientific设置了浮点数的输出形式,则n表示 输出浮点数的小数位数;否则, 输出浮点数的小数位数;否则,n表示输出浮点数 的有效位数。 的有效位数。

C语言

浮点数的定点、指数形式输出。 例3.1 浮点数的定点、指数形式输出。 #include<iostream> 输出结果为: 输出结果为: #include<iomanip> 1.73205 #include<cmath> 1.732 using namespace std; 1.732e+000 1.732e+000 int main(void) 1.732051 { double x=sqrt(3.0); //以默认格式输出 以默认格式输出x cout<<x<<endl; //以默认格式输出x cout<<setprecision(4)//以 位有效位输出x cout<<setprecision(4)//以4位有效位输出x <<x<<endl; cout<<scientific//以指数形式 以指数形式、 位小数输出x cout<<scientific//以指数形式、3位小数输出x <<setprecision(3)<<x<<endl; //以定点形式 以定点形式、 位小数输出x cout<<fixed //以定点形式、6位小数输出x <<setprecision(6)<<x<<endl; return 0; }

C语言

显示浮点数的小数点和正号 显示浮点数的小数点和 显示小数点:缺省情况下,当浮点数的值为整数时, 显示小数点:缺省情况下,当浮点数的值为整数时, cout只输出整数 而不输出小数点。若需显示小数点, 只输出整数, cout只输出整数,而不输出小数点。若需显示小数点, 则可用iostream库提供的格式控制符showpoint iostream库提供的格式控制符showpoint强制 则可用iostream库提供的格式控制符showpoint强制 输出小数点,或用iomanip iomanip库提供的格式控制符 输出小数点,或用iomanip库提供的格式控制符 setprecision(n)设置浮点数的小数位数 设置浮点数的小数位数。 setprecision(n)设置浮点数的小数位数。 显示正号:cout仅在输出负数时显示负号,而输出正 显示正号:cout仅在输出负数时显示负号 仅在输出负数时显示负号, 数时不显示正号。若需显示正号,则可用iostream iostream库 数时不显示正号。若需显示正号,则可用iostream库 提供的格式控制符showpos强制输出正号。 showpos强制输出正号 提供的格式控制符showpos强制输出正号。如果不再 需要在正数前显示正号,则可用io

stream iostream库提供的格 需要在正数前显示正号,则可用iostream库提供的格 式控制符noshowpos清除。 noshowpos清除 式控制符noshowpos清除。

C语言

例3.2 显示浮点数的小数点、正号。 显示浮点数的小数点、正号。 #include<iostream> using namespace std; int main(void) x=3.0,y={ double x=3.0,y=-5; cout<<y<<endl; //值为整数,只输整数,无小数点 值为整数,只输整数, cout<<showpoint//设置输出小数点 cout<<showpoint//设置输出小数点 <<y<<endl; <<y<<endl; //设置输出正号 cout<<showpos //设置输出正号 <<x<<endl; <<x<<endl; 输出结果: 输出结果: -5 cout<<noshowpos//清除输出正号 cout<<noshowpos//清除输出正号 -5.00000 <<x<<endl; <<x<<endl; +3.00000 return 0; 3.00000 }

本文来源:https://www.bwwdw.com/article/f9sm.html

Top