题目:将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。

首先:

1,30位数字的十进制,并没有一个数据类型可以存下30位的整数类型数字,所以考虑用字符串存储这个数据,遍历这个字符串,每个数获取就是字符的值减去30(‘0’)

2,30位的整数数字转化为二进制更加的长,所以也用十进制输出

3,输出的时候,用栈的思想进行输出

下面是我的代码,因为学习不久,完全按照栈的方法进行使用,以后要学会灵活运用思想:

 #include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
#define STACK_INIT_SIZE 100
#define STACK_INCRECEMENT 10 typedef struct{
int *top;
int *base;
int stacksize;
}Stack; int Stack_init(Stack *s){
s->base=(int *)malloc(STACK_INIT_SIZE*sizeof(int));
if(s->base==NULL){
return ;
}
s->top=s->base;
s->stacksize=STACK_INIT_SIZE;
return ;
}
int Push(Stack *s,int element){ if(s->top-s->base>=s->stacksize){
s->base=(int *)realloc(s->base,(s->stacksize+STACK_INCRECEMENT)*sizeof(int));
if(s->base==NULL)
exit ();
s->top=s->base+s->stacksize;
s->stacksize+=STACK_INCRECEMENT;
}
*(s->top)=element;
*(s->top)++;
return ;
} int Pop(Stack *s,int* element){ if(s->base==s->top){
return ;
}
*element=*--(s->top);
return ;
} bool judgeFinal(int number[],int size){
for(int i=;i<size;i++){
if(number[i]!=){
return false;
}
}
return true;
} int main(){ Stack s;
int initResult=Stack_init(&s);
if(initResult==){
printf("Stack Init Fail!!");
}
int intNum[];
char charNumber[];
int number=; scanf("%s",charNumber);
int size=strlen(charNumber);
while(number<size){
intNum[number]=charNumber[number]-'';
number++;
}
/*printf("Input number is:%s\n",charNumber);
for(int i=0;i<size;i++){
printf("int array:%d\n",intNum[i]);
}*/
while(!judgeFinal(intNum,size)){
77 int remain=0;
        //获得二进制的过程
78 for(int k=0;k<size;k++){
79 int tempRemain=(intNum[k]+10*remain)%2;
80 intNum[k]=(intNum[k]+10*remain)/2;
81 remain=tempRemain;
82 }
83 Push(&s,remain);
84 }
int tempNum;
while(Pop(&s,&tempNum)){
printf("%d",tempNum);
}
printf("\n");
return ;
}

最新文章

  1. NOIP2009多项式输出(水)【A004】
  2. Linear Algebra lecture9 note
  3. C#实现队列
  4. wcf长连接
  5. Android studio 安装,JDK 出错解决方案
  6. 一道javascript面试题(闭包与函数柯里化)
  7. python pip 安装库文件报错:pip install ImportError: No module named _internal
  8. iOS UIDatePicker设置为中文的方法
  9. python笔记14-三元运算符
  10. Mac 下 Java 多版本切换
  11. python中关于round函数的小坑
  12. 设置shell脚本静默方式输入密码方法
  13. odroid xu4
  14. CSS currentColor研究
  15. 【LOJ】 #2308. 「APIO2017」商旅
  16. Hyperledger Fabric服务器配置及修改Docker容器卷宗存储根目录/位置
  17. Chapter 1 概述
  18. iPhone手机屏幕的尺寸180330更新
  19. X86 寻址方式、AT&amp;T 汇编语言相关知识、AT&amp;T 与 Intel 汇编语言的比较、gcc 嵌入式汇编
  20. 关于beginPath()和closePath()的关系&gt;&gt;canvas的beginPath和closePath分析总结,包括多段弧的情况

热门文章

  1. Maven:禁止编码指定类型的资源文件
  2. plus.zip.compressImage 压缩报错{&quot;code&quot;:-5,&quot;message&quot;:&quot;输出图片失败&quot;}
  3. Winform 工程反编译后窗体如何显示
  4. Maven IntelliJ
  5. 增加github访问速度
  6. c++后台开发面试常见知识点总结(一)c++基础
  7. Mysql——索引相关
  8. iOS-reveal 的使用
  9. 【ARM-Linux开发】cmem模块/DVSDK2.0
  10. Linux ps 查看进程