题目:将一个长度最多为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 ;
}

C语言存30位数字长的十进制方法的更多相关文章

  1. C语言:其他进制转换为十进制(方法二)

    #include<stdio.h> #include<math.h> #include<string.h> #include<ctype.h> //其他 ...

  2. c# 求第30位数的值

    1,1,2,3,5,8,13,21,34,55.... 求第30位数的值: 递归方法: class Program { static void Main(string[] args) { //找规律: ...

  3. 30分钟入门Java8之方法引用

    30分钟入门Java8之方法引用 前言 之前两篇文章分别介绍了Java8的lambda表达式和默认方法和静态接口方法.今天我们继续学习Java8的新语言特性--方法引用(Method Referenc ...

  4. C语言使用cmd命令并获取输出方法

    转自http://blog.csdn.net/hxh129/article/details/8000205 C语言使用cmd命令并获取输出方法 在实践中,我们有时候需要用C语言来调用cmd的命令,并得 ...

  5. C语言清空输入缓冲区的N种方法对比

    转自C语言清空输入缓冲区的N种方法对比 C语言中有几个基本输入函数: //获取字符系列 int fgetc(FILE *stream); int getc(FILE *stream); int get ...

  6. 苹果新的编程语言 Swift 语言进阶(九)--方法和下标

    一.方法 方法是与特定类型相关的函数.与属性一样,方法也包括实例方法和类型方法. 类.结构.枚举都能定义实例方法,用来封装或实现给定类型的一个实例相关的功能或特定任务. 类.结构.枚举也能定义与类型本 ...

  7. Maximum execution time of 30 seconds exceeded解决错误方法

    Maximum execution time of 30 seconds exceeded解决错误方法Fatal error: Maximum execution time of 30 seconds ...

  8. R语言中样本平衡的几种方法

    R语言中样本平衡的几种方法 在对不平衡的分类数据集进行建模时,机器学习算法可能并不稳定,其预测结果甚至可能是有偏的,而预测精度此时也变得带有误导性.在不平衡的数据中,任一算法都没法从样本量少的类中获取 ...

  9. R语言—如何安装Github包的解决方法,亲测有效

    R语言—如何安装Github包的解决方法,亲测有效 准备安装材料: R包-REmap GitHub下载地址:https://github.com/lchiffon/REmap R包-baidumap ...

随机推荐

  1. Oracle JDBC 标准连接实例

    Oracle JDBC 标准连接实例 // 创建一个数据库连接 Connection con = null; // 创建预编译语句对象,一般用PreparedStatement不用Statement ...

  2. Custom Roles Based Access Control (RBAC) in ASP.NET MVC Applications - Part 1 (Framework Introduction)

    https://www.codeproject.com/Articles/875547/Custom-Roles-Based-Access-Control-RBAC-in-ASP-NET Introd ...

  3. hbase部署经验与坑总结

    1.本地单机部署hbase,想要使用独立zookeeper,不使用自带的 vim conf/hbase-env.sh export HBASE_MANAGES_ZK=false 设置不使用自带zook ...

  4. Server 2012使用Windows PowerShell cmdlet安装角色和角色服务功能

    Server 2012使用Windows PowerShell cmdlet安装角色和角色服务功能  Windows Server 2012 安装 SQL server 2008 出现了如下错误: 解 ...

  5. python图论包networks(最短路,最小生成树带包)

    官方文档: https://networkx.github.io/documentation/networkx-1.10/reference/algorithms.html 最短路和最小生成树: im ...

  6. JAVA 基础编程练习题19 【程序 19 打印菱形图案】

    19 [程序 19 打印菱形图案] 题目:打印出如下图案(菱形) *    ***  ************  *****    ***      * 程序分析:先把图形分成两部分来看待,前四行一个 ...

  7. Pycharm连接windows上python

    首先我们需要下载一个Python安装包,然后将安装包解压到某个盘符下, 然后我们打开Pycharm软件,点击左上角的File菜单,接着选择Settings选项,如下图所示 在弹出的Settings界面 ...

  8. 利用工具破解HTTP身份验证的多种方法

    https://www.hackingarticles.in/multiple-ways-to-exploiting-http-authentication/ 1)场景 利用Apache配置HTTP验 ...

  9. lua调用的c函数模块命名规则

    比如lua中调用C函数 socket.core() , 在c中需要这样命名:luaopen_socket_core(); 基本模式是添加luaopen_前缀,讲.变为_

  10. Flutter 移动端屏幕适配方案和制作

    flutter_screenutil插件 flutter 屏幕适配方案,让你的UI在不同尺寸的屏幕上都能显示合理的布局! 注意:此插件仍处于开发阶段,某些API可能尚未推出. 安装依赖: 安装之前请查 ...