C语言每日一练
2021年11月1日

文章目录

  • 题目描述
  • 分析
  • 代码实现
  • 运行结果
  • 网上参考

题目描述

编程实现八进制转十进制

分析

我一开始的想法是通过输入整数形式八进制来转换成十进制输出,后来发现用字符数组输入更方便。我这里就讲讲我用整型数据输入的转换思路:
我们都知道二进制由0和1组成,3位二进制组成在一起,就可以表示0-7这八个数,所以八进制实际上就是3位二进制的组合(同理十六进制是4位二进制的组合),C语言的位运算操作的是二进制,算术运算针对的是十进制,所以,我们可以通过位运算求出八进制的每一位数(3位二进制为1位),然后通过算术运算符+,将他们加起来。和十进制运算不同的地方在于一个两位的十进制数的十位数要乘10加上个位数即一个两位十进制数,而八进制的两位数,高位只需要乘以8。

这题我们也可以偷个懒,让C编译器帮我们算,只需要三行即可实现转换:

int octal_num = 0;
scanf("%o", &octal_num);
printf("十进制:%d\n", octal_num);

当然,不建议这样做。

至于用字符数组形式输入,那就更简单了,不用通过位运算取出八进制数每位数,具体实现见网上参考部分。

代码实现

#include <stdio.h>/*** @brief 八进制转十进制* @param octal_number 八进制数* @return 十进制数*/
int Octal_to_Decimal(int octal_number)
{int dec_number = 0;       //十进制返回值int negative = 0;         //负数标志if(octal_number < 0)      //负数判断{octal_number = -1 * octal_number;negative = 1;}while(octal_number != 0){//高位之和乘8再加上低3位,低3位即八进制最低位dec_number = dec_number * 8 + (octal_number & 0x7) ;octal_number >>= 3;    //右移3位}if(negative)return -1 * dec_number;return dec_number;
}#define FIRST  //使用第一种方法,注释掉此行则使用第二种方法int main()
{int octal_num = 0;
#ifdef FIRSTprintf("输入一个八进制数\n");scanf("%o", &octal_num);printf("对应的十进制为%d\n", Octal_to_Decimal(octal_num));#else/* 偷懒法 */puts("八进制:");scanf("%o", &octal_num);printf("十进制:%d\n", octal_num);
#endifreturn 0;
}

运行结果

网上参考

原文链接:https://www.runoob.com/cprogramming/c-exercise-example82.html

//  Created by www.runoob.com on 15/11/9.
//  Copyright © 2015年 菜鸟教程. All rights reserved.
//#include<stdio.h>
#include<stdlib.h>
int main()
{int n=0,i=0;char s[20];printf("请输入一个8进制数:\n");gets(s);while(s[i]!='\0'){n=n*8+s[i]-'0';i++;}printf("刚输入的8进制数转化为十进制为\n%d\n",n);return 0;
}

