标题:关于八进制转化为十进制
只看楼主
gxz22
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-11-2
 问题点数:0 回复次数:4 
关于八进制转化为十进制
main()
{ char *p,s[6];int n;
p=s;
gets(p);
n=0;
while(*(p)!='\0')
{n=n*8+*p-'0';
p++;}
printf("%d",n);
}

这个程序要怎样理解?请大虾指引。。谢了。。
搜索更多相关主题的帖子: 八进制 十进制 int main 
2006-11-02 18:50
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
得分:0 
以下是引用gxz22在2006-11-2 18:50:39的发言:
main()
{ char *p,s[6];int n;
p=s; /*把数组首地址赋给p
gets(p); /*对数组操作*/
n=0;
while(*(p)!='\0') /*如果字符ASCII不等0,继续执行,否则中止*/
{n=n*8+*p-'0'; /*这里赋值,*p-'0'是字符转换数字*/
p++;} /*改变地址*/
printf("%d",n);
}

这个程序要怎样理解?请大虾指引。。谢了。。


谁有强殖装甲第二部,可以Q我460054868
2006-11-02 19:45
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
得分:0 

对于一个任意进制数都是按权展开再相加成为一个十进制数.
以八进制为例
A(n-1)A(n-2)...A2A1A0
那化成十进制
A0+8*(A1+8*(A2+8*(...+8*(A(n-2)+8*A(n-1))))
所以在程序实现的时候就是
while(*(p)!='\0')//字符串接收数据,对应的p[0]为最高位
{n=n*8+*p-'0'; //*p-'0'是将数字字符转换为数.
p++; //地址下移,处理下一位.
}


/*不过程序能转换的数比较小*/


倚天照海花无数,流水高山心自知。
2006-11-02 20:21
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
得分:0 
这个程序不算好,它只是为了入门设计程序。

谁有强殖装甲第二部,可以Q我460054868
2006-11-02 22:06
小甜甜哦
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-3-8
得分:0 
我想要一个可以连续执行的,用EOF结束,一直输入,可以吗?
2011-03-20 13:45



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-100395-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.204038 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved