scanf和printf函数处理不同进制

来源:互联网 发布:java 数组分割 编辑:程序博客网 时间:2024/06/02 00:50

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/

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机cpu负载过高怎么办 移动数据上网慢怎么办 服务器密码忘记了怎么办 网吧电脑卡死了怎么办 局域网连接不上怎么办 电脑没有dns地址怎么办 无法连接版本服务器怎么办 登录游戏就死机怎么办 亿企薪税保没有绑定企业怎么办 众筹如果不成功怎么办 淘宝被投诉商标权怎么办 茅台贴标褶皱怎么办 ins取不了名字怎么办 ins密码忘了怎么办 ins不记得密码怎么办 ins账号被停用怎么办 电脑登录不上怎么办 电脑桌面密码忘记了怎么办 苹果电脑用户名忘记了怎么办 w7电脑忘记密码怎么办 电脑win10忘密码怎么办 win7账号被停用怎么办 淘宝号忘了怎么办 xp忘记系统密码怎么办 u盘忘记密码怎么办 mac系统密码忘记怎么办 电脑用户名密码忘记怎么办 win7用户名密码忘记怎么办 用户名密码忘记了怎么办 电脑用户名忘记了怎么办 win10系统忘记用户名怎么办 邮件不显示主旨怎么办 电脑被停用了怎么办 电脑密码被锁怎么办 拨号密码忘记了怎么办 xp忘记admin密码怎么办 wps表格不能编辑怎么办 微信号注销失败怎么办 微信无法注销怎么办 淘宝账号注销失败怎么办 12306忘记原账号怎么办