字符串str由数字字符‘0’和‘1’组成(长度不超过8个字符),可看作二进制数,请补充函数fun(),该函数的功能是:把str字符串转换成十进制数,结果由函数返回。例如,输入“1001”,结果输出:9。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
试题程序:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int fun(char *str)
int n;
char *p=str;
【1】 ;
p++;
while (*p)
n= 【2】 ;
p++;
return 【3】 ;
main()
char str[9];
int i;
int n;
printf ("Enter a string made up of ’0’ and
’1’ digital character:");
gets (str);
if (strlen(str)>8)
printf ("Error:string too longer!
please input again !\n\n");
exit(0);
for(i=0;str[i];i++)
if(str[i]<’0’||str[i]>’1’)
printf("Error:%c not is ’0’and
’1’ digital character !\n\n",
str[i]);
exit(0);
printf("The original string:");
puts(str);
n=fun(str);
printf("\n%s is convered to decimal
number:%d\n\n",str,n);
参考答案:[1] n=*p-’0’ [2] n*2+*p’0’ [3] n
解析: 填空1:’0’和’1’是字符串中的数字字符,为了进行数字运算,必须要将数字字符转换为数字,用数字字符减去字符’0’的ASCII码,就得到对应的数字。填空2:将二进制数转换为十进制数的算法是:以1001为例,对应的十进制数为1*23+0*22+0*2+1=2*(2*(2*1+0)+0)+1=9。明白了这一算法,此空就非常容易了。填空3:最后计算的结果存放在变量n中,所以函数的返回值为n。