-
基本输入输出
-
scanf()函数
scanf ()原型:
# include <stdio.h>;
int scanf( const char *format, ... );
scanf 是 scan format 的缩写,意思是格式化扫描,也就是从键盘获得用户输入。scanf函数是一个标准库函数,在使用scanf函数之前不必包含stdio.h文件,一般形式为:
scanf("格式化字符串",地址表);
格式化字符串包括以下三类不同的字符;
1. 格式化说明符: 格式化说明符与printf()函数中的格式说明符基本相同。
2. 空白字符: 空白字符会使scanf()函数在读操作中略去输入中的一个或多个空白字符。
3. 非空白字符: 一个非空白字符会使scanf()函数在读入时剔除掉与这个非空白字符相同的字符。
格式控制字符串的作用与printf函数相同,但不能显示非格式字符串,也就是不能显示提示字符串。地址表中给出各变量的地址,由地址运算符“&”后跟变量名组成的。
变量与变量地址:
例如定义两个变量a、b;
int a,b;
在这里,a、b为变量名,而&a、&b则分别表示变量a和变量b的地址。&是一个取地址运算符,&a和&b是一个表达式,其功能是求a、b的地址。一般使用时我们这样使用:
int a,b;
scanf("%d%d",&a,&b);
但在scanf()函数中也需要注意以下几点:
- 在scanf()函数中不存在转义字符,所以除了格式字符外全部都要原样输入;
int a; scanf("%d\t",&a);
这种写法是错误的,但系统一般不会报错;假如我们运行程序输入整型10,程序不会结束,而是等待你输入任意数字或符号才会结束,而变量a所获得的的值是10。
- 输入列表的变量如果是基本类型(即整型、实型、字符型)一定要使用取地址符&(输入字符串到字符数组的情况除外),而且&后必须是变量,不允许是常量或表达式。
如:
int a,b; scanf("%d%d",a,b);
这是不合法的。scanf函数的作用是:按照a、b在内存的地址将a、b的值存进去。“&a”指a在内存中的地址。
-
输入数据时,不要企图规定数据的精度
float a; scanf("%.2f",&a);
这样做是不合法的,输入数据时不能规定精度,因此在这里我们要记住一个程序是不能控制操作它的人来输入数据的精度的。
-
输入数据的方式与要求不符
scanf("%d%d",&a,&b);
输入时,不能用逗号作两个数据间的分隔符,如下面输入不合法:3,4 输入数据时,在两个数据之间以一个或多个空格间隔,也可用回车键,跳格键tab。