编程竞赛宝典:C++语言和算法入门
上QQ阅读APP看书,第一时间看更新

1.4 输入/输出及格式控制

图像说明文字

扫码看视频

getchar()函数(字符输入函数)的作用是从终端(键盘)获取输入的字符。

putchar()函数(字符输出函数)的作用是向终端(显示器)输出字符。例如下面的程序在运行时,如果用键盘输入字符后按Enter键,显示器上就会输出该字符。

 1 //getchar()函数和putchar()函数的使用演示
 2 #include <bits/stdc++.h>
 3 using namespace std;
 4 
 5 int main()
 6 {
 7   char c;
 8   c=getchar();                           //输入字符赋值给c
 9   putchar(c);                            //输出字符变量c
10   return 0;
11 }

cin读取一行字符串时,遇到空格就会停止。如果读取一行包含空格符的字符串,可以使用getline()函数。例如将“I am here”赋值给string类的例程如下所示。

 1 //使用getline()函数读取string类字符串
 2 #include <bits/stdc++.h>
 3 using namespace std;
 4 
 5 int main()
 6 { 
 7   string str;                   //string类可用getline()函数读取
 8   getline(cin,str);             //读取一行包含空格符的字符串赋值给str
 9   cout<<str;
10   return 0;
11 }

某些情况下,程序需要以八进制数或十六进制数的形式输出结果。C++提供了简单的实现方法:只要在输出流中输出dec(对应十进制)、oct(对应八进制)或hex(对应十六进制)即可。下面的程序演示了不同进制数之间的相互转换。

 1 //进制转换
 2 #include <bits/stdc++.h>
 3 using namespace std;
 4 
 5 int main()
 6 {
 7   int n=314;
 8   cout<<"十进制:"<<dec<<n<<endl;  //n本身为十进制数,所以可省略dec
 9   cout<<"八进制:"<<oct<<n<<endl;
10   cout<<"十六进制:"<<hex<<n<<endl;
11   cin>>oct>>n;                     //输入八进制形式的n值
12   cout<<dec<<n;                    //转换为十进制形式的n值输出
13   return 0;
14 }

C++提供的setprecision()函数可以控制浮点数的输出精度,其中的参数代表输出的位数。试分析以下程序的执行结果。

 1 //setprecision()函数的使用
 2 #include <bits/stdc++.h>
 3 using namespace std;
 4 
 5 int main()
 6 {
 7   double a=234.1234567890;
 8   cout<<a<<endl;
 9   cout<<setprecision(4)<<a<<endl;
10   cout<<setprecision(5)<<a<<endl;
11   cout<<setprecision(6)<<a<<endl;
12   cout<<setprecision(7)<<a<<endl;    
13   cout<<setprecision(8)<<a<<endl;
14   cout<<setprecision(9)<<a<<endl;  
15   cout<<setprecision(15)<<a<<endl; 
16   return 0;
17 }

输出结果如图1.22所示。

E:\朱老师电子书\2021\PB55461-0101\5546-web-resources\image\0122.png

图1.22

可见,单纯使用setprecision()函数,控制输出的位数是整数部分与小数部分相加的位数,如果想真正精确地控制小数点后的位数,需添加fixed()函数,见以下程序。

 1 //fixed()函数的使用
 2 #include <bits/stdc++.h>
 3 using namespace std;
 4 
 5 int main()
 6 {
 7   float a=111.2345678;
 8   cout<<setprecision(5)<<fixed<<a<<endl;   //输出111.23457,有误差
 9   return 0;
10 }

1.4.1 精确到小数点(fixed)

【题目描述】

输入一个双精度浮点数,保留其小数点后5位输出。例如输入1.23,输出1.230 00。

【输入格式】

输入一个双精度浮点数。

【输出格式】

将输入的双精度浮点数保留其小数点后5位输出。

【输入样例】

1.0

【输出样例】

1.00000