1112 进制数转换

题目来源:
https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=1112
Description
输入一个十进制整数n,输出对应的二进制整数。常用的转换方法为“除2取余,倒序排列”。将一个十进制数除以2,得到余数和商,将得到的商再除以2,依次类推,直到商等于0为止,倒取除得的余数,即为所求的二进制数。例如,把52换算成二进制数的计算过程如下图:

52除以2得到的余数依次为0,0,1,0,1,1,倒序排列,得到52对应的二进制数110100。
用递归的思想来描述上述计算过程是这样的:输出n/2对应的二进制数,然后输入%2。递归函数的实现过程如下:
void convert(int n)
{
   if(n > 0)
   {
      调用自身,输出n/2对应的二进制数;
       输出n%2;
    }
}
试试吧!
Input
输入一个正整数n。
Output
输出n对应的二进制数。
Sample Input
52
Sample Output
110100
题意描述:
输入一个正整数n
计算并输出n对应的二进制数
解题思路:
调用递归函数convert(n)计算n/2的结果,输出n%2,直到n<=0为止
程序代码:

 1 #include<stdio.h>
 2 void convert(int n);
 3 int main()
 4 {
 5     int n;
 6     while(scanf("%d",&n) != EOF)
 7     {
 8         if(n==0)
 9         printf("0");
10         else
11         convert(n);
12
13         printf("\n");
14     }
15     return 0;
16  }
17 void convert(int n)
18 {
19     if(n>0)
20     {
21         convert(n/2);
22         printf("%d",n%2);
23     }
24 }

错误分析:
注意0的情况

时间: 2024-09-28 16:40:54

1112 进制数转换的相关文章

栈的实现,进制数转换以及符号匹配

//seqstack.h #ifndef _SEQSTACK_H #define _SEQSTACK_H #define STACK_SIZE 20 typedef int ElemType; //若要使用功能5 请将int 改为char #include<iostream> #include<assert.h> using namespace std; typedef struct Stack { ElemType *base; int capacity; int top; }S

c++进制数转换

QString result; char buffer [8]; sprintf(buffer, "0x%x", modelId); return result = buffer;

用Python内置函数轻松实现各种进制数之间的转换

0.说明 9个月没有写过Python了,这9个月都在华为的ICT知识海洋里遨游,前段时间刚刚通过了HCIE的认证,想着还是喜欢Python和Linux多些,所以又回来了,后面会有越来越多的Python干货分享给大家,比如后面会打算写一个完整的Linux主机监控项目的教程给初入门的朋友,相信这会是非常不错的体验. 那段时间,曾经有些时候,我需要对各种进制进行转换,因为虽然那会不写Python了,但是还是用Python自带的解释器用来做简单的数学计算,很方便. 在网上找,看有没有方法可以实现各种进制

用栈实现2进制数到十进制数的转换

问题:用栈实现2进制数到十进制数的转换 解析:用到<math.h>库中的pow函数,pow(2,i)表示2^i.当进行形参到实参的传送时,需要改变栈中的元素时传入&s,当不改变栈中元素,只对栈s进行操作时,传入s 代码实现: /*利用栈的特点将2进制数转换为10进制数 */ #include<stdio.h> #include<stdlib.h> #include<math.h> #define ElemType char #define Init_

各进制数间转换

#region 各进制数间转换 /// <summary> /// 实现各进制数间的转换.ConvertBase("15",10,16)表示将十进制数15转换为16进制的数. /// </summary> /// <param name="value">要转换的值,即原值</param> /// <param name="from">原值的进制,只能是2,8,10,16四个值.</

js各种进制数之间的转换

计算机中常用的进制数有二进制.八进制.十进制.十六进制 一.十进制 to 其他 var x = 10; // 或定义其他值均可 x.toString(n); // n 代表要转换到的进制,比如n可以为,2,8,16 二.其他进制 to 二进制 parseInt(m,n); // m代表要转换的数,n代表要转换的数是多少进制的,比如,m可以为 '1111', 则n为2,表示要将二进制数'1111',转换为十进制 三.其他进制数之间的转化,好像没有专门的函数,那就要利用上面两个函数来进行转换 例如:

1813. M进制数问题

1813. M进制数问题 Constraints Time Limit: 1 secs, Memory Limit: 32 MB Description 试用 C++的类来表示一般进制数. 给定 2 个n位m进制整数A和B,计算m进制数整数P = A / B (向下取整)与 Q = A % B的值. Input 输入包含多个测试点.第一行为一个整数T,表示测试点数. 对于每个测试点第 1 行是进制 m .第 2 行和第 3 行分别给出 m 进制整数 A 和 B. 所有 m 进制数的10进制表示均

java 的任意进制间转换

直接上代码: public class Main { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("十进制转换到其它进制:"); int x = 123 ; String str1 = Integer.toHexString(x) ; ///10进制转换成16进制的字符串 System.out.println(str1); String st

十进制到-2进制的转换

将十进制数转换成-2进制数:比如-13=1*1+1*(-2)+1*4+0*(-8)+1*16+1*(-32)==110111; string decitominus2(int num) { string result; while(num) { if(num%(-2)<0) { result.insert(result.begin(),'1'); num=num/(-2)+1; } else { result.insert(result.begin(),num%(-2)+'0'); num=nu