某论坛朋友发的程序我看了,问题较多,而且变量设置过多,有些东西处理烦琐,我稍微简化了点
而且改过这程序之后还有个问题,就是例如基数是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();
}
另外由于个人原因:以后不回答女人的问题,抱歉