C语言——printf函数全解内容与scanf函数

目录

printf函数

基本用法

1、打印无法输入的字符

2、在屏幕上格式输出

特殊用法

1、显示颜色——背景和字体颜色

2、控制显示

scanf函数

scanf函数的注意事项

1、格式选择的内容填充

2、键入的数据要与调用时的类型一致

如果大家还有新的发现欢迎评论


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
4131
42绿32绿
4333
44深蓝34深蓝
4535
4636
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函数中的存放位置将为随机值。

如果大家还有新的发现欢迎评论

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值