字符串str由数字字符‘0’和‘1’组成(长度不超过8个字符),可看作二进制数,请补充函数fun(),该函数的功能是:把str字符串转换成十进制数,结果由函数返回。例如,输入“1001”,结果输出:9。 注意:部分源程序给出如下。 请勿改动主函

admin2010-05-05  31

问题 字符串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;
           【  】;
      p++;
      while (*p)
      {
          n=【  】;
          p++;
      }
      return【  】;
   }
   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++)
          if(str<’0’||str>’1’)
          {
              printf("Error:%c not is ’0’and
              ’1’ digital character !\n\n",
              str);
              exit(0);
          }
     printf("The original string:");
     puts(str);
     n=fun(str);
     printf("\n%s is convered to decimal
     number:%d\n\n",str,n);
   }

选项

答案n=*p-’0’ n*2+*p’0’ n

解析 第一空:’0’和’1’是字符串中的数字字符,为了进行数字运算,必须要将数字字符转换为数字,用数字字符减去字符’0’的ASCII码,就得到对应的数字。第二空:将二进制数转换为十进制数的算法是:以1001为例,对应的十进制数为1*23+0*22+0*2+1=2*(2*(2*1+0)+0)+1=9。明白了这一算法,此空就非常容易了。第三空:最后计算的结果存放在变量n中,所以函数的返回值为n。
转载请注明原文地址:https://kaotiyun.com/show/XXID777K
0

相关试题推荐
最新回复(0)