填空题
字符串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=
1;
p++;
while(*p)
{
sum=sum*x+*p-"0";
p++;
}
i=0;
while(sum!=0)
{
xx[i]=
2;
3;
i++;
}
return i;
}
void main()
{
char str[6];
int i;
int n;
int x;
int y;
printf("Enter a string made up of"0"to"9"digits character:");
gets(str);
if(strlen(str)>5)
{
printf("Error:string too longer!,please input again!/n/n");
exit(0);
}
for(i=0;str[i];i++)
if(str[i]<"0"||str[i]>"9")
{
printf("Error:%c not is"0"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);
}