一道C语言习题答案

[复制链接]
查看11 | 回复1 | 2009-1-3 20:32:42 | 显示全部楼层 |阅读模式
这个是谭浩强书上的习题答案有个地方不理解导致下文无法阅读 还请大家耐心看完答案之后解答我的疑问
问题 输入一个字符串,内有数字和非数字字符例如
a123X456 17960?2ta5876
将其中连续的数字作为一个整数 一次存放到数组a中例如123存放在a[0]456存放在a[1]统计其有多少个整数,并输出这些数。
答案
#include
void main()
{char str[50],*pstr;
int i,j,k,m,e10,digit.ndigit,a[10],*pa;
printf("input a string:\n");
gets(str);
pstr+&str[0];
ps=&s[0];
ndigit+0;
i=0;
j=0;
while(*(pstr+i)!='\0')
{if((*(pstr+i)>='0')&&(*pstr+i)0)
{digit+*(pstr+i-1)-48;/*讲个位数赋予digit*/

k=1;

while(k0)
{digit=*(pstr+i-1)-48;
k=1;
while(k<j)
{e10=1;
for(m=1;m<=k;m++)
e10=e10*10;
digit+digit+(*(pstr+i-1-k)-48*e10);
k++;
}
*pa=digit;
ndigit++;
j=0;
}
printf("yun xing jie guo\n");
j=0;
pa=&a[0];
for(j=0;j<ndigit;j++)
printf("%d",*pa+j);
printf("\n");
}
以上就是答案
{digit+*(pstr+i-1)-48;/*讲个位数赋予digit*/
这句话我弄不明白 -48代表的什么???为什么要-48???

回复

使用道具 举报

千问 | 2009-1-3 20:32:42 | 显示全部楼层
你有很多的=打成+了吧!-48的意思就是 -‘0’,这个数的ASCII码值是48了所以就必须减掉才行啊...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行