C语言程序 8转10 我看不懂,帮忙解释下谢谢

来源:百度知道 编辑:UC知道 时间:2024/05/20 13:15:42
main()
{ char *p,s[6];
int n;
p=s;
gets(p);
n=0;
printf("%c",(*p-'0'));
getch();
while(*p!='\0')
{ n=n*8+*p-'0';
p++;
}
printf("%d",n);
}
第7行和8行是我自己加的(printf("%c",(*p-'0')和getch() ),我就是看不懂第十行的*p-'0'

main()
{ char *p,s[6]; //s[6]保存输入的字符串(数字)
int n;
p=s; //指针p指向s,以便进行指针操作
gets(p); //获得输入
n=0;
printf("%c",(*p-'0')); //输出得到的输入,以便比较。不过已经作了转换,即字符型装换成数字型 *p-'0'
getch(); //等待任意键输入,继续下面操作
while(*p!='\0') //如果没有结束--字符串以 '\0'结尾
{ n=n*8+*p-'0'; //进行进制转换,看不看得懂就看你的数学功底了
p++;
}
printf("%d",n);
}

晕,楼下这位不知运行过没有就说有错

这个程序是不是有错误啊。。
main()
{ char *p,s[6];
int n;
p=s;
gets(p); //应该这样:p=gets();
n=0;
printf("%c",(*p-'0')); //字符串不可以计算,这能用函数处理
getch(); //getchar();
while(*p!='\0') //字符串比较用函数
{ n=n*8+*p-'0'; //同上
p++;
}
printf("%d",n);
}
不知道算法对错,但是程序一定些错了

你再看看程序啊有问题啊

同意楼上