计算机等级三级网络技术上机试题..doc
文本预览下载声明
计算机等级三级网络技术上机真题
题目1:下列程序的功能是:将大于整数m且紧靠m的k个素数存入数组xx。请编写函数num(int m,int k,int xx[])实现函数的要求 ,最后调用函数readwriteDAT()把结果输出到文件out.dat中。
例如:若输入17,5,则应输出:19,23,29,31,37。
注意:部分源程序已给出。
请勿改动主函数main()和函数readwriteDAT()的内容。
--------------
类型:素数。
void num(int m,int k,int xx[]) /*标准答案*/
{int data=m+1;
int half,n=0,I;
while(1)
{half=data/2;for(I=2;I=half;I++)
if(data%I==0)break;
if(Ihalf)
{xx[n]=data;n++;}
if(n=k)break;
data++;
} }
或者:
void num(int m,int k,int xx[])
{int i,j,s=0;
for(i=m+1;k0;i++)
{for(j=2;ji;j++)
if(i%j==0) break; /*注:素数为只能被自己和1整除的数.如果i%j等于0,说明i不是素数,跳出本层循环*/
if(i==j)
{xx[s++]=i;k--;}
} }
void num(int m, int k, int xx[])
{ int i=0;
for(m=m+1;k0;m++)
if(isP(m))
{ xx[i++]=m;
k--; } }
#include conio.h
#include stdio.h
void readwriteDAT() ;
int isP(int m)
{ int i ;
for(i = 2 ; i m ; i++)
if(m % i == 0) return 0 ;
return 1 ;
}
void num(int m,int k,int xx[])
{
}
main()
{ int m, n, xx[1000] ;
clrscr() ;
printf(\nPlease enter two integers:) ;
scanf(%d,%d, m, n ) ;
num(m, n, xx) ;
for(m = 0 ; m n ; m++)
printf(%d , xx[m]) ;
printf(\n) ;
readwriteDAT() ;
system(pause);
}
void readwriteDAT()
{ int m, n, xx[1000], i ;
FILE *rf, *wf ;
rf = fopen(in.dat, r) ;
wf = fopen(out.dat, w) ;
for(i = 0 ; i 10 ; i++) {
fscanf(rf, %d %d, m, n) ;
num(m, n, xx) ;
for(m = 0 ; m n ; m++) fprintf(wf, %d , xx[m]) ;
fprintf(wf, \n) ;
}
fclose(rf) ;
fclose(wf) ;
}
IN.DAT
17 5
101 7
321 5
32 4
55 6
76 6
99 4
781 5
22 6
66 3
OUT.DAT
19 23 29 31 37
103 107 109 113 127 131 137
331 337 347 349 353
37 41 43 47
59 61 67 71 73 79
79 83 89 97 101 103
101 103 107 109
787 797 809 811 821
23 29 31 37 41 43
67 71 73
2题目:
题目2:已知数据文件IN.DAT中存有200个四位数, 并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是: 如果四位数各位上的数字均是0或2或4或6或8, 则统计出满足此条件的个数cnt, 并把这些四位数按从大到小的顺序存入数组b中。最后main()函数调用写函数writeDat( )把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。
注意: 部分源程序存在文件PROG1.C文件中。
程序中已定义数组: a[200], b[200], 已定义变量: cnt
显示全部