标题:关于任意进制转化10进制问题
只看楼主
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
结帖率:100%
 问题点数:0 回复次数:2 
关于任意进制转化10进制问题

某论坛朋友发的程序我看了,问题较多,而且变量设置过多,有些东西处理烦琐,我稍微简化了点
而且改过这程序之后还有个问题,就是例如基数是10,你输入的数据中有比9大的,例如a,它也可以运行
这显然是错误,所以在执行前要加些判断(自己加吧),现在的程序只能靠测试者自己保证输入正确了

#include<math.h>
#include<string.h>
long fh(char *p,int base) /*你的程序设计决定只能完成16进制以内的转化*/
{
char *q;
int i,j=0;
long a[20],sum=0; /*能处理比较大点的数字,非常大也处理不了*/

for(q=strlen(p)+p-1;q>=p;q--,j++)
{
if(*q>=48 && *q<=57)
a[j]= (*q-48) * ( pow(base,j) );
else if(*q>=65 && *q<=70)
a[j]= (*q-55) * ( pow(base,j) );
else if(*q>=97 && *q<=102) /*别忘了小写字母的情况*/
a[j]= (*q-87) * ( pow(base,j) );
else
{
printf("input error\n");
break;
}
}
for(i=0;i<j;i++)
sum+=a[i];
return sum;
}
void main()
{
char a[20];
int base;
long c;

printf("please input base:\n");
scanf("%d",&base);
printf("please input number\n");
scanf("%s",a);
c=fh(a,base);
printf("%d---%s====>%ld\n",base,a,c);
getch();
}



另外由于个人原因:以后不回答女人的问题,抱歉
搜索更多相关主题的帖子: 进制 STRONG 变量 char include 
2006-03-27 14:03
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
得分:0 
以下是引用success在2006-3-27 14:32:00的发言:

写的什么啊,有那么麻烦吗?
#include<stdio.h>
#include<math.h>
#include<string.h>

int getnum(char e);

//将任意进制转换成10进制程序,此题输入16进制输出10进制
int main(void)
{
char radix[20];
int i,len,decimal=0;

printf("Please input number:");
scanf("%s",radix);
len=strlen(radix);
len--;
for(i=0;radix[i]!=NULL;i++)
{
decimal+=((getnum(radix[i])) * (int)pow(16,len)); //可以修改16
len--;
}
printf("dicimal=%d\n",decimal);

return 0;
}

int getnum(char e)
{
char string[17]="0123456789abcdef";
int i;

for(i=0;i<=15;i++)
if(string[i]==e)
break;

return i;
}

好好看看


这程序漏洞更多,还在这。。。。我也不想说了 随便


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-03-27 15:04
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
得分:0 
世界上还有这种人

叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-03-27 15:24



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-53128-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.877358 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved