数据结构实验之栈一:进制转换

本文通过一个数据结构实验介绍了如何使用栈进行进制转换,特别是从十进制到任意(2-9)进制的转换。讨论了错误案例,强调0的进制转换仍为0,并提供了AC代码示例。
摘要由CSDN通过智能技术生成

think:
1 刚才补了一个栈的题目,AC之后查了查之前一开始时候写的代码,真的感觉当时自己不理解,硬生生的套上一些模板,就和自己现在学习树的学习方法是一样的现在回想一下其实但是并没有那么难,自己但是将一种解决问题的思想硬生生的套上模板,感觉有点傻,不过这样也很正常,自己就是这样傻傻的,哈哈, 回归原题,题目的知识点为栈和进制转换,进制转换的方法是必须知道的。下面是百度上的二进制与十进制转换的知识举例:
十进制转二进制:
用2辗转相除至结果为1
将余数和最后的1从下向上倒序写 就是结果
例如302
302/2 = 151 余0
151/2 = 75 余1
75/2 = 37 余1
37/2 = 18 余1
18/2 = 9 余0
9/2 = 4 余1
4/2 = 2 余0
2/2 = 1 余0
故二进制为100101110
二进制转十进制
从最后一位开始算,依次列为第0、1、2…位
第n位的数(0或1)乘以2的n次方
得到的结果相加就是答案
例如:01101011.转十进制:
第0位:1乘2的0次方=1
1乘2的1次方=2
0乘2的2次方=0
1乘2的3次方=8
0乘2的4次方=0
1乘2的5次方=32
1乘2的6次方=64
0乘2的7次方=0
然后:1+2+0
+8+0+32+64+0=107.
二进制01101011=十进制107

2错误反思:
【注意0的进制转换依然为0】

sdut原题链接

数据结构实验之栈一:进制转换
Time Limit: 1000MS Memory Limit: 65536KB

Problem Description
输入一个十进制非负整数,将其转换成对应的 R (2 <= R <= 9) 进制数,并输出。

Input
第一行输入需要转换的十进制非负整数;
第二行输入 R。

Output
输出转换所得的 R 进制数。

Example Input
1279
8

Example Output
2377

Hint
Author

以下为Accepted代码

#include <stdio.h>
int main()
{
    int stacks[199859];
    int top, x, R;
    top = 0;
    scanf("%d", &x);
    scanf("%d", &R);
    if(x == 0)
        printf("0\n");
    while(x)
    {
        stacks[top++] = x%R;
        x /= R;
    }
    while(top)
    {
        top--;
        printf("%d", stacks[top]);
        if(top == 0)
            printf("\n");
    }
    return 0;
}


/***************************************************
User name: jk160630
Result: Accepted
Take time: 0ms
Take Memory: 124KB
Submit time: 2017-02-13 16:07:44
****************************************************/

以下为Wrong Answer代码—0的进制转换

#include <stdio.h>
int main()
{
    int
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值