scanf和printf函数处理不同进制

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

得到的运行结果如下。

image

代码分析:

从输出的结果可以看到,同样都是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运行结果如下:

image

这时,如果要输入十六进制数和八进制数,必须显式地以进制符作为前缀。如:22 0×22 022

 

转自http://www.hiadmin.org/code/scanf/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值