C二级上机的一道填空题

来源:百度知道 编辑:UC知道 时间:2024/05/14 19:44:54
10、给定程序中,函数fun的功能是:将形参s所指字符串中的数字字符转换成对应的数值,计算出这些数值的累加和作为函数值返回。例如,形参s所指的字符串为:abs5def126jkm8,程序执行后的输出结果为:22。
请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int fun(char *s)
{ int sum=0;
while(*s) {
/**********found**********/
if( isdigit(*s) ) sum+= *s- __1__ ;
/**********found**********/
__2__;
}
/**********found**********/
return __3__ ;
}
main()
{ char s[81]; int n;
printf("\nEnter a string:\n\n"); gets(s);
n=fun(s);
printf("\nThe result is: %d\n\n",n);
}

。。。。。我的问题:第一个空为什么答案是48 请帮忙讲下,谢谢!!

因为在*s里0是作为字符识别的,而字符0的ANCII码是48,如果直接

sum += *s

的话就加了48了,而我们的本意是加0,所以减48的意思就是把数字由字符形式转成数字形式。