题目:将一个长度最多为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. YouTube 网站的架构演进——阅读心得

    基础平台 Apache Python Linux(SuSe) MySQL psyco,一个动态的Python到C的编译器 lighttpd代替Apache做视频播放 状态 支持每天超过5亿的视频点击量 ...

  2. 转载---WCF、WPF、Silverlight和区别

    转自--http://hi.baidu.com/wl5026442/item/6ce62b4d19ff64e61381da9c SilverLight可以看作是WPF的一个简化版本,或者一个轻量版本. ...

  3. 图像质量评价-NQM和WPSNR

    王保全. 基于混合专家模型的快速图像超分辨率方法研究与实现[D]. 2015. PSNR 和SSIM 在有时候并不能很确切的表示图像质量 标准,该论文中根据一定量的人为的感知评分作为参考,用斯皮尔曼等 ...

  4. oracle-密码

    Oracle 11g 默认用户名和密码安装ORACLE时,若没有为下列用户重设密码,则其默认密码如下: 用户名/密码 登录身份 说明sys/change_on_install SYSDBA 或 SYS ...

  5. Qt自定义类添加qvector报错

    PtsData& PtsData::operator=(const PtsData& obj){ return *this;} PtsData::~PtsData(){ }

  6. Spark2.0协同过滤与ALS算法介绍

    ALS矩阵分解 一个 的打分矩阵 A 可以用两个小矩阵和的乘积来近似,描述一个人的喜好经常是在一个抽象的低维空间上进行的,并不需要把其喜欢的事物一一列出.再抽象一些,把人们的喜好和电影的特征都投到这个 ...

  7. Java 实现 telnet命令 验证主机端口的连通性

    Java 实现 telnet命令 验证主机端口的连通性 1.Telnet 命令 Telnet协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式.它为用户提供了在本地计 ...

  8. 生产订单BADI实例

    转自:https://blog.csdn.net/wbin9752/article/details/7951390 以生产订单收货为例: 1.BADI的查找方法: SE38在程序中搜索关键字CL_EX ...

  9. Redis CrackIT 入侵事件引发Linux 沦陷

    ▲针对全球6379端口的redis服务器做了扫描,结果如上图 如图开放在公网的redis的6379端口的ip总数有63443个.无密码认证的IP有43024个,在总数占比里达到67%.发现遭受到red ...

  10. pycharm连接linux版python

    1.建立连接 2.测试连接 3.同步目录 4.查看同步的目录 5.设置永久同步目录 6.设置连接 可以看到添加进来了 参照文档: https://www.cnblogs.com/xiao-apple3 ...