网站首页 语言 会计 电脑 医学 资格证 职场 文艺体育 范文

计算机三级网络技术上机考试题

栏目: 计算机三级 / 发布于: / 人气:1.87W

离2016年第一次计算机考试只有一个月了,同学们的网络技术复习得怎么样了呢?下面本站小编为大家准备了最新的网络技术上机考试题,希望能帮助到大家!

计算机三级网络技术上机考试题

  第一题

下列程序的功能是:将大于整数m且紧靠m的k个素数存入数组xx。请编写函数num(int m,int k,int xx[ ])实现程序的要求,最后调用函数readwriteDAT( )把结果输出到文件中。

例如,若输入17,5,则应输出19,23,29,31,37。

注意:部分源程序已给出。

请勿改动主函数main()和输入输出函数readwriteDAT()的内容。

试题程序:

#include

#include

void readwriteDAT();

void num(int m,int k,int xx[])

{

}

void main()

{

int m,n,xx[1000];

system("CLS");

printf("nPlease enter two integers:");

scanf("%d,%d",&m,&n);

num(m, n, xx);

for(m=0;m  printf("%d ",xx[m]);

printf("n");

readwriteDAT();

}

void readwriteDAT()

{

int m, n, xx[1000],i;

FILE *rf,*wf;

rf=fopen("","r");

wf=fopen("","w");

for(i=0;i<10;i++)

{

fscanf(rf,"%d %d",&m,&n);

num(m,n,xx);

for(m=0;m  fprintf(wf,"%d ",xx[m]);

fprintf(wf,"n");

}

fclose(rf);

fclose(wf);

}

【参考答案】

void num(int m,int k,int xx[])

{

int i,half,cnt=0; /*定义变量cnt来统计已经取得的素数个数*/

int data=m+1; /*从大于整数m的'数开始找*/

while(1) /*循环条件始终为真,所以是无条件循环*/

{

half=data/2; /*求出当前数的一半,判断素数*/

for(i=2;i<=half;i++)

/*如果该数依次除以从2到其一半的整数,余数都不是0,则该数是素数*/

if(data%i==0) /*如果余数为0*/

break; /*则退出循环,取下一个数判断*/

if(i>half)

{

xx[cnt]=data; cnt++; /*确定该数为素数后,将该数存入数组xx中,并累计素数的个数*/

}

if(cnt>=k) break; /*如果累计素数的个数超过了要求的个数,则退出循环*/

data++; /*如果累计素数的个数小于要求的个数,则继续取下一个数*/

}

}

【解析】在本题中,首先要结合相关数学知识找出判定一个数是否为素数的方法,从而对数据进行筛选。如果数a依次除以从2到a/2的整数,余数都不是0,则该数是素数。将符合条件的数存入数组xx中,使用计数器变量cnt来统计已经取得的数的个数。当cnt的值小于等于k时,即表示所获得素数的个数已经达到了要求,循环停止。

  第二题

下列程序的功能是:在三位整数(100至999)中寻找符合条件的整数并依次从小到大存入数组中;它既是完全平方数,又是两位数字相同,例如144、676等。请编制函数实现此功能,满足该条件的整数的个数通过所编制的函数返回。最后调用函数writeDat()把结果输出到文件中。请勿改动主函数main()和写函数writeDat()的内容。

#include

int jsvalue(int bb[])

{

}

main

{

int b[20],num;

num=jsvalue(b);

writeDat(num,b);

}

writeDat(int num,int b[])

{

FILE *out;

int i;

out=fopen("","w");

fprintf(out,"%dn",num);

for(i=0;i

fclose(out);

}

-------------------------------------

注:注意在i==(int)sqrt(i)*(int)sqrt(i)中只有当i是完全平方数时开平方后再取整才不会丢失任何数据。

int jsvalue(int bb[])

{

int i,j,k=0,g,s,b;

for(i=100;i<=999;i++)

{

g=i;

s=i/10;

b=i/100;

if((i==(int)sqrt(i)*(int)sqrt(i))&&(g==s//s==b//b==g))

bb[k++]=i;

}

return k;

}

int jsvalue(int bb[])

{

int i,k=0;

for(i=100;i<=999;i++)

if((int)sqrt(i)*(int)sqrt(i)==i && (i/100==i || i/100==i/10 || i/10==i))

bb[k++]=i;

return k;

}