试题一
阅读以下程序说明和C程序,将应填入__(n)__ 处的字句,写在答卷的对应栏内。
[程序说明]
本程序中的函数factor(m,fac,cp)用来计算正整m(m>2)的除自身以外的所有不同因子的和。该函数返回因子和,并把各因子从小到大依次存放在数组fac中,其因子个数存入在cp所指的变量中。
例如 m=16,求得的因子为
(1,2,4,8)
因子和为15,因子 个数为4。
程序假定正整数m的不同因子个数不会超过100个。
[程序]
# include <stdio.h>
# define N 100
long factor(int m,int fac[],int * cp)
{
int c1, c2 , i, k;
long s;
fac[0]=1;
for(c1=s=1,c2=N-1,____(1)____;;)
{
k=m/i;
if(____(2)____)
if(____(3)____
{ fac[c1++]=i
fac[c2--]=k;
s +=i;
}
i++
if(i>k)brdak;
}
for9c2++;c2<=N-1;c2++)
____(4)____;
*cp=c1;
return____(5)____;
}
试题二
阅读以下程序说明和FORTRAN程序,将应填入__(n)__处的字句,写在答卷的对应栏内。
[程序说明]
函数FACTOR(M,FAC,L)用来计算正整数M(M>2)的除自身以外的所有不同因子之各,该函数值返回因子和,并把M的各因子从小到大依次存放在数组FAC中,其因子个数存放在L中。
例如:M=16 ,其因子之和为15(1+2+4+8),因子个数为4。本程序假定正整数M的因子个数不会超过100个。
[程序]
FUNCTION FACTOR(M,FAC,L)
INTEGER FAC(100),FACTOR,S,R
FAC(1)=1
L=1
R=100
S=1
____(1)____
K=M/I
IF(____(2)____)THEN
IF(____(3)____)THEN
L=L+1
FAC(L)=I
FAC(R)=K
R=R-1
S=S+1
FAC(L)=I
ENDIF
ENDIF
I=I+1
IF(I.LT.K)GOTO 10
DO 20 I=R+1,100
____(4)____
L=L+100-R
____(5)____
END
试题三
阅读以下程序说明和C程序,将应填入 __(n)__处的字句,写在答卷的对应栏内。
[程序说明]
本程序列举从整数0至n-1中任取r个整数的所有组合。设求得组合中的各数分别存储于数据组C的C0,C1……Cr-1中,并假定C0<C1<…<Cr-1,则Ci有性质Ci<n-r+i(o<i<r)。
如设n=5,r=3,则i<2+i(0<i<3)。由初始组合0,1,2开始,可心依次产生以下组合序列:
012,013,014,023,024,034,123,124,134,234
产生组合的方法是:
对上一组合C0,C1,…Cr-1,自右端开始递增的Ci&n