在 C语言中,scanf() 函数的功能是指定固定的格式,并且按照指定的格式接收用户通过键盘输入的数据,最后将数据存储在指定的变量中。

C语言scanf()的一般形式

scanf() 函数是用来按照指定格式从输入设备输入数据的,它的一般形式如下:

scanf(格式控制,地址列表);

下面介绍 scanf() 函数里的参数。

1) 格式控制:用来指定每个输入项的输入格式,格式控制通常由多个格式说明组成,都由“%”开头,后面跟格式字符,例如 %d、%c 等。

格式说明的个数和地址列表中的数据个数要相对应。

2) 地址列表:是需要读入变量的地址或者字符串的首地址,而不是读入变量本身。用“&”符号表示取变量的地址,不用关心变量的地址具体是多少,只要在变量的标识符前加“&”,就表示取变量的地址。

编写程序时,在 scanf() 函数参数的地址列表处一定要使用变量的地址,而不是使用变量的标识符,否则编译器会提示出现错误。

例如:

int a; //定义整型变量

scanf("%d",&a); //输入a的值

再如:

int a,b; //定义整型变量

scanf("%d,%d",&a,&b); //输入a、b的值

上面这段代码中,两个 %d 之间有一个逗号,在运行程序时,输入 a、b 的值,它们中间也需要用逗号,再按键完成输入。输入示例如下:

13,14

再如:

int a,b; //定义整型变量

scanf("a=%d,b=%d",&a,&b); //输入a、b的值

输入示例如下:

a=13,b=14

也就是说,格式控制之间用什么符号,在输入设备上就输入对应的符号。

C语言scanf()的格式字符

格式字符用在 scanf() 函数的格式控制中,一般形式如下:

%格式字符

有以下几点说明:

% 是固定的,不可改变,用到格式字符时 % 不可省略;

不同的数据类型要用不同的格式字符来控制数据的输入,如整型数据需要使用 %d 格式输入。

scanf() 函数常用的格式字符如下表所示:

表 1 scanf()函数常用的格式字符

格式字符

功能说明

d、i

用来输入有符号的十进制整数

u

用来输入无符号的十进制整数

o

用来输入无符号的八进制整数

x、X

用来输入无符号的十六进制整数(大小写形式的作用是相同的)

c

用来输入单个字符

s

用来输入字符串

f

用来输入浮点数,可以用小数形式或指数形式输入

e、E、g、G

与f作用相同,e与f、g可以相互替换(大小写形式的作用是相同的)

格式字符 %s 用来输入字符串。将字符串输入一个字符数组,在输入时以非空白字符开始,以第一个空白字符结束。字符串以 \0 作为最后一个字符。

下面分别对格式字符进行举例说明。

1) d、i 格式字符:用来输入有符号的十进制整数。例如:

int a; //整型变量

scanf("%d", &a); //用格式字符d输入

scanf("%i", &a); //用格式字符i输入

2) u 格式字符:用来输入无符号的十进制整数。例如:

int a=1; //整型变量

scanf("%u", &a); //用格式字符u输入

3) o 格式字符:用来输入无符号的八进制整数。例如:

int a; //整型变量

scanf("%o", &a); //用格式字符o输入

4) x、X 格式字符:用来输入无符号的十六进制整数(大小写形式的作用是相同的)。例如:

int a ; //整型变量

scanf("%x",& a); //用格式字符x输入

scanf("%X", &a); //用格式字符X输入

5) c 格式字符:用来输入单个字符。例如:

char a; //字符型变量

scanf("%c", &a); //用格式字符c输入

6) s 格式字符:用来输入字符串。例如:

char *a; //利用指针定义字符串变量

scanf("%s", &a); //用格式字符s输入

7) f 格式字符:用来输入浮点数,可以用小数形式或指数形式输入。例如:

float a; //浮点型变量

scanf("%f", &a); //用格式字符f输入

8) e、E、g、G 格式字符:与f作用相同,e与f、g可以相互替换(大小写形式的作用是相同的)。例如:

float a; //浮点型变量

scanf("%e", &a); //用格式字符e输入

scanf("%E", &a); //用格式字符E输入

scanf ("%g", &a); //用格式字符g输入

scanf ("%G",& a); //用格式字符G输入

【实例】使用 scanf() 函数输入半径,计算对应圆的周长和对应球的体积。

#include

int main()

{

float Pie = 3.14f; /*定义圆周率*/

float fArea; /*定义变量*/

float fRadius;

puts("Enter the radius:");

scanf("%f", &fRadius); /*输入半径*/

fArea = 2 * fRadius * Pie; /*计算圆周长*/

printf("The perimeter is: %.2f\n", fArea); /*输出计算的结果*/

fArea = 4 / 3 * (fRadius * fRadius * fRadius * Pie);/*计算球体积*/

printf("The volume is: %.2f\n", fArea); /*输出计算的结果*/

return 0; /*程序结束*/

}

运行程序,结果为:

Enter the radius:

2.5

The perimeter is: 15.70

The volume is: 49.06

从该实例代码和运行结果可以看出以下内容:

1) 为了能接收用户输入的数据,程序代码中定义了一个变量 fRadius。因为 scanf() 函数只能接收用户的数据,而不能输出信息,所以先使用 puts() 函数输出一段字符表示信息提示。

2) 调用 scanf() 函数,从函数参数中可以看到,在格式控制的位置使用双引号对格式字符进行标识,“%f”表示输入的是浮点型数据。在参数中的地址列表位置使用“&”符号表示变量的地址。此时变量 fRadius 已经得到了用户输入的数据。

3) 利用表达式计算圆的周长和球的体积,调用 printf() 函数对变量进行输出。

scanf()的附加格式字符

在格式说明中,“%”符号和格式字符间可以插入几种附加符号(即附加格式字符),一般形式如下:

% 附加格式字符 格式字符

有以下几点说明。

% 依然不可省略;

格式字符可取表 1 中的任意一种。

scanf() 函数的附加格式字符如下表所示。

表 2 scanf() 函数的附加格式字符

格式字符

功能说明

l

用于长整型数据,可加在格式字符 d、o、x、u、f 前面

h

用于短整型整数,可加在格式字符 d、o、x、u、f 前面

1) l 附加格式字符。:用于长整型数据,可加在格式字符 d、o、x、u、f 前面。例如:

long a; //定义长整型变量

double b; //定义双精度浮点型变量

scanf("%ld %lf", &a,&b); //用附加格式字符l修饰d、f,并输入

2) h 附加格式字符:用于短整型整数,可加在格式字符 d、o、x、u、f 前面。例如:

short a; //定义短整型变量

scanf("%hd", &a); //用附加格式字符h修饰d,并输入

scanf()的数值和字符混合输入

有时候程序不单会让用户输入一个数据,还可能会让用户输入多个数据,且类型不同,我们通过一个例子来说明。

【实例】输入字母和对应的 ASCII 值。

#define _CRT_SECURE_NO_WARNINGS /*解除vs安全性检测问题*/

#include

int main()

{

int num; //定义整型变量

char c; //定义字符型变量

printf("请输入字母和对应的ACSII值:\n"); //输出提示信息

scanf("%c %d",&c,&num); //输入字母和数值

printf("输入的字母是%c,它对应的ASCII值是:%d\n",c,num); //输出信息

return 0; //程序结束

}

运行结果为:

请输入字母和对应的ACSII值:

c 99

输入的字母是c,它对应的ASCII值是:99

Copyright © 2088 1986世界杯_意大利世界杯 - zlrxcw.com All Rights Reserved.
友情链接