1、全国计算机等级考试三级网络题库详解全国计算机等级考试三级网络技术题库详解(内部资料,禁止翻录)山东农业大学计算中心 2012.4目录第1类 结构体成员筛选并排序 2第2类 数位分解后按筛选统计并排序 7第3类 数位分解后按数筛选及求平均值 14第4类 数位分解并重组后再筛选统计并排序 17第5类 根据相邻数大小进行筛选统计并排序 23第6类 根据后3位排序 25第7类 结构体数组排序 26第8类 迭代算法 28第9类 计算素数 29第10类 统计个数及求平均值 33第11类 整除 36第12类 平均值及方差 37第13类 字符串改写 40第14类 字符串排序 41第15类 字符移动 46第16
2、类 字符串替代 48第17类 遍历统计、移动或倒排 54第18类 选票问题 56第19类 出圈问题 58第20类 其他典型问题 59第1类 结构体成员筛选并排序1、已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)五部分组成。其中:金额=单价数量。函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品名称从大到小进行排列,若产品名称相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sel
3、l中,最后调用函数WriteDat()把结果输出到文件OUT.DAT中。()参考答案:void SortDat() int i,j; PRO xy; for(i=0;i99;i+) for(j=i+1;j100;j+) if(strcmp(selli.mc,sellj.mc)0) /*按产品名称从大到小进行排列*/ xy=selli; selli=sellj; sellj=xy; else if(strcmp(selli.mc,sellj.mc)=0) /*若产品名称相同*/ if(selli.jesellj.je) /*则按金额从大到小进行排列*/ xy=selli; selli=sellj
4、; sellj=xy; 2、 已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)四部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品名称从小到大进行排列, 若产品名称相同, 则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT.DAT中。()参考答案:void SortDat() int i
5、,j; PRO xy; for( i=0; iMAX-1; i+ ) /*注意:MAX值为100*/ for( j=i+1; j0) /*按产品名称从小到大进行排列*/ xy=selli; selli=sellj; sellj=xy; else if(strcmp(selli.mc,sellj.mc)=0) /*若产品名称相同*/ if(selli.jesellj.je) /*则按金额从小到大进行排列*/ xy=selli;selli=sellj;sellj=xy; 3、 已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位
6、)、单价dj(整型)、数量sl(整型)、金额je(长整型)五部分组成。其中:金额=单价数量。函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品名称从小到大进行排列,若产品名称相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT.DAT中()参考答案:void SortDat() int i,j; PRO xy; for(i=0;iMAX-1;i+) for(j=i+1;j0 ) /*按产品名称从小到大进行排列*/ xy=selli; selli=s
7、ellj; sellj=xy; else if(strcmp(selli.mc,sellj.mc)=0) /*若产品名称相同*/ if(selli.jesellj.je) /*则按金额从大到小进行排列*/ xy=selli; selli=sellj; sellj=xy; 4、已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)五部分组成。其中:金额=单价数量。函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其
8、功能要求:按金额从大到小进行排列,若金额相同,则按产品代码从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT.DAT中。()参考答案:void SortDat() int i,j; PRO xy; for(i=0;i99;i+) for(j=i+1;j100;j+) if(selli.jesellj.je) /*按金额从大到小进行排列*/ xy=selli; selli=sellj; sellj=xy; else if(selli.je=sellj.je) /*若金额相同*/ if(strcmp(selli.dm,sellj.dm)0
9、) /*则按代码从大到小进行排列*/ xy=selli; selli=sellj; sellj=xy; 5、已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)五部分组成。其中,金额=单价数量。函数ReadDat()的功能是读取这100个销售记录并存入数组sell中。请编制函数SortDat(),其功能要求:按金额从小到大进行排列,若金额相同,则按产品代码从小到大进行排列,排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT.DAT
10、中。()void SortDat() int i,j; PRO xy; for(i=0;i99;i+) for(j=i+1;jsellj.je) /*按金额从小到大进行排列*/ xy=selli;selli=sellj;sellj=xy; else if (selli.je=sellj.je) /*若金额相同*/ if (strcmp(selli.dm,sellj.dm)0) /*则按代码从小到大进行排列*/ xy=selli;selli=sellj;sellj=xy; 6、已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10
11、位)、单价dj(整型)、数量sl(整型)、金额je(长整型)几部分组成。其中,金额=单价数量。函数ReadDat()的功能是读取这100个销售记录并存入数组sell中。请编制函数SortDat(),其功能要求:按金额从小到大进行排列,若金额相同,则按产品代码从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT.DAT中。()参考答案;void SortDat() int i,j; PRO xy; for(i=0;i99;i+) for(j=i+1;jsellj.je) /*按金额从小到大进行排列*/ xy=selli; selli=se
12、llj; sellj=xy; else if (selli.je=sellj.je) /*若金额相同*/ if (strcmp(selli.dm,sellj.dm)0) /*则按代码从大到小进行排列*/ xy=selli; selli=sellj; sellj=xy; 7、已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)五部分组成。其中:金额=单价数量。函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功
13、能要求:按产品代码从小到大进行排列, 若产品代码相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT.DAT中。()参考答案:void SortDat() int i,j; PRO xy; for(i=0;iMAX-1;i+) for(j=i+1;j0) /*按代码从小到大进行排列*/ xy=selli; selli=sellj; sellj=xy; else if(strcmp(selli.dm,sellj.dm)=0) /*若代码相同*/ if(selli.jesellj.je) /*则按金额从小到大进行排列*/ xy
14、=selli; selli=sellj; sellj=xy; 8、已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)四部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品代码从小到大进行排列,若产品代码相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT.DAT中。()参考答案:void
15、 SortDat() int i,j; PRO xy; for(i=0;iMAX-1;i+) for(j=i+1;j0) /*按代码从小到大进行排列*/ xy=selli; selli=sellj; sellj=xy; else if(strcmp(selli.dm,sellj.dm)=0) /*若代码相同*/ if(selli.jesellj.je) /*则按金额从大到小进行排列*/ xy=selli; selli=sellj; sellj=xy; 9、已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型
16、)、数量sl(整型)、金额je(长整型)五部分组成。其中:金额=单价数量。函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT.DAT中。()参考答案:void SortDat() int i,j; PRO xy; for( i=0; i99; i+ ) for( j=i+1; j100; j+ ) if(strcmp(selli.dm,sellj.dm)0) /*按
17、产品代码从大到小进行排列*/ xy=selli; selli=sellj; sellj=xy; else if(strcmp(selli.dm,sellj.dm)=0) /*若产品代码相同*/ if(selli.jesellj.je) /*则按金额从大到小进行排列*/ xy=selli; selli=sellj; sellj=xy; 10、已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)五部分组成。其中:金额=单价数量。函数ReadDat()的功能是读取这100个
18、销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按金额从大到小进行排列,若金额相等, 则按产品代码从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT.DAT中。()参考答案:void SortDat() int i,j; PRO xy; for(i=0;iMAX-1;i+) for(j=i+1;jMAX;j+) if(selli.je0) /*则按代码从小到大进行排列*/ xy=selli; selli=sellj; sellj=xy; 第2类 数位分解后按筛选统计并排序11、已知数据文件IN.DAT中存有
19、300个四位数,并已调用读函数readDat()把这些数存入数组a中,请编制一个函数jsValue(),其功能是:求出个位数上的数减千位数上的数减百位数上的数减十位数上的数大于零的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b中的四位数按从大到小的顺序进行排序,最后调用写函数writeDat()把数组b中的数输出到OUT.DAT文件。()例如:1239,9-1-2-30,则该数满足条件,存入数组b中,且个数cnt=cnt+1。8129,9-8-1-20,则该数不满足条件,忽略。参考答案:void jsValue() int i,thou,hun,ten,data,j; f
20、or(i=0;i0) bcnt=ai; cnt+; for(i=0;icnt-1;i+) /*将数组b中的四位数按从大到小的顺序进行排序*/ for(j=i+1;jcnt;j+) if(bi0,则该数满足条件存入数组b,且个数cnt=cnt+1。9812,9-8-1-20,则该数不满足条件,忽略。参考答案:jsValue() int i,thou,hun,ten,data,j; for(i=0;i0) bcnt=ai; cnt+; for(i=0;icnt-1;i+) /*将数组b中的四位数按从小到大的顺序进行排序*/ for(j=i+1;jbj) data=bi; bi=bj; bj=dat
21、a; 13、已知数据文件IN.DAT中存有300个四位数,并已调用读函数readDat()把这些数存入数组a中。请编制一个函数jsValue(),其功能是:求出千位数上的数加个位数上的数等于百位数上的数加十位数上的数的个数cnt,再把所有满足条件的四位数依次存入数组b中,然后对数组b中的四位数按从小到大的顺序进行排序,最后调用写函数writeDat()把数组b中的数输出到OUT.DAT文件。()例如:6712,6+2=7+1,则该数满足条件存入数组bb中,且个数cnt=cnt+1。8129,8+91+2,则该数不满足条件,忽略。参考答案:void jsValue() int i,thou,hu
22、n,ten,data,j; for(i=0;i300;i+) thou=ai/1000; /*取得四位数的千位数字*/ hun=ai%1000/100; /*取得四位数的百位数字*/ ten=ai%100/10; /*取得四位数的十位数字*/ data=ai%10; /*取得四位数的个位数字*/ if (thou+data=hun+ten) bcnt=ai; cnt+; for(i=0;icnt-1;i+) /*将数组b中的四位数按从小到大的顺序进行排序*/ for(j=i+1;jbj) data=bi; bi=bj; bj=data; 14、已知数据文件IN.DAT中存有200个四位数,并已
23、调用读函数readDat()把这些数存入数组a中,请考生编制一个函数jsVal(),其功能是:若一个四位数的千位数字上的值小于等于百位数字上的值,百位数字上的值小于等于十位数字上的值,十位数字上的值小于等于个位数字上的值,并且此四位数是偶数,则统计出满足此条件的个数cnt,并把这些四位数按从小到大的顺序存入数组b中。最后,调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。()参考答案:void jsVal() int i,j; int qw,bw,sw,gw,t; for(i=0;iMAX;i+) /*求每个四位数的每位数字*/ qw=ai/10
24、00; bw=ai%1000/100; sw=ai%100/10; gw=ai%10; if(qw=bw)&(bw=sw)&(sw=gw)&(ai%2=0) bcnt=ai; cnt+; for(i=0;icnt-1;i+) /*对数组b进行升序排列*/ for(j=i+1;jbj) t=bi; bi=bj; bj=t; 15、已知数据文件IN.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一个函数jsVal(),其功能是:如果一个4位数的千位数字上的值加十位数字上的值恰好等于百位数字上的值加上个位数字上的值,并且此4位数是偶数,则统计出满足此条件的数
25、的个数cnt,并把这些4位数按从小到大的顺序存入数组b中。最后,调用写函数writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT.DAT文件中。()参考答案:void jsVal() int i,qw,bw,sw,gw,j,t; for(i=0;iMAX;i+) /*求每个四位数的每位数字*/ qw=ai/1000; bw=ai%1000/100; sw=ai%100/10; gw=ai%10; if(qw+sw=bw+gw)&ai%2!=1) bcnt=ai; cnt+; for(i=0;icnt-1;i+) /*对数组b进行升序排列*/ for(j=i+1;jbj) t=bi; bi=bj; bj=t; 16、已知数据文件IN.DAT中存有200个四位数, 并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是: 如果四位数各位上的数字均是奇数, 则统计出满足此条件的个数cnt, 并把这些四位数按从大到小的顺序存入数组b中。最后main()函数调用写函数writeD