目录
printf函数
格式:
printf("输入要打印的信息和要打印的变量",变量);
eg:printf("a+b=%d",a+b);
基本用法
1、打印无法输入的字符
\n | 换行 |
\t | 制表符=键盘上的Tab键 |
\\ | 打印单个斜杠 \ |
\\\ | 打印双斜杠 \\ |
\' | 打印单引号 ‘ |
\" | 打印双引号 “ |
\r | 回车符 |
\f | 在下一行的相同位置显示,不受窗口影响 |
\v | 在下一行的相同位置显示 |
实列
#include <stdio.h>
int main(int argc, char const *argv[])
{
printf("欢\n迎\n来\n到\n我\n的\n世\n界\n|\n|\n|\n你\n张\n哥\n"); //\n的使用
printf("欢\v迎\v来\v到\v我\v的\v世\v界\v|\v|\v|\v你\v张\v哥\n"); //\v的使用
printf("欢\f迎\f来\f到\f我\f的\f世\f界\f|\f|\f|\f你\f张\f哥\n"); //\f的使用
printf("欢\t迎\t来\t到\t我\t的\t世\t界\t|\t|\t|\t你\t张\t哥\n"); //\t的使用
return 0;
}
结果:(太长了所以横着放了)
2、在屏幕上格式输出
%d | 以十进制输出 |
%f(%lf) | 以输出小数 |
%s | 输出字符串(至少有两个字符) |
%c | 输出字符常量(一个字符) |
%x | 以十六进制输出 |
%p | 以十六进制输出前面为零不省略 |
在输出是可以修改显示位数%.CX(C为常数,X为输出格式的代表)
实列:
#include <stdio.h>
int main(int argc, char const *argv[])
{
int a = 1;
float b = 1.12;
double c =1.2343;
char A = 'a';
char AB[8] = "abcdefj";
printf("%d\n",a); //显示十进制的数据
printf("%.2d\n",a);
printf("%f\n",b); //显示float型数据
printf("%.2f\n",b);
printf("%f\n",c); //显示double型数据
printf("%.4f\n",c);
printf("%.c\n",A); //显示单个字符
printf("%s\n",AB); //显示字符串
return 0;
}
结果:
特殊用法
格式:
printf(“\033[背景颜色;字体颜色 ;控制码 要打印的内容 \033[背景颜色;字体颜色 ;控制码 要打印的内容”);
例如:printf("\033[30m 还得是你张!!! \033[0m \n ") ; //黑色
1、显示颜色——背景和字体颜色
40 | 黑 | 30 | 黑 |
41 | 红 | 31 | 红 |
42 | 绿 | 32 | 绿 |
43 | 黄 | 33 | 黄 |
44 | 深蓝 | 34 | 深蓝 |
45 | 紫 | 35 | 紫 |
46 | 蓝 | 36 | 蓝 |
47 | 白色 | 37 | 白色 |
49 | 正常 | 39 | 正常 |
实列:
#include <stdio.h>
int main(int argc, char const *argv[])
{
//字体颜色
printf("\033[30m 还得是你张哥!!!!! \033[0m \n ") ; //黑色
printf("\033[31m 还得是你张哥!!!!! \033[0m \n ") ; //红色
printf("\033[32m 还得是你张哥!!!!! \033[0m \n ") ; //绿色
printf("\033[33m 还得是你张哥!!!!! \033[0m \n ") ; //黄色
printf("\033[34m 还得是你张哥!!!!! \033[0m \n ") ; //深蓝色
printf("\033[35m 还得是你张哥!!!!! \033[0m \n ") ; //紫色
printf("\033[36m 还得是你张哥!!!!! \033[0m \n ") ; //蓝色
printf("\033[37m 还得是你张哥!!!!! \033[0m \n ") ; //白色
printf("\033[39m 还得是你张哥!!!!! \033[0m \n ") ; //正常
printf("===========================================================\n");
//背景颜色
printf("\033[40m 还得是你张哥!!!!! \033[0m \n ") ; //黑色
printf("\033[41m 还得是你张哥!!!!! \033[0m \n ") ; //红色
printf("\033[42m 还得是你张哥!!!!! \033[0m \n ") ; //绿色
printf("\033[43m 还得是你张哥!!!!! \033[0m \n ") ; //黄色
printf("\033[44m 还得是你张哥!!!!! \033[0m \n ") ; //深蓝色
printf("\033[45m 还得是你张哥!!!!! \033[0m \n ") ; //紫色
printf("\033[46m 还得是你张哥!!!!! \033[0m \n ") ; //蓝色
printf("\033[47m 还得是你张哥!!!!! \033[0m \n ") ; //白色
printf("\033[49m 还得是你张哥!!!!! \033[0m \n ") ; //正常
return 0;
}
结果:
2、控制显示
0 | 关闭之前修改恢复默认情况 |
1 | 修改亮度 |
2、3 | 没啥效果 |
4 | 下划线选择 |
5 | 闪烁 |
6 | 没啥效果 |
7 | 反显 |
8 | 隐藏要显示的内容 |
无实列具体自己动手——练一练
scanf函数
格式:
scanf("输入的格式选择",存放位置);
eg:scanf("%d %d %d", &a,&b,&c);
概念:scanf函数是缓冲读取的,只有当你输入完成后,键入回车键,scanf函数才会去读取缓冲区的内容。
个人理解:就好像是自己家里建房子,沙子不会是一铲一铲的搬到你家,而是通过车子一车一车的运过来,这样效率比较高,试想一下加入来一铲子就到你家一次是不是效率会很慢,当然当然,有的要求不一样,有需要缓存读取寻求效率(scanf函数),有的要实时响应寻求及时响应(getchar函数等)。
scanf函数的注意事项
scanf的运行过程:
在程序运行后,当系统遇到scanf函数时会后,就会阻塞在当前,当我们通过键盘键入数据后,scanf函数会通过我们调用时的格式选着来匹配,就比如,我们调用时选择的是数字(%d,%lf等)当我们键入的数据中有中文,有英文,有数字,有标点符号等等类型时,scanf函数只会拿取数字的,其他不会拿取,如果键入的数据中没有数字,则存取的地址中时随机数据;其次如果调用scanf函数时格式匹配中有其他字符,那么键入时也要相应键入。
1、格式选择的内容填充
当你在调用scanf函数时,输入的格式选择内容是程序运行后在键盘上输入的标准,具体意思是,当你的变量与变量之间是用空格隔开时,那么输入的时候也需要用空格隔开。
#include <stdio.h>
int main(int argc, char const *argv[])
{
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
printf("a=%d,b=%d,c=%d\n",a,b,c);
return 0;
}
结果与错误示范:
2、键入的数据要与调用时的类型一致
实列与上图一致,如类型不一致,则scanf函数中的存放位置将为随机值。
如果大家还有新的发现欢迎评论