1)设f(x)及G(x)是P[x]中m次及≤m+1次多项式。证明:对所有n≥1成立的充分必要条件是G(x+1)-G(x)=f(x)且G(0)=0;
2)证明:对P[x]中任何m次多项式f(x),必有P[x]中次数≤m+1的多项式G(x)满足对任何n≥1的整数成立;
3)求
A.p的值一般为不大于n且最接近n的质数
B.p 的值一般为大于n的任意整数
C.p 的值必须为小于n的合数
D.p 的值必须等于n
请编写函数fun(),其功能是:将所有大于1小于整数m的素数存入xx所指数组中,素数的个数通过k传回。
例如,输入25,则应输出2 3 5 7 11 13 17 19 23。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
include<conio.h>
include<stdio.h>
void fun(int m,int *k,int xx[ ])
{
}
main()
{
int m,n,zz[100];
clrscr();
printf("/nPlease enter an integer number between 10 and 100:");
scanf("%d",&n);
fun(n,&m,zz);
printf("\n\nThere are%d prime numbers
less than %d:",m,n);
for(n=0;n<m;n++)
printf("\n %4d",zz[n]);
}
阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内[说明]
本程序在3×3方格中填入1到10以内9个互不相等的整数,使所有相邻两个方格内的两个整数之和为质数。程序的输出是全部满足条件的方格。
方格的序号如下图所示。程序采用试探法,从序号为0的方格开始,依次为当前方格寻找一个合理的可填整数,并在当前位置正确填入后,为下一方格寻找可填入的合理整数;如不能为当前方格寻找一个合理的可填整数,就要后退到前一方格,调整前一方格的填入整数;当序号为8的方格也填入合理的整数后,就找到了一个解。
为检查当前方格所填整数的合理性,程序引入数组CheckMatrix,存放需要进行合理性检查的相邻方格的序号。事实上,CheckMatrix中只要求第i个方格中的数向前兼容,即填写第4个方格时,只检查在它之前、与之相邻的第1,3个方格是否满足和为素数的条件。
[程序]
include <stdio.h>
int pos,a[9],b[11]; /*用于存储方格所填入的整数*/
void write(int a[]) /*方格输出函数*/
{ ……}
int isPrime(int m) /*素数判断函数,若m为素数则返回1,否则返回0*/
{ ……}
int selectNum(int start) /*找到start到10之间尚未使用过的最小的数,若没有则返回0*/
{ int j;
for(j=start;j<=10;j++) if(b[j]) return j;
return0;
}
int check() /*检查填入pos位置的整数是否合理*/
{ int i,j
int checkMatrix[][3]={{-1},{0,-1},{1,-1},{0,-1},{1,3,-1},{2,4,-1},{3,- 1},{4,6,-1},{5,7,-1}};
for(i=0;(j=(1))>=0;i++)
if(! isPrime((2)))return 0;
return 1;
}
void extend() /*为下一方格找一个尚未使用过的整数*/
{ (3)=selectNum(1);
b[a[pos]]=0;
}
void change() /*为当前方格找下一个尚未使用过的整数,若找不到则回溯*/
{ int j;
while(pos>=0&&(j=selectNum(a[pos]+1))= =0) b[a[pos- -]]=1;
if(pos<0)return;
(4);a[pos] =j;b[j]=0; }
void find()
{ int k=1;
pos=0;a[pos]=1;b[a[pos]]=0;
do{
if(ok)
if((5) ){
write(a);change();
}
else extend();
else change();
k=check(pos);
}while(pos>=0);
}
void main()
{ int i;
for(i=1;i<=10;i++)b[i]=1;
find();
}
阅读下列函数说明和C代码,将应填入(n)处的字句写在对应栏内。
【说明】
函数diff的功能是:根据两个由整数(都大于-32768)按升序构成的单链表L1和L2(分别由A,B指向)构造一个单链表L3(由*r指向),要求13中的所有整数都是L1,并且不是 L2中的整数,还要求L3中的所有整数都两两不等。
【函数】
include < malloc. h >
typedef struct node {
int d;
struct node * next
} Node;
void diff(Node *A,Node * B,Node * * r)
{
int lastnum;
Node * p;
*r = NULL;
if(! A) return;
while((1))
if(A->d < B ->d)
{
lastnum =A -> d;
p= (Node * ) malloc(sizeof(Node) );
p->d = lastnum;
p->next= *r;(2);
do
A = A -> next;
while((3));
}
else if(A->d > B->d)
B=B- >next;
else {
(4);
lastnum=A -> d;
while (A && A->d = = lastnum) A=A-> next;
}
while(A)
{
lastnum=A->d;
p=(Node * ) malloc(sizeof(Node) );
p-> d = lastnum;
(5);
*r=p;
while (A && A->d = = lastnum) A=A->next;
}
}
●试题三
阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
函数diff的功能是:根据两个由整数(都大于-32768)按升序构成的单链表L1和L2(分别由A,B指向)构造一个单链表L3(由*r指向),要求L3中的所有整数都是L1,并且不是L2中的整数,还要求L3中的所有整数都两两不等。
【函数】
#include<mallo
C.h>
typedef struct node{
int d;
struct node *next
}Node;
void diff(Node *A,Node *B,Node **r)
{
int lastnum;
Node*p;
*r=NULL;
if(!A)return;
while((1) )
if(A->d<B->d)
{
lastnum=A->d;
p=(Node*)malloc(sizeof(Node));
p->d=lastnum;
p->next=*r; (2) ;
do
A=A->next;
while((3) );
}
else if(A->d>B->d)
B=B->next;
else{
(4) ;
lastnum=A->d;
while (A && A->d==lastnum)A=A->next;
}
while(A)
{
lastnum=A->d;
p=(Node*)malloc(sizeof(Node));
p->d=lastnum;
(5) ;
*r=p;
while (A && A->d==lastnum) A=A->next;
}
}
(1)试证明下面的算法Primality能以80%以上的正确率判定给定的整数n是否为素数.另一方面,举出整数n的一个例子,表明算法对此整数n总是给出错误的解答,进而说明该算法不是一个蒙特卡罗算法.
(2)试找出,上述算法Primality中可用于替换整数30030的另一个整数(可使用大整数),使得用此整数代替30030后,算法的正确率提高到85%以上.
以下有关网络操作系统和分布式操作系统的说法正确的是(18)。
A.网络操作系统中的资源能为所有用户共享
B.分布式操作系统中的资源只能被用户有限制地共享
C.分布式系统中若干个计算机可相互协作,共同完成一项任务
D.分布式操作系统和网络操作系统中各个计算机间都能相互通讯,并无主从关系