3.2.0 scanf函数
scanf函数是一个输入函数,相当于printf是输出函数,scanf函数的作用是从控制台读取用户输入的数据信息。
3.2.1 scanf函数的格式
scanf(“格式控制符”,变量地址列表);
注意:
- 格式控制符用占位符来要求用户输入指定类型的值
- 变量地址列表为&变量名,例如&num
例子:scanf(“%d”,&num);
3.2.2 scanf函数的执行原理
scanf函数是一个阻塞式函数,只有在用户输入数据后计算机系统才会继续执行C语言的命令代码。
3.2.3 scanf函数使用的占位符
使用scanf函数接收输入其他类型的数据。
想要让用户输入什么类型的数据,是根据格式控制符中的占位符来决定的。
%d 用户输入int类型;
%f 用户输入float类型;
%lf 用户输入double类型;
%c 用户输入char类型。
例子:
int num = 0;
scanf(“%d”,&num);
3.2.4 scanf函数的作用和用法
- 是在程序运行的时候,让用户输入数据,并将数据存储到变量之中;
- 先声明1个变量,变量的类型要和用户输入的数据类型一致。
然后要将用户输入的数据存储到哪一个变量中,就把这个变量的地址写在后面,使用&就可以取到变量的地址。当执行完毕之后,用户输入的数据就会自动存储到这个变量之中。
3.2.5 scanf函数的注意事项
- 如果用户输入的数据和要求的数据类型不一致,就会产生问题。
- 如果不给变量进行初始赋值,则如果客户输入的数据不符合要求会造成问题。
使用scanf函数接收用户输入多个数据。
例子:
int num1 = 0, num2 = 0;
scanf(%d%d”,&num1,&num2);
在输入两个数据时,可以用空格或回车隔开。
连续输入的时候默认分隔符是空格或回车,但是也可以自定义分隔符。
例子:scanf(%d-%d-%d”,num1,num2,num3);
记住!一旦指定了分隔符以后,就不可以再用空格或回车来做分隔符了。
如果使用scanf函数一次输入多个数据,只能是int、float或double类型,不能一起输入char类型。
3.2.6 scanf函数的缓冲区
在执行scanf函数的时候,会让用户输入1个数据。在数据输入完毕之后,并不是将这个数据直接赋值给变量,而是先将数据存储在缓冲区。
在执行scanf函数的时候,会先检查缓冲区中是否有数据。如果缓冲区中没有数据,那么就会让用户从键盘输入。如果缓冲区中有数据,直接从缓冲区中将数据拿出来,不会让用户输入数据。
当从缓冲区中拿数据的时候,如果要拿的数据类型是整型或实型,拿到的是空格、回车、tab键就会被自动忽略,继续往下拿。
如果要拿的数据类型是字符型,则不会忽略任何数据(包括空格、回车、tab键等)。
将缓冲区清空的代码:rewind(stdin);
例子:
int num = 0;
printf(“Please insert a number:”);
scanf(“%d”,&num);
char ch = ‘a’;
printf(“Please insert a character:”);
rewind(stdin);
scanf(“%c”,&ch);
printf(“num = %d\n”,num);
printf(“ch = %c\n”,ch);
3.3.0 变量赋值的一个经典题目
3.3.1 交换两个变量的值
- 声明第三方临时变量,来交换。
int num1 = 100;
int num2 = 200;
int temp = num1;
num1 = num2;
num2 = temp;
- 两数相加再相减。
int a = 10, b = 20;
a = a + b;
b = a – b;
a = a – b;