C小程序,看不懂,帮忙解决一下吧

C小程序,看不懂,帮忙解决一下吧
/*题目;八进制转换为十进制*/
/*问题:那个while 语句我看不懂,理解不了啊,帮帮忙,
while后面的条件,是什么意思,我该怎么理解呢,
还有那个八进制转换成十进制的公式该怎么理解呢?解释的详细点*/

#include
int main(void)
{
char *p,s[6];
int n;
n=0;
p=s;
printf("输入你要转化的八进制数:\n");
gets(p);
while (*(p)!='\0')
{
n=n*8+*p-'0';
p++;
}
printf("转化的十进制是:\n%d\n",n);
return 0;
}
先讲如何把8进制数转化成10进制数,举个例子,其实和2进制数转换成10进制一个道理
248(8)=?(10)
第0位 8*8的0次方=8
第1位 4*8的1次方=32
第2位 2*8的2次方=128
则8+32+128=168
所以248(8)=168(10)
从右向左数,就是从地位开始,这个懂吧,那上面那个程序就很简单衡粗了

#include
int main(void)
{
char *p,s[6];
int n;
n=0;
p=s;
printf("输入你要转化的八进制数:\n");
gets(p);  
/*gets()函数用来从标准输入设备(键盘)读取字符串直到换行符结束,但换行符会被丢弃,冲庆然后在末尾添加'咐判镇\0'字符*/
while (*(p)!='\0') //输入的数不为空
{
n=n*8+*p-'0'; //因为gets()读入的是字符串,就是他的ASCII码,-'0'的就是减去0的ASCII码,就把输入的字符串变程数字了

p++;
}
printf("转化的十进制是:\n%d\n",n);
return 0;
}
← 上一篇: 下一篇: →