概述
满意答案
cumkz
2017.07.27
采纳率:52% 等级:9
已帮助:464人
#include
#include
#include
/* 任意进制数转十进制数 */
/* char *value : 其他进制数,以字符串形式存储 */
/* int *result : 转换后的十进制数 */
/* int radix : 待转换的进制 */
/* R进制数共n位,第n位表示为Xn。转换后的10进制数表示为Y */
/* Y = Xn*R^0 + Xn-1*R^1 + Xn-2*R^2 + …… + X1*R^n-1 */
void others2Decimal (char *value, int *result, int radix) {
int digit,i,j;
*result = 0;
for (i=strlen(value)-1,j=0; i>=0; i--,j++) {
if (value[i]>='0' && value[i]<='9')
digit = value[i]-'0';
if (value[i]>='a' && value[i]<='z') /* 十以上进制处理,小写字母 */
digit = value[i]-'a'+10;
if (value[i]>='A' && value[i]<='Z') /* 十以上进制处理,大写字母 */
digit = value[i]-'A'+10;
*result += digit*pow(radix,j);
}
}
/* 校验输入的某进制数是否合法 */
/* 合法:返回1;不合法:返回0 */
int check (char *value, int radix) {
int i;
for (i=0; i
if (radix<=10 && value[i]>='0' && value[i]<='9' && value[i]>=radix+'0')
return 0;
if (radix>10 && value[i]>='a' && value[i]<='z' && value[i]>=radix-10+'a')
return 0;
if (radix>10 && value[i]>='A' && value[i]<='Z' && value[i]>=radix-10+'A')
return 0;
}
return 1;
}
int main (void) {
char *value;
int radix=2,result;
printf ("请输入%d进制数:",radix);
fflush(stdin); /*清除缓冲区*/
gets (value);
if (check (value,radix)!=1) {
putchar ('n');
printf ("输入的%d进制数有误!n",radix);
putchar ('n');
return 0;
}
putchar ('n');
puts ("================================================================n");
printf ("10进制转换结果:");
others2Decimal (value,&result,radix);
printf ("%dn",result);
putchar ('n');
getch (); /*屏幕暂留*/
return 0;
}
运行结果
00分享举报
最后
以上就是精明帆布鞋为你收集整理的二进制数字转换为十进制c语言程序,如何使用C语言编写二进制转换为十进制的程序...的全部内容,希望文章能够帮你解决二进制数字转换为十进制c语言程序,如何使用C语言编写二进制转换为十进制的程序...所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复