C语言

05-scanf函数

2020-05-29  本文已影响0人  Andy_Livings

一、变量的内存分析

1.字节和地址

为了更好地理解变量在内存中的存储细节,先来认识一下内存中的“字节”和“地址”。
1>内存以“字节为单位”


“字节”和“地址”

0x表示的是十六进制
2>不同类型占用的字节是不一样的,数据越大,所需的字节数就越多

2.变量的存储

1>所占用字节数跟类型有关,也跟编译器环境有关


字节数跟类型有关,也跟编译器环境有关

2>变量实例

int b = 10;
int a = 20;

3>查看内存地址:

int a;
printf("a的地址是:%p\n", &a);

4>注意
在变量未经初始化之前,不要尝试使用变量的值

int a;
printf("a的值是:%d\n", a);

上面的写法是不建议

二、scanf函数

1.简介

这也是在stdio.h中声明的一个函数,因此使用前必须加入#include <stdio.h>。调用scanf函数时,需要传入变量的地址作为参数,scanf函数会等待标准输入设备(比如键盘)输入数据,并且将输入的数据赋值给地址对应的变量

2.简单用法
int age;
scanf("%d", &age);
3.其他用法

1>用scanf函数接收3个数值,每个数值之间用中划线-隔开
scanf("%d-%d-%d", &a, &b, &c);
3个%d之间是用中划线-隔开的,因此我们在每输入一个整数后都必须加个中划线-,比如这样输10-14-20,不然在给变量赋值的时候会出问题

// 逗号, 
scanf("%d,%d,%d", &a, &b, &c); // 输入格式:10,14,20  
// 井号# 
scanf("%d#%d#%d", &a, &b, &c); // 输入格式:10#14#20  
// 字母x 
scanf("%dx%dx%d", &a, &b, &c); // 输入格式:10x14x20

2>用scanf函数接收3个数值,每个数值之间用空格隔开

scanf("%d %d %d", &a, &b, &c);

3个%d之间是用空格隔开的,我们在每输入一个整数后必须输入一个分隔符,分隔符可以是空格、tab、回车

4.注意

scanf的第一个参数中不要包含\n,比如scanf(“%d\n”, &a); 这将导致scanf函数无法结束

5.习题

提示用户输入两个整数n,然后计算并输出两个整数的和




三、程序实现

01-scanf函数的基本使用

void basic_use_scanf_function(void) {
    
    // 定义一个变量,用来保存用户输入的整数
    int number;
    
    // scanf函数只接受变量的地址
    // scanf函数是一个阻塞式的函数,等待用户输入
    // 用户输入完毕后,就会将用户输入的值赋值给number变量
    // 函数调用完毕
    scanf("%d", &number);
    
    printf("用户输入的值是%d\n", number);
}

02-scanf练习

void scanf_practice(void) {
    
    // 提示用户输入两个整数,计算并且输出两个整数的和
    
    // 1.定义2个变量,保存用户输入的整数
    int num1, num2;
    
    // 2.提示用户输入第1个整数
    printf("请输入第1个整数:\n");
    
    // 3.接收用户输入的第1个整数
    scanf("%d", &num1);
    
    // 4.提示用户输入第2个整数
    printf("请输入第2个整数:\n");
    
    // 5.接收用户输入的第2个整数
    scanf("%d", &num2);
    
    // 6.计算和,并且输出
    int sum = num1 + num2;
    printf("%d + %d = %d\n", num1, num2, sum);
    
    printf("num1 = %d, num2 = %d\n", num1, num2);
}

03-scanf的其他用法和注意

void other_uses_and_notes_of_scanf(void) {
    
    /* 1.输入字符
     char myc;
     
     scanf("%c", &myc);
     
     printf("输入的字符是%c\n", myc);
     */
    
    /* 2.一次性输入多个数值,并且以某些符号隔开
     int num1, num2;
     
     scanf("%d#%d", &num1, &num2);
     
     printf("num1=%d, num2=%d\n", num1, num2);
     */
    
    /*
     3.如果scanf参数中以空格隔开,实际输入可以以空格、tab、回车作为分隔符
     int num1, num2;
     scanf("%d %d", &num1, &num2);
     printf("num1=%d, num2=%d\n", num1, num2);
     */
    
    /*
     4.scanf中不能写\n
     int a;
     scanf("%d\n", &a); // 错误写法
     printf("a的值是%d\n", a);
     */
}
上一篇 下一篇

猜你喜欢

热点阅读