前言
进制转换是典型的栈的应用,特别是用数组实现的顺序栈就更简单了,随便ac了一个九度的题目,记录一下吧
题目描述:
输入两个不超过整型定义的非负10进制整数A和B(<=231-1),输出A+B的m (1 < m <10)进制数。
输入:
输入格式:测试输入包含若干测试用例。每个测试用例占一行,给出m和A,B的值。
当m为0时输入结束。
输出:
输出格式:每个测试用例的输出占一行,输出A+B的m进制数。
样例输入:
8 1300 48
2 1 7
0
样例输出:
2504
1000
AC代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define max_size 1000
struct stack
{
int data[max_size];
int top;
};
void initStack(struct stack *);
void pushStack(struct stack *, int );
int popStack(struct stack *);
int main()
{
unsigned int m, num;
unsigned long int a, b, plus, remainder;
struct stack *pstack;
pstack = (struct stack *)malloc(sizeof(struct stack));
while(scanf("%d", &m) != EOF && m != 0)
{
scanf("%ld %ld", &a, &b);
//初始化
plus = a + b;
initStack(pstack);
//考虑a+b=0的情况
if(plus == 0)
{
pushStack(pstack, 0);
}
//求m进制数
while(plus)
{
remainder = plus % m;
pushStack(pstack, remainder);
plus /= m;
}
//打印输出
while(pstack->top > 0)
{
num = popStack(pstack);
printf("%d", num);
}
printf("\n");
}
return 0;
}
void initStack(struct stack *s)
{
s->top = 0;
}
void pushStack(struct stack *s, int data)
{
if(s->top < max_size + 1)
{
s->data[s->top ++] = data;
}
}
int popStack(struct stack *s)
{
if(s->top > 0)
{
return s->data[-- s->top];
}
}
分享到:
相关推荐
用于将一个较大或较小的、不易读的数,自动转换为易读的单位输出。 (1)以K、M、G、T、P、E为单位输出 %sz %sz对结果按1024为单位换算,用于快速计算磁盘文件的大小(sz是size的简写): 当结果时,原样输出,...
5.17 试编写一个程序,把AX中的十六进制数转换为ASCII码,并将对应的ASCII码依次存放到MEM数组中的四个字节中,例如:当(AX)=2A49H时,程序执行完后,MEM中的4个字节的内容为39H,34H,41H和32H。 5.18 把0~100D...
选择结果类型,如果选择循环移位,输入循环移位数值(正数右移,负数左移),针对 [a, b]区间内的每个数值n,先将十进制变成二进制,按照指定数值(正数右移,负数左移)循环移位,再将二进制结果转换成十进制,输出...
2.A+B 3.A+BⅡ 4.AB 5.ACKERMAN 6.Arithmetic Progressions 7.Bee 8.Checksum algorithm 9.Coin Test 10.Dexter need help 11.Double 12.Easy problem 13.Favorite number 14.Graveyard 15.Hailstone 16.Hanoi Ⅱ 17...
B为十进制,输出十进制) X^:A的B次方(2X^3=8) 2X^:2的B次方(2X^3=8) logN:X^的逆函数(8logN2=3) logN2:2X^的逆函数(8logN2=3) 逻辑运算: (and):求与 (or):求或 (not):求非 (Xor):求异或(相异为1,相同为0)...
1.1 用降幂法和除法将下列十进制数转换为二进制数和十六进制数: (1) 369 (2) 10000 (3) 4095 (4) 32767 答:(1) 369=1 0111 0001B=171H (2) 10000=10 0111 0001 0000B=2710H (3) 4095=1111 1111 1111B=...
A.IP地址从32位的二进制地址缩减为8位的二进制地址 B.IP协议再也不需要了 C.我们只需要简单的记住一个网站域名,而不必记住IP地址 D.IP地址再也不需要了 答案:C 8.以下____不是常用的声音文件格式. A.JPEG文件 B....
如果X为一字符串,则函数将X解释为一个指数形式的十进制数; D. 如果X未定义,则返回0。 41.按钮的属性有那些? A. 按钮的属性有UP; B. 按钮的属性有UP和OVER; C. 按钮的属性有DOWN; D. 按钮的属性有HIT. ...
~a的值与数字0x0f (对应二进制为0000 1111 )进行按位与运算的目的是减小~a的值,保证变量g的结果小于16。因此该程序的运行结果可以用数组binary 对应的元素来表示。该程序的输出如下: a = 0011 b = 0110 a|b = ...
子程序 到十进制, 整数型, 公开, 将2,8,16进制文件转换到10进制数值(返回十进制数) .参数 文本, 文本型, , 2,8,16进制文件 .参数 进制, 整数型, 可空, 默认为十六进制 2为二进制,8为八进制,16为16进制 .子程序 读...
特点 :将 a 和 b 转换为 二进制,按位比较,对应位置的数字,至少有一位为1的话,那么该为的整体结果就为1,否则为 0 ex : 5 | 3 101 011 ======== 111 结果为 :7 适用场合:任何小数与0 做 按位或的操作...
A、模拟信息 B、模拟信息或数字信息 C、数字形式D、二进制形式的数字 6.在Windows98中,要恢复回收站中的文件,只要___B____。 A、双击该文件 B、用鼠标把该文件施出回收站 C、单击该文件 D、A、B、C均可 7.在...
计算机应用基础试题及答案 1、与十进制数100等值的二进制数是 A>0010011 B>1100010 C>1100100 D>1100110 之间的转换,方法:整数部分除基取余。例如这道题只需要把十进制数100去除2〔二进制 基数即可,取余数的方法为...
说明:输入数为588(对应a)和42(对应b),588的质因子为1、2、3和7,其累乘结果为42(对应s),由s等于b(均为42),输出OK。 运行示例2: 输入:17 55 输出:17: 1*17=17, Err(17!=55) 说明:质因子为1和17,乘积...
(b) a=a+b ;b=a-b ;a=a-b; (c) t=a ;a=b ;b=t; (d) a=b ; b=a ; 14.执行语句 int i = 10,*p = &i; 后,下面描述错误的是( a )。 (a) p的值为10 (b) p指向整型变量i (c) *p表示变量i的值 ...
参与运算数仍以补码出现,例如9^5可写成算式如下: 00001001^00000101 00001100 (十进制为12) main(){ int a=9; a=a^15; printf("a=%d\n",a); } 4. 求反运算 求反运算符~为单目运算符,具有右结合性。 其功能是对...
将二进制数1010.11转换为对应的十进制数。 答:是10.75 二、简答 1.什么叫位?什么叫字节?什么叫字长?字长表示了计算机的什么特点? 答:位(bit)一个二进制数可以理解为1位,(0101)4位 ,(00111)5位 8个二...
正确选项 :B 将十进制数28.625转换成十六进制数为 选项A:1C.A 选项B:1C.5 选项C:112.10 选项D:112.5 正确选项 :A 在输入数据时键入前导符( )表示要输入公式。 选项A:" 选项B:+ 选项C:= 选项D:% 正确选项 :C 【奥鹏...
06) 执行VBS脚本 例︰a=3:b=4:c=5:p=(a+b+c)/2:msgbox "Area=" & sqr(p*(p-a)*(p-b)*(p-c)),64,"海伦公式" 07) 数值进制间转换 (注:支持批量,支持十进制范围:1E+308~9E-324; 二进制正/负数均采用补码表示...
序推后3 位,字母A 将被推作为字母D,字母B 将被推作字母E。本实 例使用C#实现了恺撒加密的算法,实例运行效果如图19.4 所示。 关 键技术 本实例实现时主要用到了string 类的ToCharArray 方法和Convert 类的ToChar ...