`
xitong
  • 浏览: 6189127 次
文章分类
社区版块
存档分类
最新评论

将A+B转换为指定进制数

 
阅读更多

前言

进制转换是典型的栈的应用,特别是用数组实现的顺序栈就更简单了,随便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];
	}
}


分享到:
评论

相关推荐

    程序员二进制计算器 v1.36

    用于将一个较大或较小的、不易读的数,自动转换为易读的单位输出。 (1)以K、M、G、T、P、E为单位输出 %sz %sz对结果按1024为单位换算,用于快速计算磁盘文件的大小(sz是size的简写): 当结果时,原样输出,...

    汇编语言 20个练习题目 代码加实验报告

    5.17 试编写一个程序,把AX中的十六进制数转换为ASCII码,并将对应的ASCII码依次存放到MEM数组中的四个字节中,例如:当(AX)=2A49H时,程序执行完后,MEM中的4个字节的内容为39H,34H,41H和32H。 5.18 把0~100D...

    循环移位补码.rar

    选择结果类型,如果选择循环移位,输入循环移位数值(正数右移,负数左移),针对 [a, b]区间内的每个数值n,先将十进制变成二进制,按照指定数值(正数右移,负数左移)循环移位,再将二进制结果转换成十进制,输出...

    西工大noj答案完整版.doc

    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...

    多功能计算器(带公式输入,调色板,进制转换,小数位设定,常用数学公式,逻辑运算(与或非),常用函数(sin,cos等),ASCII码转换等等)

    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)...

    ibm-pc汇编课后习题答案

    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=...

    20秋东大《计算机应用基础》在线平时作业1.doc

    A.IP地址从32位的二进制地址缩减为8位的二进制地址 B.IP协议再也不需要了 C.我们只需要简单的记住一个网站域名,而不必记住IP地址 D.IP地址再也不需要了 答案:C 8.以下____不是常用的声音文件格式. A.JPEG文件 B....

    flash shiti

    如果X为一字符串,则函数将X解释为一个指数形式的十进制数; D. 如果X未定义,则返回0。 41.按钮的属性有那些? A. 按钮的属性有UP; B. 按钮的属性有UP和OVER; C. 按钮的属性有DOWN; D. 按钮的属性有HIT. ...

    JAVA基础之java的移位运算

    ~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进制 .子程序 读...

    javascript入门笔记

    特点 :将 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.在...

    计算机应用基础试题和答案解析.doc

    计算机应用基础试题及答案 1、与十进制数100等值的二进制数是 A&gt;0010011 B&gt;1100010 C&gt;1100100 D&gt;1100110 之间的转换,方法:整数部分除基取余。例如这道题只需要把十进制数100去除2〔二进制 基数即可,取余数的方法为...

    上海电机学院C语言实训答案

    说明:输入数为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,乘积...

    C++复习资料之系列

    (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的值 ...

    c语言程序设计标准教程

    参与运算数仍以补码出现,例如9^5可写成算式如下: 00001001^00000101 00001100 (十进制为12) main(){ int a=9; a=a^15; printf("a=%d\n",a); } 4. 求反运算 求反运算符~为单目运算符,具有右结合性。 其功能是对...

    2014秋奥鹏离线作业计算机应用基础.doc

    将二进制数1010.11转换为对应的十进制数。 答:是10.75 二、简答 1.什么叫位?什么叫字节?什么叫字长?字长表示了计算机的什么特点? 答:位(bit)一个二进制数可以理解为1位,(0101)4位 ,(00111)5位 8个二...

    【奥鹏】[东北师范大学]《计算机应用基础在线作业3-0005‖满分参考.docx

    正确选项 :B 将十进制数28.625转换成十六进制数为 选项A:1C.A 选项B:1C.5 选项C:112.10 选项D:112.5 正确选项 :A 在输入数据时键入前导符( )表示要输入公式。 选项A:" 选项B:+ 选项C:= 选项D:% 正确选项 :C 【奥鹏...

    SuperNotepad

    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; 二进制正/负数均采用补码表示...

    c# 加密和解密相关代码

    序推后3 位,字母A 将被推作为字母D,字母B 将被推作字母E。本实 例使用C#实现了恺撒加密的算法,实例运行效果如图19.4 所示。 关 键技术 本实例实现时主要用到了string 类的ToCharArray 方法和Convert 类的ToChar ...

Global site tag (gtag.js) - Google Analytics