初识C语言:与计算机的交流之输入与输出(scanf和printf)

简介: 初识C语言:与计算机的交流之输入与输出(scanf和printf)

一、printf的使用:

printf()函数是一个格式化输出函数, 用户可以通过该命令向标准输出设备输出指定的格式信息。使用的方法是: printf(“格式化字符串”, 变量)。在使用前需要注意的是该命令被定义在stdio.h头文件


1.1 打印的类型

例如:

 int main(void)
    {
        int a;
        float b;
        double c;
        a = 120;
        b = 43.21;
        c = 43.21;
        printf("hello\n");//直接打印想要出现在屏幕上的内容
        printf("%d\n",a);//打印整型变量内容
        printf("%f\n",c);//打印浮点型(小数)内容
        printf("%d,%f\n",a,b);//打印多个变量数据
        printf("a = %d,b = %f\n",a,b);//占位符
        printf("%d\n",120);//打印整型常量
        printf("%d,%f\n",120,34.56);//打印不同类型的常量
        printf("%d\n",a+100);//打印表达式结果
        printf("%d%%\n",120);//打印出“%”
        return 0;
    }


编译结果如下:


1.2 转换说明符的含义

   %d    有符号十进制整数

   %o    无符号八进制整数

   %u    无符号十进制整数

   %x    无符号十六进制整数

   %c    一个字符

   %s    字符串

   %f    十进制计数法的浮点数

   %e    E-计数法的浮点数

   %p    指针

1.3 printf的修饰

例如:

  #include <stdio.h>
 
    int main(void)
    {
        int a = 123;
        float b = 12.34;
 
        printf("%7d\n",a);  //7-表示输出的数据最小的字段宽度为7
        printf("%07d\n",a);  //0-表示如果实际宽度不够7则在左边用0填充
 
        printf("%-7d\n",a);  //负号-表示左对齐
 
        printf("%.2f\n",b);  //.2 - 表示保留小数后2位
        printf("%10.2f\n",b);  //.2 - 表示保留小数后2位
 
        printf("%d\n",-129);
        printf("%+d\n",+120);  //+ -在数据前显示+号
 
 
        char c = 'A';
        short s = 10; 
        long l = 100;
        long long ll = 10000;
 
        printf("%c\n",c);
        printf("%hhd\n",c);  // %hhd ---输出char型整数
        printf("%hd\n",s);   // %hd --- 输出short型整数
        printf("%ld\n",l);  // %ld --- 输出long型整数
        printf("%lld\n",ll);// %lld --- 输出long long型整数
 
        return 0;
    }

编译结果如下


注:

1. 转换说明符和变参的个数要相同

2. 转换说明符和变参的类型要一致

3. 输出的变参可以是常量,变量,表达式等

4. 输出float数据和double数据时,都用%f

5. 输出%时,需要用%%


二、scanf的使用

scanf()是C语言中的一个输入函数。与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include <stdio.h>。

2.1 scanf的格式

例如:

#include<stdio.h>
int main()
{
  int a;
  int b;
  scanf("%d%d", &a, &b);
  printf("%d %d",a,b);
  return 0;
}


编译结果如下 :

2.2 scanf的注意事项

错误示例:

在 printf 中,所有的“非输出控制符”都要原样输出。同样,在 scanf 中,所有的“非输入控制符”都要原样输入。所以在输入的时候“,”必须要原样输入。少一个都不行,否则就是错误。

#include<stdio.h>
int main()
{
  int a;
  int b;
  scanf("%d,%d", &a, &b);
  printf("%d %d",a,b);
  return 0;
}

所以 scanf 中%d后面也没有必要加\n,因为在 scanf 中\n不起换行的作用。它不但什么作用都没有,你还要原样将它输入一遍。

#include<stdio.h>
int main()
{
  int a;
  int b;
  scanf("%d%d\n", &a, &b);
  printf("%d %d",a,b);
  return 0;
}

无法编译

所以在 scanf 的使用中一定要记住:双引号内永远都不要加“非输入控制符”。除了“输入控制符”之外,什么都不要加,否则就是自找麻烦。而且对于用户而言,肯定是输入越简单越好。


但是需要注意的是,虽然 scanf 中没有加任何“非输入控制符”,但是从键盘输入数据时,给多个变量赋的值之间一定要用空格、回车或者 Tab 键隔开,用以区分是给不同变量赋的值。


最后再次强调:scanf“输入参数”的取地址符&千万不要忘了。这是初学者经常犯的错误。而 printf 中的“输出参数”是不带取地址符的,不要混淆了。


另外注意无论是printf还是scanf,使用时在顺序,个数以及数据类型都要一一对应,这种错误编译时不会报错!


2.3 scanf的返回值

在刷题的时候经常会遇到输入多组数据,但又不清楚具体是需要几组,不知道如何停止循环。

这就要用到scanf的返回值了:

    int main(void)
    {
        int a;
        float b;
        int ret;
 
        printf("请输入a和b:");
        ret = scanf("%d%f",&a,&b);
        printf("ret = %d\n",ret);
        printf("a = %d,b = %.2f\n",a,b);
 
        return 0;
    }

所以想要当不输入的时候结束可以使用:

while(scanf("%d",&a)!=EOF)

{

       表达式;

}


来表示返回值为零,也就是停止输出。

总结

我们学习和写博客就是输入和输出的过程,正如scanf和printf一样,输入了,自然需要输出才是完整的学习~

相关文章
|
2月前
|
存储 C语言
C语言数据类型、变量和运算符以及printf相关问题
C语言数据类型、变量和运算符以及printf相关问题
|
1天前
|
存储 程序员 编译器
初识C语言,计算机语言的基石
初识C语言,计算机语言的基石
|
1月前
|
存储 C语言 数据格式
【C语言基础考研向】03混合运算和printf讲解
本文分为两部分。第一部分介绍了C语言中的混合运算与类型强制转换的重要性,通过实例展示了当整型数进行除法运算且结果为小数时,必须使用类型转换才能正确存储浮点数结果。第二部分详细讲解了`printf`函数的功能与使用方法,包括格式化输出不同类型数据的基本语法,并通过具体示例演示了如何利用字段宽度和对齐方式来控制输出格式,帮助读者更好地理解和掌握输出格式的控制技巧。
31 10
|
1月前
|
C语言
【C语言基础考研向】05 scanf读取标准输入超详解
本文详细解析了C语言中`scanf`函数的工作原理及常见问题。首先介绍了`scanf`如何处理标准输入,并通过示例说明了为何有时会出现阻塞现象及其解决办法。接着探讨了当输入包含多种数据类型时,特别是字符型数据的处理方式,强调了格式控制的重要性,并给出了正确的输入格式示例。通过正确配置,可以避免因空格和换行符导致的问题,确保数据准确读取。
38 10
|
1月前
|
存储 C语言
【C语言基础考研向】10 字符数组初始化及传递和scanf 读取字符串
本文介绍了C语言中字符数组的初始化方法及其在函数间传递的注意事项。字符数组初始化有两种方式:逐个字符赋值或整体初始化字符串。实际工作中常用后者,如`char c[10]=&quot;hello&quot;`。示例代码展示了如何初始化及传递字符数组,并解释了为何未正确添加结束符`\0`会导致乱码。此外,还讨论了`scanf`函数读取字符串时忽略空格和回车的特点。
|
1月前
|
C语言
C语言程序设计核心详解 第三章:顺序结构,printf(),scanf()详解
本章介绍顺序结构的基本框架及C语言的标准输入输出。程序从`main()`开始依次执行,框架包括输入、计算和输出三部分。重点讲解了`printf()`与`scanf()`函数:`printf()`用于格式化输出,支持多种占位符;`scanf()`用于格式化输入,需注意普通字符与占位符的区别。此外还介绍了`putchar()`和`getchar()`函数,分别用于输出和接收单个字符。
|
2月前
|
存储 缓存 编译器
【C语言篇】scanf和printf万字超详细介绍(基本加拓展用法)(下篇)
scanf处理⽤⼾输⼊的原理是,⽤⼾的输⼊先放⼊缓存,等到按下回⻋键后,按照占位符对缓存进⾏解读。 解读⽤⼾输⼊时,会从上⼀次解读遗留的第⼀个字符开始,直到读完缓存,或者遇到第⼀个不符合条件的字符为⽌。
112 2
|
2月前
|
存储 C语言
【C语言篇】scanf和printf万字超详细介绍(基本加拓展用法)(上篇)
printf 的作⽤是将参数⽂本输出到屏幕。它名字⾥⾯的 f 代表 format (格式化),表⽰可以定制输出⽂本的格式。
58 1
|
2月前
|
存储 安全 编译器
C语言中的scanf函数
C语言中的scanf函数
|
3月前
|
存储 编解码 程序员
C语言17---计算机的存储规则
C语言17---计算机的存储规则