诡异的进制数
程序代码:#include<stdio.h>
#include<string.h>
main()
{
int i, t, n, lon;
long sum=0;//扩大其接受范围
char a[100];
loop: printf("please input the string\n");//输入数组
scanf("%s",a);//gets(a);
strupr(a);//大写
lon=strlen(a);//求长度
printf("please input the n(2/8/16)scale\n");//输入进制数
scanf("%d",&n);
for(i=0;i<lon;i++)
{
if(a[i]-'0' >=n && a[i]<'A' || a[i]-'A'+10 >=n)//判断数组中的元素是否合法
{
printf("date error\n");
exit(0);//关闭当前文件
}
if(a[i] >='0' && a[i] <='9')
t=a[i]-'0';
else if(n>=11 && (a[i] >='A' && a[i] <= 'A'+n-10))
t=a[i]-'A'+10;
sum=sum*n+t;
}
printf("the decimal base is %ld\n",sum);
goto loop;
}将N进制数转为十进制数 似乎结果不对 大家测试下 看哪有问题 我搞了半天也对了半天觉得没问题 就是数据错误










