把十进制整数转换为r(r=2)进制输出(顺序栈实现)

上周的第二个作业补上~~

上周的要求:

1.给出顺序栈的存储结构定义。

2.完成顺序栈的基本操作函数。

1)      初始化顺序栈

2)      实现入栈和出栈操作

3)      实现取栈顶元素和判空操作

把十进制整数转换为r(r=2)进制输出

3.编写主函数实现基本操作函数功能,并设置测试数据,测试合法和非法数据的输出结果。

4.程序调试运行并保存输出结果。

5.整理并提交实验作业。

 1 #include <cstdio>
 2 #include <cstring>
 3 #define Stack_Size 50
 4
 5 typedef struct
 6 {
 7     int ll[Stack_Size];
 8     int top;
 9 }SeqStack;
10
11 int IsEmpty(SeqStack *S)//栈判空
12 {
13     return S->top == -1;
14 }
15
16 void Push(SeqStack * S,int x)//进栈
17 {
18     S->top++;
19     S->ll[S->top]=x;
20 }
21
22 void Pop(SeqStack * S,int *x)//出栈
23 {
24     *x=S->ll[S->top];
25     S->top--;
26 }
27
28 void InitStack(SeqStack * S)//初始化顺序栈
29 {
30     S->top = -1;
31 }
32
33
34 void zhuanhuan(int a)
35 {
36     SeqStack S;
37     InitStack(&S);
38     int kk;
39     while(a){
40         kk=a%2;
41         Push(&S,kk);
42         a=a/2;
43     }
44     while(IsEmpty(&S)==0){
45         int x;
46         Pop(&S,&x);
47         printf("%d",x);
48     }
49     printf("\n");
50
51 }
52
53 int main()
54 {
55     printf("欢迎使用!本程序将十进制转换成二进制\n");
56     printf("请输入一个十进制数\n");
57     int a;
58     scanf("%d",&a);
59     zhuanhuan(a);
60
61     return 0;
62 }
时间: 2024-10-12 18:57:08

把十进制整数转换为r(r=2)进制输出(顺序栈实现)的相关文章

编写一个算法,将非负的十进制整数转换为其他进制的数输出,10及其以上的数字从‘A’开始的字母表示

编写一个算法,将非负的十进制整数转换为其他进制的数输出,10及其以上的数字从‘A’开始的字母表示. 要求: 1) 采用顺序栈实现算法: 2)从键盘输入一个十进制的数,输出相应的八进制数和十六进制数. #include "stdio.h" #define StackSize 100 typedef char ElemType; typedef struct { ElemType data[StackSize]; int top; }SqStack; int trans(int d, in

C语言基础:将整数格式化成其它进制输出的代码

如下的资料是关于C语言基础:将整数格式化成其它进制输出的代码. #include <stdio.h> int main () { int value = 255; printf("The decimal value %d in octal is %on", value, value); printf("The decimal value %d in hexadecimal is %xn", value, value); printf("The

0x%02x 字符型的16进制输出

问题:将一个字符类型按16进制输出,输出格式为0xab, 0x后面要求是2位,不够2位则补0,比如“0x0b”. 常见的错误做法是: #include <stdio.h> int main() { char a = 0x41; // a = 'A' printf( "the hex value of a is 0x%02x\n", a ); return 0; } 如果a = 0xf1,上面的输出将是 0xfffffff1 而不是 0xf1. 究其原因,%x 是 unsig

栈的基础操作——2,8,16进制的入栈——数组类型定义

#define stack_init_size 100 #define stackincrement 10 typedef int ElemType; typedef int status; const status error=0; const status ok=1; const status overflow=-2; const int MAXSIZE = 100; typedef struct { ElemType elem[MAXSIZE]; int top; } SqStack; s

Ex 2_25 n位十进制整数转换为二进制形式..._第四次作业

(a)   当n=1时,(10)d=(1010)b 当n=2时,(100)d=(10)d x (10)d=(1010)b x (1010)b 当n=4时,(10000)d=(100)d x (100)d=(1010)b x (1010)b x (1010)b x (1010)b - 因此z=pwr2bin(n/2) T(n)=T(n/2)+(cn/2)log23=>T(n)=O(nlog23) (b) 若十进制整数x的位数等于1,则返回binary[x] 假设位数为n(n>1且n为2的幂),则

C#Winform基础 十进制整数转换为32位有符号二进制数

镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ 1 UI 2 code 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using S

十进制转换成十六进制、16进制转2进制

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <locale.h> int main() { int i,v; char bs[33]; char b[33]; char hs[9]; char h[9]; char s[4]; char *e; // 十进制整数转二进制串: i=1024; ltoa(i,b,2); sprintf(bs,"%032s&quo

给定一个十进制数M,以及需要转换的进制数N。 将十进制数M转化为N进制数

输入描述: 输入为一行,M(32位整数).N(2 ≤ N ≤** 16),以空格隔开. 输出描述: 为每个测试实例输出转换后的数,每个输出占一行. 如果N大于9,则对应的数字规则参考16进制(比如,10用A表示,等等) 输入例子: 7 2 输出例子: 111 import java.util.Enumeration; import java.util.HashMap; import java.util.Map; import java.util.Scanner; import java.util

vba的十进制转十以内的各种进制

Sub stor() 'stor   为十进制转n进制 ’n<10Dim stor, shi As Long stor = "" ‘余数变量初始化为空 n = Range("b3")shi = Range("a3") ’从表格内取值 Do While shi > 0 stor = shi Mod n & stor ’求除数 shi = Int(shi / n) ’计算剩下的值 Loop Range("c3"