香港红心辣椒点数:帮我看下C语言的题main()

来源:百度文库 编辑:高考问答 时间:2024/05/05 06:25:45
以下程序是功能是将无符号八进制整数构成的字符串转换为十进制整数。例如,输入的字符串为556,输出的十进整数为366
#include<stdio.h>
main()
{char *p,s[6];
int n;
p=s;
gets(p);
n=*p-'0';
while(_______!='\0')n=n*8+*p-'0';
printf("%d\n",n);}我在这里填的是*P++为什么错了,应该填什么
此题中n=*p-'0';是什么意思?
:#include<stdio.h>
main()
{char *p,s[6];
int n;
p=s;
gets(p);
n=*p-'0';
while(_______!='\0')n=n*8+*p-'0'; 在gets(P);下面这句n=*p-'0'是什么意思?如果输入字符串556,经过n=*p-'0';这句
后结果是怎样的?在这里*(++P)是什么意思,我不懂。我做成了*P++
在最后的while(_______!='\0')n=n*8+*p-'0'这句中n=n*8+*P-'0'是什么意思?
*(++P)去掉()可以吗?

应该填*(++p),n=*p-'0';意思就是求*p和0的asc值之差,其实就是把字符转成数字

因为你输入的是字符0~9,而字符在电脑中是以ASCII码编码的,*p-'0'就是字符p换成数字。看看ASCII编码表就会理解了。因为0~9是按顺序编码的,*p-'0'就是相对大小了。

vgrh5654hgtrgrt