C语言每日一练——第50天:八进制转十进制相关推荐

  1. C语言每日一练——第80天:换分币问题

    C语言每日一练 2022年2月13日 文章目录 题目描述 问题分析 代码实现 运行结果 题目描述 将5元的人民币兑换成1元.5角和1角的硬币,共有多少种不同的兑换方法. 问题分析 列举3元1次方程 1 ...

  2. C语言每日一练——第81天:马克思手稿中的数学题

    C语言每日一练 2022年2月17日 文章目录 题目描述 问题分析 代码实现 运行结果 网上参考 题目描述 马克思手稿中有一道趣味数学问题:有30个人,其中有男人.女人和小孩,他们在同一家饭馆吃饭,总 ...

  3. 6 获取数组中最小值_C语言每日一练8——数组中最大值和最小值

    题目: 利用指针函数,求某数组中的最大值和最小值. 实现代码: /* ================================================================= ...

  4. C语言每日一练——第85天:三色球问题

    C语言每日一练 2022年3月8日 文章目录 题目描述 问题分析 代码实现 运行结果 网上参考 题目描述 一个口袋中放有12个球,已知其中3个是红的,3个是白的,6个是黑的,现从中任取8个,问共有多少 ...

  5. C语言每日一练——第73天:谁是窃贼问题

    C语言每日一练 202年1月8日 文章目录 题目描述 问题分析 代码实现 运行结果 网上参考 题目描述 警察审问4名窃贼嫌疑犯.现在已知,这4人当中仅有一名是窃贼,还知道这4个人中的每个人要么是诚实的 ...

  6. C语言每日一练——第35天:打印菱形

    C语言每日一练 2021年10月13日 题目描述 输入菱形的高度n(必须为奇数),即正中间星号的个数,打印出用星号组成的菱形 分析 要打印菱形,先要构想要打印的图形样子,就比如下图这种: 我们可以根据 ...

  7. C语言每日一练——第28天:要求输出国际象棋棋盘

    C语言每日一练 2021年10月6日 题目描述 要求输出国际象棋棋盘 分析 先看看国际象棋的棋盘的长相: 可以看出,国际象棋棋盘呈正方形,里面包含8x8总共64个小方格,它们黑白相间.要想在控制台输出 ...

  8. C语言每日一练——第10天:求一个矩阵主对角线及副对角线元素之和

    C语言每日一练 2021年9月18日 题目描述 求一个矩阵主对角线及副对角线元素之和 分析 在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,矩阵是高等代数学中的常见工具,也常见于 ...

  9. C语言每日一练——第1天:字母大小写转换

    C语言每日一练 2021年9月9日 本人C语言菜鸟,最近工作中频频出现C语言小错误,遂决定使用笨方法提高我的C语言水平,坚持每天一个C语言小练习,养成C语言手感,从此让编程成为习惯. 题目描述 从键盘 ...

  10. 【C语言每日一练——第1练:字母大小写转换】

    C语言每日一练 2022年6月13日 题目描述 从键盘输入一个大写字母,要求改用小写字母输出 分析 从键盘输入可以使用scanf或getchar等函数. 大写字母是一个字符,字符类型数据在C语言中是以 ...

最新文章

  1. mybatis中![CDATA[]]的作用
  2. 处理南通一客户:Fortigate 310B Firmware丢失
  3. 【数据结构】八大数据结构分类
  4. java-String类
  5. springCloud - 第1篇 - 服务的注册 Eureka
  6. 思维导图 源码 php,使用思维导图,优雅的完成自己的代码
  7. 写会议纪要必备的录音转文字软件推荐,让你再也不用担心职场会议
  8. 《LDA数学八卦》读后笔记
  9. 计算机页面添加文字水印在哪,轻松学会给office2013 word文档添加图片/文字背景水印以及让水印铺满整个页面-网络教程与技术 -亦是美网络...
  10. 线性代数之 矩阵的迹
  11. fig-tlo_PHP-FIG,Quo Vadis?
  12. 揭秘HTML5小游戏排名,究竟哪些游戏最受欢迎?
  13. 计算机视觉与图形学-立体匹配专题-金字塔立体匹配网络
  14. folly库安装(5)folly的安装
  15. KBQA知识问答概述
  16. 异常检测 | 基于Siamese网络学习距离函数来定位视频中的异常
  17. 计算机应用基本技能试题,计算机应用基本技能.doc
  18. 对于霸榜视频超分领域的VRT方法的深度解读
  19. ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.26‘ not found (required
  20. 一日一练:有效的回旋镖

热门文章

  1. 构建具有时间依存协变量的Elastic-net Cox模型
  2. cox回归模型python实现_生存分析Cox回归模型(比例风险模型)的spss操作实例
  3. 强化学习DQN 入门小游戏 最简单的Pytorch代码
  4. 【驱动详解】如何理解驱动程序
  5. 【nginx流程分析之初始化cycle】
  6. 如何向PD充电器取电9V12V15V20V给电池或者智能家居供电快充?
  7. 诗经 - 小雅 -采薇
  8. 服务器共享文件夹用户名和密码怎么设置,如何在共享文件夹设登录帐号和密码 - 卡饭网...
  9. 分段线性插值法实验报告_试验二插值法(含实验报告格式)-金锄头文库
  10. Gartner 研讨会 “九问数字化转型” 会后感分享