1.C语言中的输入与输出
在C语言中我们常用输入函数“scanf”和输出函数“printf”,而与之配套的格式符有
程序如下:
#include<stdio.h>//C语言版
#include<string.h>
int main()
{
int a;//定义一个整数
float b;//定义一个单精度浮点数
double c;//定义一个双精度浮点数
char d;//定义一个字符
char e[110];//定义一组字符串
scanf("%d",&a);//输入一个整数
scanf("%f",&b);//输入一个单精度浮点数
scanf("%lf",&c);//输入一个双精度浮点数
getchar();//吸收空格
scanf("%c",&d);//输入一个字符
getchar();//吸收空格
scanf("%s",&e);//输入一组字符串,也可用gets(e)输入
printf("%d",a);//输出一个整数
printf("%f",b);//输出一个单精度浮点数[可用%.nf限制小数点后位数,n为自然数]
printf("%lf",c);//输出一个双精度浮点[可用%.nlf限制小数点后位数,n为自然数]
printf("%c",d);//输出一个字符
printf("%s",e);//输出一组字符串,也可用puts(e)输出
return 0;
}
2.c++中的输入与输出
1.c++支持两套完备的I/O操作:
(1)从c继承而来的输入输出函数;【gste/puts字符串输入输出有部分限制】
(2)c++定义的面向对象的I/O流。
当我们使用c++编译器时需要用到的基础头文件有:
<iostream> :定义了cin、cout、cerr和clog对象。
<iomanip> :该文件通过所谓的参数化的流操纵器(如setw和setprecision),来声明对执行标准化I/O有用的服务。
程序如下:youy
#include<iostream>//cin,cout使用模板
using namespace std;
int main()
{
double a;//定义一个双精度浮点数
char b;//定义一个字符
char c[110];//定义一组字符串
cin>>a;//直接输入
cin>>b;
cin>>c;
cout<<a<<endl;//输出加换行
cout<<b<<endl;
cout<<c<<endl;
return 0;
}
#include<iostream>//cerr使用模板
using namespace std;
int main()
{
char a;//定义一个字符
char b[110];//定义一组字符串
cin>>a;
cin>>b;
cerr<<a<<endl;//输出加换行
cerr<<b<<endl;
return 0;
}
#include<iostream>//clog使用模板
using namespace std;
int main()
{
char a;//定义一个字符
char b[110];//定义一组字符串
cin>>a;//直接输入
cin>>b;
clog<<a<<endl;//输出加换行
clog<<b<<endl;
return 0;
}
由上可知对于cout、cerr、ciog在微型程序中并没有什么差异,但是在编写和执行一些大型程序时,它们的差异就变得非常明显。所以良好的编程实践告诉我们,使用cerr流来显示错误消息,而其他的日志消息则使用clog流来输出。
2.对于c++中特定格式浮点数
需要头文件<iomanip>
如果setprecision(n)与setiosflags(ios::fixed)合用,可以控制小数点后的位数。常用于限制字符位数。
setiosflags(ios::fixed)是用定点方式表示实数(fixed也可更换成left、right)。setprecision(n)表示输出小数点后面n位小数。
代码如下:
#include<iostream>
using namespace std;
#include <iomanip>
int main()
{
float a;
cin>>a;
cout<<setiosflags(ios::fixed)<<setprecision(2)<<a<<endl;
return 0;
}