scanf函数,与printf函数一样,都被定义在stdio.h里,因此在使用scanf函数时要加上#includestdio.h。它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中,其关键字最末一个字母f即为“格式”(format)之意。
printf函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出 信息。在编写程序时经常会用到此函数。printf()函数的调用格式为: printf(“<格式化字符串>”, <参量表>); 其中格式化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原 样输出; 另一部分是格式化规定字符, 以”%”开始, 后跟一个或几个规定字符,
用来确定输出内容格式。
参量表是需要输出的一系列参数, 其个数必须与格式化字符串所说明的输出参数个数一样多, 各参数之间用”,”分开, 且顺序一一对应, 否则将会出现意想 不到的错误。
1 #include “stdafx.h”
2 int main(void)
3 {
4 /* 定义多个变量以存储多个不同整形数据*/
5 int int_dec, int_hex, int_oct; /*定义三个int变量*/
6 int constant = 74; /*定义并初始化变量constant*/
7 /*用三种进制形式给整形变量赋值*/
8 scanf(“%d”, &int_dec); /*以十进制“d”的形式为int_dec赋值*/
9 scanf(“%x”, &int_hex); /*以十六进制“x”的形式为int_hex赋值*/ 10 scanf(“%o”, &int_oct); /*以八进制“o”的形式为int_oct赋值*/
11 /*用十进制的形式打印三个变量*/
12 printf(“int_dec(十进制) = %d/n”, int_dec); /* 打印十进制的形式*/
13 printf(“int_hex(十六进制)= %d/n”, int_hex); /* 打印十六进制的形式*/
14 printf(“int_oct(八进制)= %d/n”, int_oct); /* 打印八进制的形式*/
15 /*把十进制74用三种进制分别打印*/
16 printf(“(Dec)74 = %d/n”, constant); /* 输出74的十进制形式*/
17 printf(“(Hex)74 = %X/n”, constant); /* 输出74的十六进制大写形式*/
18 printf(“(Hex)74 = %x/n”, constant); /* 输出74的十六进制小写形式*/
19 printf(“(Oct)74 = %o/n”, constant); /* 输出74的八进制形式*/
20 return 0;
21 }
运行程序,安要求输入字符。输入如下的三个整数,中间以空格隔开:22 22 22
得到的运行结果如下。
代码分析:
从输出的结果可以看到,同样都是22,由于printf中对应的格式不一样,值也不一样
%d只接受十进制数;%x只接受十六进制数(如果没有输入前缀0x就输入22也视着为0×22)
%o只接受八进制数(如果没有前缀0输入22,也视为022;如果输入的是19就只读入1,因为9不是八进制数)
如果将8-10行的scanf函数输入格式符都是用%i,那么便可以接受所有进制的数,如下:
scanf(“%i”, &int_dec); /*为int_dec赋值*/
scanf(“%i”, &int_hex); /*为int_hex赋值*/
scanf(“%i”, &int_oct); /*为int_hex赋值*/
如果输入22 22 22运行结果如下:
如果输入22 22 22运行结果如下:
这时,如果要输入十六进制数和八进制数,必须显式地以进制符作为前缀。如:22 0×22 022