6-4 十进制转换二进制 (15 分)

本题要求实现一个函数,将正整数n转换为二进制后输出。

函数接口定义:

void dectobin( int n );

  

函数dectobin应在一行中打印出二进制的n。建议用递归实现。

裁判测试程序样例:

#include <stdio.h>

void dectobin( int n );

int main()
{
    int n;

    scanf("%d", &n);
    dectobin(n);

    return 0;
}

/* 你的代码将被嵌在这里 */

  

输入样例:

10

  

输出样例:

1010

  

void dectobin( int n )
{
    if(n == 0)
        printf("0");
    else if(n == 1)
        printf("1");
    else{
        dectobin(n/2);//利用二进制的原理
        printf("%d", n%2);
    }
}

  

原文地址:https://www.cnblogs.com/Jie-Fei/p/10145103.html

时间: 2024-08-05 17:35:06

6-4 十进制转换二进制 (15 分)的相关文章

Formiko总结整数十进制转换二进制原理

引子: 为什么十进制转二进制的“辗转相除记录余数倒序输出”的算法是正确的?这个问题陪伴了Formiko半年. 实践: 实践一:把十进制数100转换成二进制数的图   上图和和下图唯一的区别在最后一位上,只是除到0和除到1的区别,但在算法本身的理解上应该不会有本质的区别. 实践二: 十进制数100或许太大,不便于一目了然的验证.试一试十进制数1,2,3. 思考: 以上算法的思路是“对原数反复进行除法得到余数,最后将余数倒序输出”.但是看到如图对十进制数100,1,2,3的操作,都看不出原思路的由来

C语言 十进制转换二进制

十进制转换二进制主要采用的是连除倒取余的方法  代码如下 int num = 8; int tempArr[32]={0}; int i = 0; while (num / 2 != 1 ) { tempArr[i] = num % 2; num /=2; i++; } tempArr[i+1] = 1; for (int j = sizeof(tempArr)/sizeof(int)-1; j>=0; j--) { printf("%d", tempArr[j]); }

十进制转换二进制

// 十进制转换二进制 private static String convertBinary(int sum) { StringBuffer binary = new StringBuffer(); while (sum != 0 && sum != 1) { binary.insert(0, sum % 2); sum = sum / 2; if (sum == 0 || sum == 1) { binary.insert(0, sum % 2); } } return binary.

浙大版《C语言程序设计(第3版)》题目集 练习3-7 成绩转换 (15 分)

练习3-7 成绩转换 (15 分) 本题要求编写程序将一个百分制成绩转换为五分制成绩.转换规则: 大于等于90分为A: 小于90且大于等于80为B: 小于80且大于等于70为C: 小于70且大于等于60为D: 小于60为E. 输入格式: 输入在一行中给出一个整数的百分制成绩. 输出格式: 在一行中输出对应的五分制成绩. 输入样例: 90 输出样例: A 思路:用if-else语句分五种情况讨论. 代码如下: #include<stdio.h> int main() { int a, A, B,

练习2-12 输出华氏-摄氏温度转换表 (15 分)

练习2-12 输出华氏-摄氏温度转换表 (15 分) 输入2个正整数lower和upper(lower≤upper≤100),请输出一张取值范围为[lower,upper].且每次增加2华氏度的华氏-摄氏温度转换表. 温度转换的计算公式:,其中:C表示摄氏温度,F表示华氏温度. 输入格式: 在一行中输入2个整数,分别表示lower和upper的值,中间用空格分开. 输出格式: 第一行输出:"fahr celsius" 接着每行输出一个华氏温度fahr(整型)与一个摄氏温度celsius

Problem O(十进制转换二进制)

Problem Description Give you a number on base ten,you should output it on base two.(0 < n < 1000) Input For each case there is a postive number n on base ten, end of file. Output For each case output a number on base two. Sample Input 1 2 3 Sample O

顺序栈-使用顺序栈实现十进制转换二进制

1 #include"stdio.h" 2 #define MaxSize 50 3 typedef int DataType; 4 typedef struct{ 5 DataType elem[MaxSize]; 6 int top; 7 }SeqStack; 8 void initStack(SeqStack &s) 9 { 10 s.top = -1; 11 } 12 int push(SeqStack &s , DataType x) 13 { 14 if(s

进制转换之二进制与十进制转换

一.正整数的十进制转换二进制: 要点:除二取余,倒序排列 解释:将一个十进制数除以二,得到的商再除以二,依此类推直到商等 于一或零时为止,倒取将除得的余数,即换算为二进制数的结果 例如把52换算成二进制数,计算结果如图: 52除以2得到的余数依次为:0.0.1.0.1.1,倒序排列,所以52对应的二进制数就是110100. 由于计算机内部表示数的字节单位都是定长的,以2的幂次展开,或者8位,或者16位,或者32位..... 于是,一个二进制数用计算机表示时,位数不足2的幂次时,高位上要补足若干个

Java 控制台做个十进制和二进制互相转换

计算机使用的是二进制,计算机只认识0和1 我们日常使用的是十进制,满十进一 既然计算机只认识0和1,那么我们日常使用的计算机时如何操作呢 这就需要一套二进制和十进制互相转换的公式了 首先说十进制转换二进制,就是不断的用十进制的数字除以2,直到十进制的数字最后为0时,将余数倒序排列就是十进制的二进制表示了 如下,十进制数字12转换为二进制 12 / 2 = 6 余数为 0 6 / 2 = 3   余数为 0 3 / 2 = 1   余数为 1 1 / 2 = 0   余数为 1 然后将余数倒序连起