Problem Description
输入一个十进制非负整数,将其转换成对应的 R (2 <= R <= 9) 进制数,并输出。
Input
第一行输入需要转换的十进制非负整数;
第二行输入 R。
Output
输出转换所得的 R 进制数。
Sample Input
1279
8
Sample Output
2377
首先说一种用数组实现的,
#include<stdio.h>
#include<stdlib.h>
int date[101];
int main()
{
int a,r,top=0;
scanf("%d%d",&a,&r);
if(a==0)
printf("%d\n",a);
else
{
while(a!=0)
{
date[top++]=a%r;
a=a/r;
}
while(top!=0)
printf("%d",date[--top]);
printf("\n");
}
return 0;
}
用栈来实现,pust入栈,top查询栈顶元素,pop出栈,s.empty( ),判断栈是否为空,为空返回1.
#include<bits/stdc++.h>
using namespace std;
int main()
{
stack<int>s;
int a,r;
scanf("%d %d",&a,&r);
if(a==0)
printf("%d\n",a);
else
{
int x=0;
while(a!=0)
{
x=a%r;
s.push(x);
a=a/r;
}
while(!s.empty())
{
printf("%d",s.top());
s.pop();
}
printf("\n");
}
return 0;
}