填空题 1.  字符串str由数字字符组成(长度不超过5个字符),可看作任意进制的数,请补充函数proc(),该函数的功能是:把str字符串从二进制转换成十进制的数,将结果保存在数组xx中,由函数返回转换后数组xx的实际长度。其中x表示str原来的进制,y表示要转换成的进制。
    例如,输入“str="1011",x=2,y =10”,结果输出“11”。
    注意:部分源程序如下。
    请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。
    试题程序:
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #define M 8
    int xx[M];
    int proc(char *str,int x,int y)
    {
    int sum;
    int i=0;
    char *p=str;
    for(i=0;i<M;i++)
    xx[i]=0;
    sum=______;
    p++;
    while(*p)
    {
    sum=sum *x+*p-'0';
    p++;
    }
    i=0;
    while (sum!=0)
    {
    xx[i]=______;
    ______;
    i++;
    }
    return i;
    }
    void main ()
    {
    char str[6];
    int i;
    int n;
    int x;
    int y;
    printf("Enter a string made up of 'O' to '9' digits character:");
    gets (str);
    if(strlen(str)>5)
    {
    printf("Error: string too longer!, please input aexit(0);
    gain!\n\n");
    exit(0);
    }
    for(i=0;str[i];i++)
    if (str[i]<'0'||str[i]>'9')
    {
    printf("Error:% c not is 'O' to '9' digits character!\n\n",str[i]);
    exit (0);
    }
    printf("The original string:");
    puts (str);
    printf("\nINPUT x=");
    scanf("%d",&x);
    printf("\nINPUT y=");
    scanf ("%d",&y);
    n=proc(str,x,y);
    printf("\n% s is convered to",str);
    for(i=n-1;i>=0;i--)
    printf("% d\n",xx[i]/n);
  • 1、
【正确答案】 1、sum*x+*p-'0'
   sum%y
   sum=sum/y    
【答案解析】 要完成程序所要求的功能,首先,要将字符串转换为int型的数据,因此,第一空处填“sum*x+*p-'0'”;然后,再将变量sum转换为所需要的类型,因此,第二空处填“sum%y”,第三空处填“sum=sum/y”。