老牛来学习 发表于 2020-4-7 21:16:56

C语言


题目:以下程序的功能是将无符号八进制数字构成的字符串转换为十进制整数。例如输入的字符串为556,则输出十进制整数366。


#include<stdio.h>

int main()
{
    char *p,s;
    int n;
    p=s;gets(p);
    n = *p-'0';
    while(*++p!='\0')
         n = n * 8 + *p-'0';                //想问一下这段代码是什么原理啊?感谢!
    printf("%d",n);
}

BngThea 发表于 2020-4-7 21:25:36

*p-'0'是将字符p转换为数字
n*8相当于进位(八进制进位操作)

所以放在一起就是将前面的数据左移一位,并将最后的p放到最后一位
页: [1]
查看完整版本: C语言