填空题
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、sum*x+*p-'0'
sum%y
sum=sum/y
【答案解析】 要完成程序所要求的功能,首先,要将字符串转换为int型的数据,因此,第一空处填“sum*x+*p-'0'”;然后,再将变量sum转换为所需要的类型,因此,第二空处填“sum%y”,第三空处填“sum=sum/y”。