读书人

菜鸟问用for循环与while循环解决进制转

发布时间: 2013-03-22 09:49:50 作者: rapoo

初学者问用for循环与while循环解决进制转换问题。
目前用的书还是谭浩强的书,这是书上的习题。:写一个函数,输入一个十六进制的数,输出十进制数。目前还不会用匈牙利命名法,所以请讲究看那些变量的名称。
#include <stdio.h>
void jinzhi (int number)
{
int sum,n,weiquan,yushu; //weiquan表示位权,sum各位加起来的和,yushu表示余数,number是该数字,n用来计数循环次数。
sum = 0,n = 1;
weiquan = 1;
//for (weiquan=1;number==0;++n)
while (number!=0)
{
if (n==1)
{
yushu = number%10;
number = number/10;
sum =yushu;
}
else
{

weiquan = 16*weiquan;
yushu = number%10;
number = number/10;
sum = sum + yushu*weiquan;


}
//if (number==0)
//break;
++n;
}
printf("转换后的进制数等于%d\n",sum);
}
main()
{
int number;
scanf("%d",&number);
jinzhi (number);
}
被注释掉的代码是因为用for循环时候,输入任何数,得到的结果都是零。 for循环?while循环
[解决办法]

  #include <stdio.h>
void jinzhi (int number)
{
int sum,n,weiquan,yushu; //weiquan表示位权,sum各位加起来的和,yushu表示余数,number是该数字,n用来计数循环次数。
sum = 0,n = 1;
weiquan = 1;
for (weiquan=1;number!=0;++n)// 判断条件出错,应该是number!=0
//while (number!=0)
{
if (n==1)
{
yushu = number%10;
number = number/10;
sum =yushu;
}
else
{

weiquan = 16*weiquan;
yushu = number%10;
number = number/10;
sum = sum + yushu*weiquan;


}
//if (number==0)
//break;
++n;
}
printf("转换后的进制数等于%d\n",sum);
}
main()
{
int number;
scanf("%d",&number);
jinzhi (number);
}

读书人网 >C语言

热点推荐