阅读以下说明和C代码,将应填入(n)处的字句写在对应栏内。[说明]函数combine(a,b,c)是计算两个整数的组合数。由于计算结果可能超出10ng整型的可表示范围,故采用数组方式存储,例如:k位长整数m用数组c[]存储结构如下:m=c[k]×10k-1+c[k-1]×10k-2+…+c[2]×10+c[1],利用c[0]存储长整数m的位数,即c[0]=k。数组的每个元素只存储长整数m的一位数字,长整数运算时,产生的中间结果的某位数字可能会大于9,这是就应该调用format将其归整,使数组中的每个元素始终只存储长整数的一位数字。整数a和b(a>b)的组合数为:,其中u1=a,u2]=a-1,…,ub=a-b+1,d1=1,d2=2,…,db=b。为了计算上述分式,先从u1,u2,…,ub中去掉d1×d2×…×db的因子,得到新的u1,u2,…,ub,然后再将它们相乘。[函数]define NAXN 100int gcd(int a,int b)//求两个整数a和b的最大公因子{if(a<b){intC=a;a=b;b=c;}for(inti=b;i>=2;i--){if( (1) )return i;}return 1;void format(int *a)//将长整数数组归整{int i;for(i=1;i<a[0]||a[i]>=10;i++){if(i>=a[0]) (2);a[i+1]+=a[i]/10;a[i]=a[i]%10;}if(i>a[0]) (3);}void combine(int a,int b,int *C){int i,J,k,x;int d[MAXN],u[MAXN];k=0;for(i=a;i>=a-b+1;i--)u[++k]=i;u[0]=b;for(i=1;i<=b;i++)d[i]=i;for(i=1;i<=u[0];i++){//从u中各元素去掉d中整数的因子for(j=1;j<=b;j++){x=gcd(u[i],d[j]);//计算最大公约数u[i]/=X;d[j]/=x;}(4);C[1]=1;//长整数c初始化for(i=1;i<=u[0];i++)(//将u中各整数相乘,存于长整数c中if(u[i]!=1){for(j=1;j<=c[0];j++){C[j]=(5);}format(C);//将长整数c归整}}}(1)

阅读以下说明和C代码,将应填入(n)处的字句写在对应栏内。

[说明]

函数combine(a,b,c)是计算两个整数的组合数。由于计算结果可能超出10ng整型的可表示范围,故采用数组方式存储,例如:k位长整数m用数组c[]存储结构如下:m=c[k]×10k-1+c[k-1]×10k-2+…+c[2]×10+c[1],利用c[0]存储长整数m的位数,即c[0]=k。数组的每个元素只存储长整数m的一位数字,长整数运算时,产生的中间结果的某位数字可能会大于9,这是就应该调用format将其归整,使数组中的每个元素始终只存储长整数的一位数字。

整数a和b(a>b)的组合数为:,其中u1=a,u2]=a-1,…,ub=a-b+1,d1=1,d2=2,…,db=b。为了计算上述分式,先从u1,u2,…,ub中去掉d1×d2×…×db的因子,得到新的u1,u2,…,ub,然后再将它们相乘。

[函数]

define NAXN 100

int gcd(int a,int b)//求两个整数a和b的最大公因子

