首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

菜鸟问用for循环与while循环解决进制转换有关问题

2013-03-22 
初学者问用for循环与while循环解决进制转换问题。目前用的书还是谭浩强的书,这是书上的习题。:写一个函数,输

初学者问用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);
 }

热点排行