请补充函数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( 【1】 ;i>=0;i--) {k= 【2】 ;t= 【3】 ; } 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:%S\n",str); if(strlen(str)>8)printf("The string is too long!"); elseprintf("The result:%lu\n",fun(str)); }
参考答案:[1] --I [2] s[i]-’0’ [3] t*10+k
解析: 填空1:程序中将字符串s的长度赋给了变量i,为了将数字字符转换为无符号长整数,并倒序输出,应该从字符串的最后—个字符开始处理,而最后一个字符的下标等于字符串长度减l。填空2:将数字字符转换为数字的方法是,将该数字字符的ASCII码减去字符’0’的ASCII码,即得到相应的数字。填空3:由各位上的数字得到整数的方法是,以1234为例,1234=1*1000+2*100+3*10+4=10*(10*(10*1+2)+3)+4。