下列给定程序中函数fun的功能是:将一个由八进制数字字符组成的字符串转换成与其面值相等的十进制整数。规定输入的字符串最多只能包含5位八进制数字字符。 例如,若输入77777,则输出32767。 请改正程序中的错误,使它能得出正确的结果。 注意:

admin2015-11-24  64

问题 下列给定程序中函数fun的功能是:将一个由八进制数字字符组成的字符串转换成与其面值相等的十进制整数。规定输入的字符串最多只能包含5位八进制数字字符。
  例如,若输入77777,则输出32767。
  请改正程序中的错误,使它能得出正确的结果。
  注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
    试题程序:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int fun(char*p)
{
    int n;
/**********found***********/
  n=*p一‘O’;
  p++;
  while(*P!=0)
  {
/**********found***********/
    n=n*8+*p一‘0’;
    p++;
    }
    return n;
}
main()
{
  char s[6],
  int i;
  int n;
  printf(“Enter a string(octal
digits):”),
    gets(s);
    if(strlen(s)>5)
    {
    printf(“Error:string too longer!
\n\n”);
exit(0);
    }
    for(i=0;s;i++)
    if(s<‘0’|| s>‘7’)
    {
    printf(“Error:%c not is
octal digits!\n、n”,s);
    exit(0);
    }
  printf(“The originl string:”);
  puts(s);
  n=fun(s);
    prLntf(“\n%s is convered to
intege number:%d\n\n”,s,n),
}

选项

答案(1)n=*p一‘0’; (2)n=n*8+*p一‘0’;

解析 (1)“0”和“1”是字符串中的数字字符,为了进行数字运算,必须要将数字字符转换为数字,用数字字符减去字符‘0’的ASCII码,就得到对应的数字。题中给出的是‘0’,应该是‘0’。
(2)要在一个八进制数的最后加上一位,原来各个位上的数上升一位,只需将原数乘以8再加上个位数。
转载请注明原文地址:https://kaotiyun.com/show/lVID777K
0

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