|
作者: 时间:2001-9-24 14:49:16 来自: 责任编辑: 阅读次数: | |
 |
试题一
阅读以下程序说明和C程序,将应填入__(n)__ 处的字句,写在答卷的对应栏内。
[程序说明]
本程序中的函数factor(m,fac,cp)用来计算正整m(m>2)的除自身以外的所有不同因子的和。该函数返回因子和,并把各因子从小到大依次存放在数组fac中,其因子个数存入在cp所指的变量中。
例如 m=16,求得的因子为
(1,2,4,8)
因子和为15,因子 个数为4。
程序假定正整数m的不同因子个数不会超过100个。
[程序]
# include
# 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
10 ____(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<…n-r+i(obr> 如设n=5,r=3,则i<2+i(0<3)。由初始组合0,1,2开始,可心依次产生以下组合序列:
012,013,014,023,024,034,123,124,134,234
产生组合的方法是:
餷 对上一组合C0,C1,…Cr-1,自右端开始递增的Ci ;
餷 递增Ci后仍满足Ci的性质,表示可以开成下一个组合,则递增Ci,并顺序生成Ci+1至Cr-1;
餷 递增Ci后不满足Ci的性质,则回溯;
餷 直至i减至小于0为止。
[程序]
# include
#define N 100
void enumall(int n,int r)
{ int i, j, c[N];
for(j=-0;jbr> for(j=0;jbr> printf(“\n”);
i=____(1)____;
do{if(____(2)____)/*如调整c[i]是可接受的*/
{ c[i]++; /*递增c[i]*/
for(j=0;jbr> prihtf(“\n”);
____(5)____
}
else____(6)____;/*回溯*/
}while(____(7)____;
}
main()
{int,n, r;
do{printf(“Enter n, r:\n”);
scanf(%d %d,%n,%r);
} while(nbr> enumall(n,r);
}
试题四
阅读以下程序说明和FORTRAN程序,将应填入____(n)____处的字句,写在答卷的对应栏内。
[程序说明]
本程序用弦截法求方程
5x-x2-2=0
在区间[0.0,1.0]上的一个正报。弦截法求方程 (x)=0的迭代公式如下:
xi+1=xi- F(xi ) (i=1,2,3…)
迭代的初值为x0和x1,并且满足
F(x0)*F(xi)<0
然后用迭代公式,由xi-1和xi计算xi=1。若
F(xi-1)*F(xi+1)>0
则用xi+1代替xi-1;否则用xi+1代替xi。当
时,终止迭代,且此时的xi+1即为方程F(x)=0的近似解。在程序中取 为10-6,x0=0,x1=1。
[程序]
____(1)____
x0=0.0
x1=1.0
RT=____(2)____
WRITE(*,20) RT
20 FORMAT(1X,F10.6)
END
FUNCTIION ROOT(G,X,Y,EPS)
5 T=(Y-X)*G(Y)/(G(Y)-G(X))
IF(____(3)____)THEN
Z=Y-T
IF(G(X)*G(y)/(G(Y0-G(x))
____(4)____
ELSE
____(5)____
ENDIF
____(6)____
ENDIF
____(7)____
END
FUNCTION F(X)
F=5**X-X*X-2
END
试题五
阅读以下程序说明和C程序,将应填入__(n)__处的字句,写在答卷的对应栏内。
[程序说明]
某系统由n个部件组成,这些部件被物理地分成若干个分离的部件组。同一组内的两件部件i和f,它们或直接组连,或间接相连(部件i和部j间接相连是指在这两件部件之间有一个部件相连序列,其中部件i和j分别与这相连序列中的某个部件直接相连)。系统的n个部件被统一编号为0,1,…,n-1。本程序输入所有直接相连的部件号对,分别求出系统各分离部件组中的部件号并输出。
程序根据输入的直接相连的两件部件号,建立n个链表,其中第i个链表的首指针为s[i],其结点是与部件号i直接相连的所有部件号。
程序按下述方法顺序处理各链表。设处理第i个链表,将该链表移至由指针top所指的工作链表。对top链表的各结点作如下处理:从top链表上取出一个结点,根据该结点所指出的相连部件j,将第j个链表也移入top链表中,并将所取出的结点按部件号从小到大的顺序重新构造第i个链表(该链表中只保留不相同的结点),如此重复,直至top链表为空,第i个链表的重新构造也结束。所有链表处理完毕后,重新构造好的各非空链表即对应系统中的一个部件组。
[程序]
# include
# define N 100
typedef struct node {
int data;
struct node * link;
} NODE;
NODE*s[N];
int i, j, n, t;
NODE *q,*p,*x,*y,*top;
main()
{ printf(“Enter number of prarts.”);
scanf(“%d”,&n);
for(i=0;ibr> printf(“Enter pairs.\n”);
while(scanf(“%d%d”,&i,&j)= =2)
{./*输入相连部件对,生成相连部件结点结点链表*/
p=(NODE*)malloc(sizeof(NODE));
P->data=j; p->link=s[i];s[i]=p
P=(NODE*)malloc(sizeof(node));
p->data=i;p->link=s[j];s[j]=p;
}
for(i=0;ibr> for(top=s[ 一九九七年度程序员级下午试题 共有3页 第 1 2 3 页
|
|
|
|
中华网校依法保护知识产权,如果我们的文章有涉及或侵犯您的有关权益,请即时与我们
联系,
注明网址及文章,我们会即时处理或删除,感谢您的合作!中华网校email
中华网校由广州市中六电脑城智锐计算机专业培训学院及中华网校技术中心提供网络支持未经本站许可任何个人网站、书刊报社一律不得私自复制,转载本站内容! |
|
 | |