问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言程序,任何进制的数转换成十进制数,错在哪?超过千就不对了_百度...

发布网友 发布时间:2024-10-22 08:10

我来回答

4个回答

热心网友 时间:2024-11-17 08:16

#include <stdio.h>
#include <math.h>
#include <string.h>

int main()
{
unsigned int k=0;
char a[34], b[33] = {0};
int j, i, len;
printf("输入转换的进制数:");
scanf("%d",&j);
switch(j)
{
case 16:
printf("输入要转换的数:");
scanf("%x",&k);
printf("转换的结果是:%d\n",k);
return 0;
case 8:
printf("输入要转换的数:");
scanf("%o", &k);
printf("转换的结果是:%d\n",k);
return 0;
case 2:
printf("输入要转换的数:");
scanf("%s", a);
if ((len = strlen(a)) > 32)
{
printf("输入越界\n");
return 0;
}
memset(b, '0', 32);
sprintf(b, "%s%s", b+len, a);
for (i = 0; i < 32; ++i)
{
if (b[i] == '0')
{
continue;
}
else if (b[i] == '1')
{
k += ldexp(1, 31-i);
}
else
{
printf("输入有错误!\n");
return 0;
}
}
printf("%d\n", k);
return 0;
default:
printf("无此进制标识:\n");
}
return 0;
}

一共就3种进制标识,2 8 16.后两种 直接可以转换
2进制输入就是01010101010之类的 你可以测试一下!

有不明白的可以问我!

热心网友 时间:2024-11-17 08:16

你的程序看起来挺复杂的,如果你只要实现的功能就是,
1、如果输入10进制数,则直接输出;
2、如果输入16进制数,则以10进制的形式输出;

如果是这样的话,下面程序就可以实现这个功能

#include "stdio.h"
main()
{
long int j;
printf("输入转换的进制数:");
scanf("%d",&j);
switch(j)
{
case 16:printf("输入要转换的十六进制数:");scanf("%x",&j);break; //如果是16进制数的话
case 10:printf("输入要转换的十进制数:");scanf("%d",&j);break;//如果是十进制数的话
default:printf("输入要转换的十进制数:");scanf("%d",&j);break;//其他情况默认为十进制数
}
printf("转换为十进制的结果是:%d\n",j); //直接以十进制的形式输出
getch(); //暂停 查看屏幕的输出情况
}

热心网友 时间:2024-11-17 08:14

你的
for(i=0;i<32;i++)
{
f[i]=j;
j=j*j;
}
代码是有问题的,因为循环几次后会越界
比如我输入1200那么1200的平方是1440000
在平方就已经越界了long的范围是
-2147843647到+2147843647
所以肯定越界,
最好把j单独那出来定义成
unsigned long int j ;
这样他的范围是0到4294967295
如果这样也越界那真的很麻烦了需要拼串了

热心网友 时间:2024-11-17 08:13

for(i=0;i<32;i++)
{
f[i]=j;
j=j*j;
}
会越界。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
和面的和是什么读音? win10 应用打不开。全都打不开。 进入win10打不开软件 win10电脑软件都打不开是什么原因win10突然软件都打不开软件是怎么回事... 软件打不开怎么办win10电脑点不开软件最简单办法 请问下,离厦门市岛内的台湾路的国联大厦最近的建设银行和农业银行... 从巴黎都市到建设银行怎么坐公交车,最快需要多久 东莞万江官桥窖离建设银行哪路车最近? 建行七支分行有那些公交车经过 佛山哪里有飞越丛林拓展 ...=00H,是怎么得来的啊!为什么乘积等于3200H。谢谢 ...十进制加法 两个十进制数分别存在片内40H和50H,长度数30H,编程求和... 泰捷没有了自定义频道了能看港澳台了吗 ...了个小伤口,刚刚不小心给刚拿回来的小狗舔了一下,请问会有狂犬病么... ...但还有一个相当小的口,被狗舔了,不知会得狂犬病 ...但还有一个相当小的口,被狗舔了,不知会得狂犬病 狗舔伤口得狂犬病概率 26考研是什么意思? 考研什么入学 河北文综,地理占多少分。 文综选择题一题多少分 咖啡为啥不能叫豆浆一起喝 喝姜汁红茶瘦腰减肥又暖身 天津地区4000以内配台式电脑,专业的进!会追加100分 我不太懂电脑想去天津鞍山西道传台电脑 以天津的物价配台电脑 您好 我想传一台办公用的电脑,我是天津的 处理器最好不要太差 最好华 ... 从法国带回一瓶兰蔻奇迹粉底液,色号01 Beige Albatre 不知道是和国内哪... 去水肿最好的黑咖啡品牌 有哪些不是很甜的冲泡饮品推荐? 受伤掉了一点点皮,接水给狗狗喝的时候他舔了我的手,不过我马上用洗衣粉... 我手指上有个小伤口,还未完全愈合就给狗狗洗澡,会有狂犬病吗?_百度知 ... 南郑县大河坎中学怎么样? 大河坎中学垃圾吗 狗狗舔伤口有事吗 汉中大河坎小学中学部教学质量怎样? 结疤两天的伤口被建康小狗舔到,小狗三个月左右,正常,亲人,要打... 自己有伤口狗狗来舔会得狂犬病么 被狗舔伤口会染上狂犬病吗 我的一个小伤口被大型狗舔了会得狂犬病吗 手皮破点狗狗添了手不会得狂犬病吧?狗狗打过狂犬疫苗! ...抓得破了皮(如图),如果狗狗有狂犬病我会感染吗 狗舔了没有流血的伤口会有事吗 被小狗舔了一下有毒吗 狗狗舔了有破损的皮肤 但是之前打过狂犬疫苗 泰捷视频怎么添加本地节目源 绵阳外国语学校怎么样,高中会不会很难考,我是参加外地生考试的 狗的唾液进入嘴巴有事吗 被舔了会得狂犬病吗 4g公网对讲机 破皮被小狗舔了一下会得狂犬病吗