全国计算机等级考试三级网络技术南开上机100题.doc
文本预览下载声明
全国计算机等级考试三级网络技术南开上机100题
几点说明:
1、题目标题号前用“☆”显示的是2005年4月份本人根据各大论坛考生聩的题号集中而来,题号前加“★”为2005年9月上机考试题,其中难免有题型相同而题号增加的现象,此类标明,仅供参考。
2、每种题目,只用一种解题方法,兰色部分为解题答案,此种方法本人觉得容易理解,不易出错,适合初学者。
3、特别说明:所有解法,本人均上机验证通过。
4、个别南开题如57、100题,题目与原书有所不同,是按实际考试的题目所来,并对今年在实际上机中出现的考题,用红色部分表示实际上机题中的注明事项。
☆题目1
请编写一个函数jsValue(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入数组xx传回。
????最后调用函数writeDat()读取10组数据,分别得出结果且把结果输出到文件out.dat中。
????部分源程序存在文件prog1.c中。
????例如:若输入17 5 则应输出:19,23,29,31,37。
????请勿改动主函数main()和写函数writeDat()的内容。
#include conio.h
#include stdio.h
void readwriteDat();
int isP(int m)
{
int i;
for(i=2;im;i++)
???if(m % i==0)return 0;
return 1;
}
void num(int m,int k,int xx[])
{ int s=0;
??for(m=m+1;k0;m++)
???if(isP(m)) { xx[s++]=m; k--;}
}
main()
{
??int m,n,xx[1000];
??clrscr();
??printf(\nPlease enter two integers:);
??scanf(%d%d,m,n);
??num(m,n,xx);
??for(m=0;mn;m++)
??printf(%d ,xx[m]);
??printf(\n);
??readwriteDat();
}
void readwriteDat()
{
int m,n,xx[1000], i;
FILE *rf,*wf;
rf=fopen(in.dat,r);
wf=fopen(out.dat,w);
for(i=0;i10;i++){
???fscanf(rf,%d %d,m,n);
???num(m,n,xx);
???for(m=0;mn;m++)fprintf(wf,%d ,xx[m]);
???fprintf(wf,\n);
}
fclose(rf);
fclose(wf);
}
☆?????题目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
????请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。
#include stdio.h
#define MAX 200
int a[MAX], b[MAX], cnt = 0 ;
void jsVal()
{ int i,j,qw,bw,sw,gw;
for(i=0;iMAX;i++)
??? { qw=a[i]/1000; bw=a[i]/100%10;
????? sw=a[i]%100/10; gw=a[i]%10;
????? if(qwqw%2==0bw%2==0sw%2==0gw%2==0) b[cnt++]=a[i];
??? }
?? for(i=0;icnt-1;i++)
???? for(j=i+1;jcnt;j++)
?????? if(b[i]b[j]) { qw=b[i]; b[i]=b[j]; b[j]=qw;}
}
void readDat()
{
int i ;
FILE *fp ;
fp = fopen(in.dat, r) ;
for(i = 0 ; i MAX ; i++) fscanf(fp, %d, a[i]) ;
fclose(fp) ;
}
void main()
{
int i ;
readDat() ;
js
显示全部