{

if(a<b){

intC=a;a=b;b=c;

}

for(inti=b;i>=2;i--){

if( (1) )return i;

}

return 1;

void format(int *a)//将长整数数组归整

{

int i;

for(i=1;i<a[0]||a[i]>=10;i++){

if(i>=a[0]) (2);

a[i+1]+=a[i]/10;

a[i]=a[i]%10;

}

if(i>a[0]) (3);

}

void combine(int a,int b,int *C)

{

int i,J,k,x;

int d[MAXN],u[MAXN];

k=0;

for(i=a;i>=a-b+1;i--)u[++k]=i;

u[0]=b;

for(i=1;i<=b;i++)d[i]=i;

for(i=1;i<=u[0];i++){//从u中各元素去掉d中整数的因子

for(j=1;j<=b;j++){

x=gcd(u[i],d[j]);//计算最大公约数

u[i]/=X;

d[j]/=x;

}

(4);C[1]=1;//长整数c初始化

for(i=1;i<=u[0];i++)(//将u中各整数相乘,存于长整数c中

if(u[i]!=1){

for(j=1;j<=c[0];j++){

C[j]=(5);

}

format(C);//将长整数c归整

}

}

}

(1)


相关考题:

●试题一阅读下列函数说明和C代码,把应填入其中n处的字句写在答卷的对应栏内。【函数1.1说明】函数strcpy(char*to,char*from)将字符串from复制到字符串to。【函数1.1】void strcpy(char*to,char*from){while( ( 1 ) );}【函数1.2说明】函数merge(int a[ ],int n,int b[ ],int m,int *c)是将两个从小到大有序数组a和b复制合并出一个有序整数序列c,其中形参n和m分别是数组a和b的元素个数。【函数1.2】void merge(int a[ ],int n,int b[ ],int m,int *c){ int i,j;for(i=j=0;i<n j<m;)*c++=a[i]<b[j]? a[i++]:b[j++];while( (2) )*c++=a[i++];while( (3) )*c++=b[j++];}【函数1.3说明】递归函数sum(int a[ ],int n)的返回值是数组a[ ]的前n个元素之和。【函数1.3】int sum(int a[ ],int n){ if(n>0)return (4) ;else (5) ;}

阅读下列说明和流程图,将应填入(n)处的语句写在对应栏内。【说明】下列流程图用于从数组K中找出一切满足:K(I)+K(J)=M的元素对(K(I),K(J))(1≤I≤J≤N)。假定数组K中的N个不同的整数已按从小到大的顺序排列,M是给定的常数。【流程图】此流程图1中,比较“K(I)+K(J):M”最少执行次数约为(5)。

阅读以下说明和c函数,将应填入 (n) 处的字句写在答题纸的对应栏内。【说明】c语言常用整型(int)或长整型(1ong)来说明需要处理的整数,在一般情况下可以满足表示及运算要求,而在某些情况下,需要表示及运算的整数比较大,即使采用更长的整型(例如,long long类型,某些c系统会提供)也无法正确表示,此时可用一维数组来表示一个整数。假设下面要处理的大整数均为正数,将其从低位到高位每4位一组进行分组(最后一组可能不足4位),每组作为1个整数存人数组。例如,大整数2543698845679015847在数组A中的表示如下(特别引入-1表示分组结束):在上述表示机制下,函数add_large_number(A,B,c)将保存在一维整型数组A和B中的两个大整数进行相加,结果(和数)保存在一维整型数组c中。【c函数】Void add_large_number(int A[], int B[], int c[]){int i,cf; /*cf存放进位*/int t,*p; /*t为临时变量,p为临时指针*/cf= ( 1) ;for(i=0 ; A[i]-l&&B[i]-1;i++){/*将数组A、B对应分组中的两个整数进行相加*/t=(2) ;C[i]=t%i0000;cf= (3) ;}if( (4))P=B;else P=A;for(;P[i]-1;i++){/*将分组多的其余各组整数带进位复制入数组C*/C[i]=(p[i]+cf)%i0000; cf=(p[i]+cf)/10000;}if(cf0) C[i++]=cf;(5)=-1; /*标志”和数”的分组结束*/

阅读下列函数说明和C代码,将应填入 处的字句写在答题纸的对应栏内。[函数1.1说明]函数int factors(int n)的功能是判断整数n(n=2)是否为完全数。如果n是完全数,则函数返回0,否则返回-1。所谓“完全数”是指整数n的所有因子(不包括n)之和等于n自身。例如28的因子为1、2、4、7、14,而28=1+2+4+7+14,因此28是“完全数”。[函数1.1]int factors(int n){int i,s;for(i=1,s=0;i=n/2;i++)if(n%i==0) (1) ;if( (2) )return 0;return -1;}[函数1.2说明]函数int maxint(int a[], int k)的功能是用递归方法求指定数组中前k个元素的最大值,并作为函数值返回。[函数1.2]int maxint(int a[],int k){int t;if( (3) ) return (4) ;t=maxint(a+1, (5) );return (a[0]t)?a[0]:t;

阅读以下函数说明和C语言函数,将应填入(n)处的字句写在答题纸的对应栏内。【函数2.1说明】递归函数sum(int a[], int n)的返回值是数组a[]的前n个元素之和。【函数2.1】int sum (int a[],int n){if(n>0) return (1);else (2);}【函数2.2说明】有3个整数,设计函数compare(int a,int b,int c)求其中最大的数。【函数2.2】int compare (int a, int b, int c ){ int temp, max;(3) a:b;(4) temp:c;}【函数2.3说明】递归函数dec(int a[],int n)判断数组a[]的前n个元素是否是不递增的。不递增返回 1,否则返回0。【函数2.3】int dec( int a[], int n ){if(n<=1) return 1;if(a[0]<a[1]) return 0;return (5);}

阅读以下说明和C函数将应填入(n)处的字句写在答题纸的对应栏内【说明1】函数Counter(intn,intw[])的功能是计算整数n的二进制表示形式中的1个数同时用数组w记录该二进制数中1所在位置的权。例如十进制数22的二进制表示为10110.对于该二进制数,1的个数为3,在w[0]中存入2(即21)、w[1]中存入4(即22)w[2]存入16(即24)【C函数1】

●试题一阅读下列说明和流程图,将应填入(n)处的语句写在答题纸的对应栏内。【说明】下列流程图用于从数组K中找出一切满足:K(I)+K(J)=M的元素对(K(I),K(J))(1≤I≤J≤N)。假定数组K中的N个不同的整数已按从小到大的顺序排列,M是给定的常数。【流程图】此流程图1中,比较"K(I)+K(J)∶M"最少执行次数约为 (5) 。图1

试题三(共 15 分)阅读以下说明和 C 程序,将应填入 (n) 处的字句写在答题纸的对应栏内。

阅读下列说明和?C++代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】阅读下列说明和?Java代码,将应填入?(n)?处的字句写在答题纸的对应栏内。【说明】某快餐厅主要制作并出售儿童套餐,一般包括主餐(各类比萨)、饮料和玩具,其餐品种类可能不同,但其制作过程相同。前台服务员?(Waiter)?调度厨师制作套餐。现采用生成器?(Builder)?模式实现制作过程,得到如图?6-1?所示的类图。