我修改了一下代码,并具有下面的内容。即输出的数量是现在更现实,但它仍然是不正确的(例如,输入54个#导致36输出时,它应该拿出44)C中的八进制到十进制
#include <stdio.h>
#include <math.h>
main()
{
printf("Please enter an octal number ending with # \n");
int nextNum = getchar();
int number[100];
int numberOfSlots = 0; //Records how many digits are entered
int power = 0; //Sets power of 8 during conversion
int decimalNumber = 0;
int i=0;
while(nextNum != '#') //reads in the whole number, putting the characters together to form one Octal number.
{
if(nextNum >='0' && nextNum <='9')
nextNum = (nextNum - '0');
else{printf("Oops! That's not a valid number!");}
number['i'] = (nextNum);
//numberOfSlots++;
i++;
nextNum = getchar();
printf("%d\n", number['i']);
}
//Begin converson from Octal to Decimal
for(i; i > 0; i--)
{
decimalNumber = decimalNumber + (number['i'] * pow(8,power));
power++;
}
printf("%d", decimalNumber);
}
我曾试图解决使用char nextNum =(的getchar() - '0');但它似乎仍然是关闭的。 – CoolerScouter 2012-03-27 18:55:43
@ user1247751。不。然后你对'#'的检查进行折腾 – 2012-03-27 18:56:28
@ user1247751 - 在你解决了Pavan评论的含义后,请阅读我的答案。 – Attila 2012-03-27 18:58:29