请补充函数fun() 该函数的功能是:把从主函数中输入的由数字字符组成的字符串转换成—个无符
问题详情
请补充函数fun(),该函数的功能是:把从主函数中输入的由数字字符组成的字符串转换成—个无符号长整数,并且逆序输出。结果由函数返回。
例如,输入: 1 2 3 4 5 6,结果输出:6 5 4 3 2 1。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
试题程序:
include<conio.h>
include<stdio.h>
include<string.h>
unsigned long fun(char *S)
{
unsigned long t=0;
int k;
int i=0;
i=strlen(S);
for(【 】;i>=0;i--)
{
k=【 】;
t=【 】;
}
return t;
}
main()
{
char str[8];
clrscr();
printf("Enter a string made up of"0"to
"9"digital character:n");
gets(str);
printf("The string iS:%Sn",str);
if(strlen(str)>8)
printf("The string is too long!");
else
printf("The result:%lun",
fun(str));
}请帮忙给出正确答案和分析,谢谢!
参考答案
正确答案:--Is[i]-'0't*10+k
--Is[i]-'0't*10+k 解析:第一空:程序中将字符串s的长度赋给了变量i,为了将数字字符转换为无符号长整数,并倒序输出,应该从字符串的最后—个字符开始处理,而最后一个字符的下标等于字符串长度减l。第二空:将数字字符转换为数字的方法是,将该数字字符的ASCII码减去字符'0'的ASCII码,即得到相应的数字。第三空:由各位上的数字得到整数的方法是,以1234为例,1234=1*1000+2*100+3*10+4=10*(10*(10*1+2)+3)+4。