printf函数:
它的两种用法:
1. printf(“要输出的内容”); //直接输出内容
例子:`printf("hello world");`
格式化输出内容:
printf("格式化字符串",值列表);
例:
printf("字符1=%c\n",'a');
注意:格式化字符串后面要接一个英文的逗号"," 值与值之间用,隔开
格式化控制符:
%d:输出int类型,short类型
%ld:输出long类型
%f:输出float类型
%lf:输出double类型
%c:输出char类型
%d或者%ld的其他控制符:
1.%md:m代表这个整数占多少位,m是一个整数
实际数字不足的位数用空格补齐
如果实际的整数的位数大于或者等于m时,就按实际输出
m也可以是负数,那么代表不足位在后面补齐
2.%0md:跟上面一样的作用,只不过不足位用0补齐 (重点)
3.不能用其他的来补齐,只能用0
%f或者%lf的其他控制符
float是加上小数点一共7位有效,也就是小数点后6位是有效数字
double是加上小数点一共15位有效,也就是小数点后14位是有效数字
1.不管是float还是double默认会输出小数点后6位
2.%.mf:m代表保留小数点后几位,m是一个整数,最后一位会四舍五入 (重点)
3.%n.mf:n代表总共的列数(小数点也算1列),m还是跟上面的一样,代表保留几位小数
n可以控制列数,如果实际列数小于n时,那么不足部分以空格补齐
但是如果实际列数>=n时,就按实际的输出
n<=m时,就按照m规定的输出
scan函数 :
转义符:能改变某个字母原来意义的符号就叫转义符
%、\都是转义符
提问:
如果我想在输出的时候就输出\,怎么办?
会需要再加一个\
如果想直接输出%,那么应该用两个%
%%:输出一个%
\:输出一个\
%d:输出int类型的数
%c:输出char类型的数
%ld:输出long类型的
%f:输出float类型的
%lf:输出double类型的
%u:输出unsigned int类型的
%lu:输出unsigned long类型的
\n:换行
\t:水平制表符,就是多加几个空格,相当于按tab键
\”:输出英文的双引号
\’:输出单引号
1.scanf函数的介绍
printf是输出
那么能不能输入呢?
就要用scanf
用来接收用户输入的数据
语法:
scanf("格式化控制符",地址列表);
要用取地址符:& (shift + 7)
int num = 10;
int num;//也有值,只不过是垃圾值
注意:一定要加取地址符&
也可以接收小数:
%f:float类型
#include <stdio.h>
int main(int argc, const char * argv[]) {
int num;
printf("请输入一个整数\n");
scanf("%d",&num);
printf("num=%d\n",num);
return 0;
}
scanf函数的特点:
1、 它是一个阻塞式的函数
2、 使用scanf函数同时接收多个输入其实就是在格式化控制符里面,多写几个格式化控制符,地址列表要按照顺序给。输入的时候可以输入N次(N等于格式化控制符的个数),或者以空格隔开
3、 如果不想用空格在一行内输入,那么你在scanf函数里面可以指定符号
输入的时候必须按照这个符号来输入,否则会异常(后面的变量接不到值)
4、 scanf里面最好不要接其他的文字。如果实在忍不住手贱要加东西,那么也一定要按照你在scanf里面写的格式来输入
5、 用scanf的时候,最好不要先接收一个任意的数值类型(整型、实型),再接收一个char类型.
如果非要在后面接一个char类型的话,那么在scanf的格式化控制符之前要加一个空格
6、 如果scanf要接收的是数字,那么不管你输入多少个空格,或者回车,都不会停止让你输入,直到你输入一个数字才会停止
7、 如果接收的是int类型,你输入一个小数,那么会截取小数的整数部分
8、 如果接收的是数字,你输入的是字符,那么会结束输入,但是不会把值给你存起来
scanf的运行原理:
scanf接收用户的输入,但是用户的输入并不是直接给了变量,而是存在一个叫缓冲区的地方
1.接收输入的时候,会先去缓冲区里面找,看缓冲区里面有没有合适的值,如果有,那么就直接不让你输入,直接把缓冲区里面的值给到你的变量,如果没有呢?会让用户继续输入,直到合适,才停止
了解:C语言中的实型精度有微小误差
例子: