天天看点

郝斌C语言 printf与scanf的用法基本的输入和输出函数的用法

文章目录

  • 基本的输入和输出函数的用法
    • printf() —— 将变量的内容输出到显示器上
      • 为什么需要输出控制符
      • printf的基本用法
      • printf中%x及其相关的用法
    • scanf() [通过键盘将数据输入到变量中]
      • scanf用法_不含非输入控制符
      • scanf用法_含有非输入控制符
      • 一次给多个变量键盘赋值
      • scanf对用户非法输入的处理

基本的输入和输出函数的用法

printf() —— 将变量的内容输出到显示器上

四种用法

  1. printf(“字符串\n”);
  2. printf(“输出控制符”,输出参数);
  3. printf(“输出控制符1 输出控制符2 ……”,输出参数1, 输出参数2,……); 输出控制符和输出参数的个数必须一一对应
  4. printf(“输出控制符 非输出控制符”, 输出参数);

 输出控制符包含如下:

%d 整形 int
%ld 长整型 long
%ld 长整型 long
%c 字符 char
%f 单精度浮点型 float
%lf 双精度浮点型 double
%x(或者%X后者%#X) int 或 short int 或 long int
%o 同上
%s 字符串

为什么需要输出控制符

  1. 01组成的代码可以表示数据也可以表示指令
  2. 如果01组成的代码表示的是数据的话,那么同样的01代码组合以不同的输出格式输出就会有不同的输出结果
    郝斌C语言 printf与scanf的用法基本的输入和输出函数的用法

printf的基本用法

#include<stdio.h>
int main(void)
{
 1. // printf("哈哈!\n"); // \n表示换行符
 
 2. // int i = 10; // i对应的不是10,而是10的二进制代码
    // printf("%d", i); //d是十进制
 
 3. // int j = 3;
   // int k = 5;
   printf("%d %d\n", j, k); // ok
   printf("%d\n", j, k); // 只有一个3,error 输出控制符和输出参数的个数不匹配
4. printf("i = %d, j = %d\n", j, k);
   
    return 0;
}
           

printf中%x及其相关的用法

/*
    时间: 2020/03/16 21:14 
    功能:……
    目的:
        测试%x %X %#x %#X的用法    
*/

#include<stdio.h>
int main(void)
{
    int x = 47; // 100是十进制
    printf("%x\n", x); // 输出结果是:2f
    printf("%X\n", x); // 输出结果是:2F
    printf("%#x\n", x); // 输出结果是:0x2f
    printf("%#X\n", x); // 输出结果是:0X2F   %#X推荐使用
    
    return 0;
}

/*
    在VC++中的输出结果是:
    --------------------------
    2f
    2F
    0x2f
    0X2F
    --------------------------
    总结:
        ……
*/
           

scanf() [通过键盘将数据输入到变量中]

  两种语法:

   用法一:scanf(“输入控制符”, 输入参数);

   功能: 将从键盘输入的字符转化为输入控制符所规定格式的数据,然后存入以输入参数的值为地址的变量中

   用法二:scanf(“非输入控制符 输入控制符”, 输入参数);

   功能: 将从键盘输入的字符转化为输入控制符所规定格式的数据,然后存入以输入参数的值为地址的变量中 非输入控制符必须原样输入

  如何使用scanf编写出高质量的代码

  1. 使用scanf之前最好先使用printf提示用户以什么样的方式来输入
  2. scanf中尽量不要使用非输入控制符,尤其是不要用\n
  3. 应该编写代码对用户的非法输入做适当的处理
while ( (ch = getchar()) != '\n')
       			continue;
           

scanf用法_不含非输入控制符

#include<stdio.h>
int main(void)
{
    int i;
    scanf("%d", &i); // 输入是默认以字符形式输入 所以需要对其格式化
                     // &i 表示i的地址 &是一个取地址符
    printf("i = %d\n", i);
    
    return 0;
}
           

scanf用法_含有非输入控制符

#include<stdio.h>
int main(void)
{
    int i;
    scanf("m%d", &i); // 输入 mn 、 123 都是错误的  输入m123 正确
    printf("i = %d", i);
    
    return 0;
}
           

一次给多个变量键盘赋值

#include<stdio.h>
int main(void)
{
    int i, j,k;
    scanf("%d %d %d", &i, &j, &k); // 输入1 2 3  输出显示1 2 3
    
    printf("请输入三个值,中间以逗号分隔:");
    scanf("%d,%d,%d", &i, &j, &k); // 输入1,2,3  输出显示1 2 3
    
    printf("i = %d, j = %d, k = %d\n", i, j, k);
    
    scanf("%d\n", i); // 非常不好的输入格式 
    return 0;
}
           

scanf对用户非法输入的处理

#include<stdio.h>
int main(void)
{
    int i;
    char ch;
    scanf("%d", &i);
    printf("i = %d\n", i);
   // ……
   
   while ( (ch = getchar()) != '\n')
       continue;
   int j;    
   scanf("%d", &j);    
   printf("j = %d\n", j);  // 在程序的某一块 很可能会接收到前面的垃圾数据
   
    return 0;
}