return 0;
}
三、输入输出.格式化
教学视频
1. 输出
对于格式化输出,本节课将学习两个函数 scanf() 、 printf() 来取代之前的cin和cout方法;
假如,我们要输出一组运算等式:1 + 2 = 3,而1是变量a,2是变量b,3是a+b的运算结果;
int a = 1, b = 2;
// cout
cout << a << " + " << b << " = " << a + b;
cout << endl;
// printf
printf("%d + %d = %d", a, b, a + b);
printf() 函数极其方便的原因,它可以先按照自己的输出格式,先写出来,不需要头脑翻译;
然后把需要替换成变量的部分,用 %d 来表示即可,而后续对应的位置换成变量或表达式运算即可;
%d 这里表示占位的内容 是 整型,也有各种其它的占位符,这里罗列出常用的几个:
占位控制符
说明
%d
整数
%f
浮点数(float)
%c
字符
%s
字符串
最终的语法结构如下:
printf(格式控制符, 占位替换列表)
2. 输入
从上面例子中,我们使用 scanf() 函数来控制输入:
int a, b;
// scanf
scanf("%d %d", &a, &b);
// printf
printf("%d + %d = %d", a, b, a + b);
先了解下输入参数的格式需求:
scanf(格式控制符, 地址集)
暂时没有办法解释这个地址是什么意思?举个并不恰当但好理解的说明:
快递员给张三寄快递,直接送到张三手上;这是 cin
快递员给张三家地址寄快递,不管是凤巢、门卫代收还是家人收件,最终会交给张三;这是 scanf()
所以,a表示张三,&a表示张三家的地址;而sacanf() 参数要求是地址,故在变量前加&;
而这个知识点叫做 引用,是比较靠后的知识点,暂时不用理解;
后续,自然也会有 变量本身就是引用,反而参数不需要 & 符号;
3. 格式化
在使用 printf() 时,我们需要输出各种特殊字符,比如百分号,换行,以及场宽精度问题等:
符号
说明和示例
\\
输出一个斜杠,printf("\\");
\n
换行,printf("\n");
%%
百分号,printf("%");
数字
场宽,printf("%3d%5d");
小数
精度,printf("%.2f", 3.1415926);
例程:
// 格式化
printf("%%\\\n");
// 场宽
printf("%3d%5d\n", a, b);
// 精度
printf("%.2f\n", 3.1415926);
// 场宽+精度
printf("%8.2f", 3.1415926);
参考阅读:
一、格式化输出函数:
格式化输入函数和格式化输出函数是C语言标准库函数.
printf()函数的一般语法格式如下:
printf("<格式化字符串>",<输出列表>);
1.格式化字符串:
用双引号括起来的字符串,字符串包含的普通字符,printf()函数将其原样输出到屏幕上;
以"%"开头的格式字符,printf()函数将数据转换为指定的格式输出到屏幕上。
输出列表:需要输出到屏幕的数据,数据可以是常量、变量或者表达式。
二、格式化输入函数:
scanf()函数的一般语法格式如下:
scanf("<格式化字符串>",<地址列表>);
格式化字符串:
1.用双引号括起来的字符串,一般只有"%"开头的格式字符。
2.地址列表:各个变量的地址,变量的地址通过取地址符号"&",数组名本身就是地址。
scanf()函数也可以和printf()函数一样可以接受多个值,变量之间需要用逗号隔开,需要一一对应。
三、常见格式控制字符
格式控制符以%开头
格式控制字符 作用
%d 输入或输出int变量数据
%u 输入或输出unsigned int变量数据
%lld 输入或输出long long变量数据
%llu 输入或输出unsigned long long变量数据
%f 输入或输出float变量数据
%lf 输入或输出double变量数据
%c 输入或输出char变量数据
%s 输入或输出字符串变量或字符数组数据
%nd 以n字符宽度输出整数,宽度不足时用空格补充
%0nd 以n字符宽度输出整数,宽度不足时用0补充
%.nlf 输出浮点数,精确到小数点后n位
......
例1:hello world
//C:格式化输出
printf("hello world\n");
例2:a+b 问题
//C:格式化输入输出
int a,b;
long long s;
//cin>>a>>b;
scanf("%d%d",&a,&b);
s=a+b;
//cout<
printf("%lld\n",s);
例3:温度转换
已知:设施温度c,与华氏温度f的转换关系:9c=5(f-32).
输入华氏温度f,输出设施温度c
输入:98.6
输出:37
#include
using namespace std;
int main ()
{
double c,f;
scanf("%lf",&f);
c=(f-32)*5/9;
printf("%lf",c);
return 0;
}
例4:输入任意的两个整数,两个整数之间用+、-、*、/四种符号之一表示,根据符号计算结果。
输入:8+2 输出:10
输入:8/5 输出:1.6
提示:字符类型%c
#include
using namespace std;
int main()
{
int a,b;
double s;
char x;
scanf("%d%c%d",&a,&x,&b);
if(x=='+')
s=a+b;
else if(x=='-')
s=a-b;
else if(x=='*')
s=a*b;
else if(x=='/')
s=(double)(a)/b;
printf("%lf",s);
return 0;
}
在C++中,cstdio和stdio.h这两个标准输入输出头文件里面都有printf函数。
-[C/C++入门][printf输出]5、详解C语言和C++中的printf输出
-【C语言】scanf()