(2023年)河南省三门峡市全国计算机等级考试网络技术预测试题(含答案)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(2023年)河南省三门峡市全国计算机等级考试网络技术预测试题(含答案) 学校:________ 班级:________ 姓名:________ 考号:________
一、单选题(10题)
1.
2.在组建一个家庭局域网时,有三台计算机需要上网访问Intemet,但ISP 只提供一个连接到网络的接口,且只为其分配一个有效的IP地址。
那么在组建这个家庭局域网时可选用的网络设备是()。
A.无线路由器
B.无线接入点
C.无线网桥
D.局域网交换机
3.采用RSA算法,网络中N个用户之间进行加密通信,需要密钥个数是()。
A.N
B.N+1
C.2N
D.N+N
4.主板主要组成部分是
A.运算器、控制器、存储器
B.CPU和外设
C.CPU、存储器、总线、插槽以及电源
D.CPU、存储器、插槽以及电源电路
5.下列命令中,可用于测试IP地址和域名之间转换的是()。
A.nslookup
B.pathping
C.ping
D.tracert
6.下列关于通过数据通信线路连接到ISP的叙述中,错误的是()
A.综合业务数字网(ISDN)是一种数据通信网
B.使用数据通信线路连接到ISP可以得到更多的带宽
C.通过数据通信网接入Internet的用户主要是个人用户和部分小型企业用户
D.数据通信网的传输速率通常在64Kbps~2Mhps之间
7.IP地址块202.113.79.0/27、202.113.79.32/27和202.113.79.64/26经过聚合后可分配的IP地址数为()。
A.62
B.64
C.126
D.128
8.下列关于OSPF路由协议的描述中,错误的是()。
A.OSPF采用的是一种链路状态算法
B.OSPF可以划分区域,路由更新信息可在不同区域间传播
C.区域用数字标识(ID),区域ID是一个32位无符号数值
D.ID可以用十进制整数和点分十进制数表示形式
9.将内部专用IP地址转换为外部公用IP地址的技术是()
A.RAPR
B.NAT
C.DHCP
D.ARP
10. 全球多媒体网络是( )。
A.一个单一的统一网络
B.一个司互操作的网络集合
C.一个传输计算机数据的网络
D.一个传输数据、音频、视频的网络
二、填空题(10题)
11.
12.快速以太网采用了与传统Ethernet相同的介质访问控制方法,只是将每个比特的发送时间降低到ns。
13. 通过自身常驻系统内存,优先获得系统的控制权,监视和判断系统中是否有病毒存在是______技术。
14.是由VISA和MasterCard开发的开放式支付规范,是为了保证信用卡在公共因特网上的支付安全而设立的。
15. 为了保护自己的计算机免受非安全软件的危害,IE通常将Internet 划分成______、本地Intranet区域、可信站点区域、受限站点区域。
16.IP地址是互联网上的通信地址,是计算机、服务器和路由器的端口地址。
每一个IP地址在全球是唯一的。
一个IP地址实际上是由网络地址和两部分组成的。
17.
18.P2P网络存在4种主要结构类型,Napster是拓扑结构的代表。
19.(6)TCP/IP参考模型的主机一网络层对应于OSI参考模型的物理层与_________。
20.第64题在OSI/RM中,组织两个会话进程之间的通信,并管理数据的交换是()层的主要功能。
三、2.填空题(8题)
21. TCP可以为其用户提供【】、面向连接的、全双工的数据流传输服务。
22. IEEE802.11b定义了使用跳频扩频技术的无线局域网标准,它的最高传输速率可以达到11Mbps。
802.11a将传输速率提高到______Mbps。
23. 一个非零的无符号二进制整数,若在其右边末尾加上两个“0”,形成一个新的无符号二进制整数,则新的数是原来数的【】倍。
24. 帧中继技术用来互联多个______。
25. 著名的TCP/IP协议是指互联网的信息交换、规则与规范的集合体,其中的TCP是指【】,IP是指【】。
26. 【】层是OSI参考模型的最高层。
27. 在因特网路由器中,有些路由表项是由网络管理员手工建立的。
这些路由表项被称为【】路由表项。
28. 在因特网中,SNMP使用的传输层协议是______。
四、C语言程序设计题(2题)
29.函数ReadDat实现从文件in.dat中读取一篇英文文章存入到无符号字符串数组xx中;请编制函数ChA,其函数的功能是:以行为单位把字符串中的第一个字符的ASCII值加第二个字符的ASCII值,得到第一个新的值,存入数组单元xx[i][0]中(其中:i是文章中的某行)。
第二个字符的ASCII值加第三个字符的ASCII值,得到第二个新的值,存入数组单元xx[i][1]中。
以此类推一直处理到最后第二个字符,最后一个字符的ASCII值加原第一个字符的ASCII值,得到最后一个新的值,存放在原字符串对应的位置上,之后把已处理的字符串逆转后仍按行重新存入无符号字符串数组xx中。
最后main函数调用函数WriteDat把结果xx输出到out.dat文件中。
原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格,并也按它的ASCII值作以上处理。
注意:部分源程序存放在test.c文件中。
请勿改动主函数main、读数据函数ReadDat和输出数据函数WriteDat 的内容。
30.已知在in.dat中存有若干个(个数<200)四位数字的正整数,函数ReadDat读取这若干个正整数并存入数组xx中。
请编制函数CalValue,其功能要求:1.求出该文件中共有多少个正整数totNum;2.求这些正整数右移l位二进制位后,产生的新数是奇数的数的个数totCnt,以及满足此条件的这些正整数(右移前的值)的算术平均值totPjz。
最后main函数调用函数WriteDat把所求的结果输出到文件out.dat中。
注意:部分源程序存放在test.c文件中。
请勿改动数据文件in.dat中的任何数据,主函数main、读函数ReadDat 和输出函数WdteDat的内容。
五、1.选择题(3题)
31.防火墙是设置在可信任网络和不可信任的外界之间的一道屏障,其
目的是( )。
A.A.保护一个网络不受病毒的攻击
B.使一个网络与另一个网络不发生任何关系
C.保护一个网络不受另一个网络的攻击
D.以上都不对
32. SET协议中,通过CA安全认证中心来认证当事人的身份,______。
A.其中发卡机构可以不需要认证
B.其中支付网关可以不需要认证
C.其中银行可以不需要认证
D.以上都不对
33. IP数据报的报文格式如图5-2所示。
在没有选项和填充的情况下,报头长度域的值为______ 。
A.3
B.5
C.10
D.20 图5-2 IP数据报的报文格式
六、1.程序设计题(3题)
34. 已知数据文件in81.dat中存有300个4位数,并已调用函数readDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出千位数上的数加百位数上的数等于十位数上的数加个位数上的数的个数cnt,再求出所有满足此条件的4位数的平均值pjz1,以及所有不满足此条件的4位数的平均值pjz2,最后调用函数writeDat()把结果cnt,pjz1,pjz2输出到out81.dat文件。
例如:7153,7+1=5+3,则该数满足条件,计算严均值pjz1,且个数cnt=cnt+1。
8129,8+1≠2+9,则该数不满足条件计算平均值pjz2。
注意:部分源程序已给出。
程序中己定义数组:a[300],b[300],已定义变量:cnt, pjz1, pjz2。
请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。
试题程序:
#include<stdio. h>
int a[300], cnt=0;
double pjz1=0.0,pjz2=0.0;
void jsValue ()
{
}
main ( )
{
int i;
readDat ();
jsValue();
writeDat ();
printf ("cnt=%d\n满足条件的平均值pjz1=%7.21f\n不满足条件的平均值
pjz2=%7.21f\n", cnt, pjz1, pjz2);
}
readDat ( )
{
FILE *fp;
int i;
fp=fopen("in81.dat","r");
for (i=0; i<300;i++)
fscanf (fp, "%d,", &a [i] );
fclose (fp);
}
writeDat ()
{
FILE *fp;
int i;
fp=fopen ("out81. dat", "w" );
fprintf(fp,"%d\n%7.21f\n% 7.21f\n",cnt,pjz1,pjz2);
fclose (fp)
}
35. 已知在文件IN20.DAT中存有若干个(个数〈200)4位数字的正整数,函数ReadDat()的功能是读取这若干个正整数并存入数组xx中。
请编制函数CalValue(),其功能要求:(1)求出这文件中共有多少个正整数totNum:(2)求㈩这些数中的各位数字之和是偶数的数的个数totCnt,以及满足此条件的这些数的算术平均值totPjz,最后调用函数WriteDat()把所求的结果输出到文件OUT20.DAT中。
注意:部分源程序已给出。
请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。
试题程序:
#include〈stdio.h>
#inciude〈conio. h>
#define MAXNUM 200
int xx [MAXNUM];
int totNum = O; /* 文件IN20.DAT 中共有多少个正整数*/
int totCnt = 0; /* 符合条件的正整数的个数*/
double totPjz = 0.0; /* 平均值*/
int ReadDat (void);
void Writedat (void);
void CalValue ()
{
}
main ( )
{
int i;
clrscr ();
for(i = 0; i 〈MAXNUM; i++)
xx[i]= 0;
if (Readdat ())
{
printf ("数据文件IN20.DAT 不能打开! \007\n");
return;
}
CalValue ();
printf ("文件IN20. DAT 中共有正整数=%d个\n", totNum); printf ("符合条件的正整数的个数=%d个\n", totCnt);
printf("平均值=%.21f\n", totPjz);
Writedat ();
}
int Readdat (void)
{
FILE *fp;
int i = 0;
if((fp = fopen("IN20.DAT", "r")) == NULL)
return 1;
while ( ! feof (fp))
{
fscanf(fp, "%d,", &xx[i++]);
}
fclose(fp);
return 0;
}
void Writedat(void)
{
FILE *fp;
fp = fopen("OUT20.DAT", "w");
fprintf(fp, "%d\n%d\n%.21f\n", totNum, totCnt, totPjz);
fclose (fp);
}
36. 已知数据文件INI.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数isVal(),其功能是:如果4位数各位上的数字均是0或2或4或6或8,则统计出满足此条件的数的个数cnt,并把这些4位数按从大到小的顺序存入数组b中,最后调用写函数writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT1.DAT文件中。
注意:部分源程序已给出。
程序中已定义数组:a[200],b[200],已定义变量:cnt。
请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。
试题程序:
#include <stdio.h>
#define MAX 200
int a[MAX], b[MAX], cnt = 0;
void jsVal()
{
}
void readDat()
{
int i;
FILE *fp;
fp = fopen("IN1.DAT", "r");
for(i = 0; i <MAX; i++) fscanf(fp, "%d", ia[i]);
fclose (fp);
}
main ( )
{
int i;
readDat ();
jsVal ();
printf("满足条件的数=%d\n", cnt);
for(i = 0; i <cnt; i++) printf("%d ", b[i]);
printf ("\n");
writeDat ();
}
writeDat ( )
{
FILE *fp;
int i;
fp = fopen("OUT1.DAT", "w");
fprintf(fp, "%d\n", cnt);
for(i = 0; i <cnt; i++) fprintf(fp, "%d\n", b[i]);
fclose (fp);
}
参考答案
1.C
2.AISP只分配了一个有效IP,所以要使局域网内的三台计算机都能正常工作,需要使用NAT技术。
无线路由具备该功能,因此选项A符合要求。
3.C非对称加密算法中,网络中N个用户之间进行加密通信,需要密钥个数是N对,即2N个。
常见的非对称加密算法有:RSA、DSA、PKCS、PGP算法。
故选择C选项。
4.C解析:主板是计算机主机的主要部件。
通常,主板由5部分组成:CPU、存储器、总线、插槽以及电源。
5.Anslookup命令用于测试域名到IP地址转换。
pathing命令的功能结合了ping命令和trac-ert命令的功能,将报文发送到所经过的所有路由器,并根据每跳返回的报文进行统计。
ping命令的功能通过发送ICMP 报文并监听回应报文,来检查与远程或本地计算机的连接。
tracert命令的功能通过发送包含不同TTL的ICMP报文并监听回应报文,来探测到达目的计算机的路径。
故选A选项。
6.C目前连接到ISP的方式基本上分为通过电话线路和数据通信线路两种。
通过电话线路接人Internet的用户主要是个人用户和部分小型企业用户,而通过数据通信网接人Internet的用户主要是大型企业。
数据通信的种类很多.包括DDN、X.25、ISDN和帧中继等。
使用数据通信线路可以得到更多的带宽,其传输速率通常在64Kbps~2Mbps之间。
而使用拨号方式接入Internet时,其传输速率通常为33.6Kbps。
【解析】经过子网聚合,IP地址块为202.113.79.0/25,去掉第—个IP和最后—个IP即得128-2=126。
8.BOSPF可以划分区域,路由更新信息在同一个区域内传播。
区域边界路由器负责接收从其他区域来的信息。
故选择B选项。
9.B
10.B解析:全球网络将是一个可互操作的网络集合,它支持数据、音频、图形、视频、图像和动画合并的多媒体应用。
该网络将提供高效益、高性能的服务,包括娱乐质量的视频,它是可伸缩的,支持成千上万的用户,并且是灵活与可扩展的,以适应未来的需要。
由此可以看出它并不
是一个单一的统一的网络。
11.
12.10快速以太网(Fast Ethernet)的数据传输速率为100Mbps,与传统的以太网具有相同的帧格式、相同的介质访问控制方法(CSMA/CD)、相同的接口和相同的组网方法,只是把传统以太网每个比特的发送时间由100ns降低到了10ns。
13.预防病毒预防病毒解析:网络反病毒技术主要包括预防病毒、检测病毒和消毒3种技术。
预防病毒是断绝计算机病毒的传染途径,预防的同时可以采用检测软件检测病毒,一旦发现病毒,应该用消毒软件的消毒功能消除病毒。
14.安全电子交易(SET)安全电子交易(SET)是由VISA和MasterCard 开发的开放式支付规范,它是为了保证信用卡在公共因特网上的支付安全而设立的。
15.Internet区域Internet区域解析:为了保护自己的计算机免受非安全软件的危害,IE通常将Internet划分成Internet区域、本地Intranet 区域、可信站点区域、受限站点区域。
16.主机地址IP地址通常由两个长度固定的字段组成。
第一个字段为网络号(Net-Add),用于标识主机(或路由器)所连接到的网络。
一个网络号在整个因特网范围内必须是唯一的。
第二个字段是主机号(Host-Add),用于标识主机(或路由器)。
一个主机号在它前面的网络号所指明的网络范围内必须是唯一的。
17.
18.集中式典型的集中式拓扑结构P2P网络软件有Napster和Maze。
典型的非结构化拓扑结构P2P网络软件有Gnutella、Shareaza、LimeWire 和BearShare。
典型的分布式结构化拓扑结构P2P网络软件有Pastry、Tapestry、Chord和CAN。
典型的混合结构P2P网络软件有Skype、Kazaa、eDonkey、BitTorrent和PPLive。
\r\n
\r\n
\r\n
19.(6)数据链路层
【解析】TCP/IP参考模型的主机一网络层对应于OSI参考模型的物理层和数据链路层。
20.会话【解析】在OSI/RM中,会话层(Sessionlayer)的要任务是组织两个会话进程之间的通信,并管;理数据的交换。
21.可靠的可靠的解析:本题考查点是TCP协议提供的服务。
Internet 网络中,网络层的IP协议提供不可靠的数据报服务。
数据报在传输过程中可能出现差错、丢失、顺序错乱等现象。
对大多数的应用而言,需要通过TCP协议对IP层进行“弥补”和“加强”,以便为上层应用进程提供一个可靠的(包括传输数据不重复、不丢失、顺序正确)、面向连接的、全双工的数据流传输服务。
22.5454 解析:IEEE802.11b定义了使用跳频扩频技术,传输速率为1、2、5.5、11Mbps的无线局域网标准。
802.11a将传输速率提高到54Mbps。
23.四或4四或4 解析:二进制整数的权从右向左依次是20,21,22,…,2n-1,从21起,各个数位依次是2倍、4倍、8倍,…。
因此,在右边添两个零就增加了四倍。
24.局域网局域网解析:致帧中继的设计目标主要是针对局域网之间的互联,它是以面向连接的方式、以合理的数据传输速率与低的价格提供数据通信服务。
25.传输控制协议网际协议传输控制协议\r\n网际协议解析:TCP(Transmission Comm1 Protocol)是指传输控制协议,它对应于开放系统互连参考模型OSI七层中的传输层,它是面向“连接”的。
在进行通信之前,通信双方必须先建立连接,才能进行通信。
在结束通信后,终止连接。
IP(Internet Protocol)是指网际协议,它对应于开放系统互连参考模型OSI七层中的网络层。
它是“无连接“的,即通信双方在进行通信之前,不需要事先建立好连接。
26.应用层应用层解析:应用层是OSI参考模型的最高层。
27.静态静态解析:实践中,路由表的建立有两种基本方法:静态路由表由手工建立,形成后到达某一目的网络的路由便固定下来。
网络结构不复杂的时候使用,不能自动适应互联网结构的变化。
必须手工修改路由表。
动态路由表由网络中的路由器相互自动发送路由信息而动态建立的,在网络结构复杂并且经常变化情况下使用。
28.UDPUDP 解析:SNMP是简单网络管理协议,它使用的传输层协议是UDP,UDP提供了不可靠的无连接的传输服务。
29.【审题关键句】以行为单位,新字符串中每个字符的ASCII码值等
于该位置上的原字符ASCII码值加其后面一个字符的ASCII码值,逆序排序。
\n【解题思路】
\n①定义整型循环变量i、j和字符局部变量yuan。
\n②在第一层for循环中,循环变量i从0开始,依次递增直到其值大于或等于maxline,在循环体中,首先把第i行的第一个字符xx[i][O]赋给变量yuan,在第二层for循环中,循环变量j从0开始,依次递增直到其值等于该行字符串的长度减l,在循环体中,将字符xx[i][j]的ASCII 码值与字符xx[i][j+1]的ASCII码值相加的和保存到字符xx[il[j]中。
当退出第二层for循环后,把第i行的最后一个字符与第一个字符变量yuan的值相加,最后通过strrevi函数对i行字符串逆序排序。
\n【参考答案】
\n
30.【审题关键句】读取正数,统计个数,右移后为奇数的个数及平均值。
\n【解题思路】
\n本题类似第44套试题,通过审题可以发现仅有一个不同点,即参与平均值计算的元素是数组xx[i]右移一位之后为奇数的元素,参考答案的第9条语句。
\n【参老答案】
\n
31.C
解析:防火墙是设置在可信任网络和不可信任的外界之间的一道屏障,其目的是保护一个网络不受另一个网络的攻击和破坏。
32.D解析:SET协议中身份认证对所有当事人都是必需的。
不仅持卡人和商家需要确认对方的身份,发卡机构,支付网关、银行也需要通过CA安全认证中心来认证。
33.D解析:本题考查点是IP数据报的结构。
IP层将传输层的数据加上IP报头信息封装成IP数据报,因此IP数据报由报头和数据两部分组成,IP报头包含的控制信息包括版本号、报头长度、服务类型、数据报总长度、标识、标志、片偏移、生存周期、传输协议类型、头部校验和、源IP地址和目的IP地址等,如果不包括选项字段和填充项,报头长度域的值应为20字节。
34.void jsValue() { int ithouhun tendatan=0; for (i=0; i<300; i++) { thou=a
[i]/1000; /*求四位数的千位数字*/ hun=a [i] %1000/100; /*求四位数的百位数字*/ ten=a [i] %100/10; /*求四位数的十位数字*/ data=a[i]%10; /*求四位数的个位数字*/ if (thou+hun==ten+data) /*如果千位数加百位数等于十位数加个位数*/ { cnt++; /*统计满足条件的数求和*/ pjz1+=a [i]; /*将满足条件的数求和*/ } else { n++; /*否则统计不满足条件的数的个数*/ pjz2+=a [i]; /*将不满足条件的数求和*/ }} pjz1/=cnt; /*求满足条件的数的平均值*/ pjz2/=n; /*求不满足条件的数平均值*/ }void
jsValue()\r\n { int i,thou,hun, ten,data,n=0;\r\n for (i=0; i<300; i++)\r\n { thou=a [i]/1000; /*求四位数的千位数字*/\r\n hun=a [i] %1000/100; /*
求四位数的百位数字*/\r\n ten=a [i] %100/10; /*求四位数的十位数字*/\r\n data=a[i]%10; /*求四位数的个位数字*/\r\n if (thou+hun==ten+data) /*如果千位数加百位数等于十位数加个位数*/\r\n { cnt++; /*统计满足条件的数求和*/\r\n pjz1+=a [i]; /*将满足条件
的数求和*/\r\n }\r\n else\r\n { n++; /*否则统计不满足条件的数的个数*/\r\n pjz2+=a [i]; /*将不满足条件的数求和*/\r\n }\r\n }\r\n pjz1/=cnt; /*求满足条件的数的平均值*/\r\n pjz2/=n; /*求不满足条件的数平均值*/\r\n }解析:本题考查的知识点如下:
(1)特殊运算符“%”及“/”的使用。
(2)循环结构及选择结构的使用。
在本题中,首先要将一个4位数的千位、百位、十位、个位拆成独立的数字。
这里借助特殊运算符号“%”——取余和“/”——整除,拆分方法略。
然后判断“千位数+百位数=十位数+个位数”。
依次求得符合条件的数的个数及其平均值。
35.void CalValue() { int ithouhuntendata; int ab; long sum=0; for (i=0;i〈MAXNUM;i++) { if(XX[i]>0) { totNum++; /*统计正整数的个数*/ thou=xx[i]/1000; /*求正整数的千位数*/ hun=xx[i]%1000/100; /*求正整数的百位数*/ ten=xx[i]%100/10; /*求正整数的十位数*/ data=xx[i]%10; /*求正整数的个位数*/ ab=thou+hun+ten+data; if(ab%2==0) /*如果各位数字之和是偶数*/ {totCnt++;sum=sum+xx[i];} /*计算满足条件的数的个数totCnt和这些数的总和sum*/ } } totPjz=sum/totCnt;/*求这些数的算术平均值totPjz*/ }void CalValue()\r\n { int i,thou,hun,ten,data;\r\n int ab;\r\n long sum=0;\r\n for (i=0;i 〈MAXNUM;i++)\r\n { if(XX[i]>0)\r\n {\r\n totNum++; /*统计正整数的个数*/\r\n thou=xx[i]/1000; /*求正整数的千位数*/\r\n hun=xx[i]%1000/100; /*求正整数的百位数*/\r\n ten=xx[i]%100/10; /*求
正整数的十位数*/\r\n data=xx[i]%10; /*求正整数的个位数*/\r\n ab=thou+hun+ten+data; \r\n if(ab%2==0) /*如果各位数字之和是偶数*/\r\n {totCnt++;sum=sum+xx[i];} /*计算满足条件的数的个数totCnt 和这些数的总和sum*/\r\n }\r\n }\r\n totPjz=sum/totCnt;/*求这些数的算术平均值totPjz*/\r\n } 解析:本题的解题思路是首先利用一个for循环来依次从数组中取得的数,由于题目要求求数组中正整数的个数,因此,对于为零的整数,不做任何处理,接着去取下一个数。
只要某个数大于零,则该数一定是正整数,这时就给变量totNum(正整数的个数)累加1,用语句“thou=xx[i]/1000;hun=xx[i]%1000/100; ten=xx[i]%100/10; data=xx[i]%10;”可以实现取得当前被处理数的千位、百位、十位,以及个位上的数字值,之后判断求得的各个位上的数字值之和是否是偶数。
若上述条件成立,则给变量totCnt的值加1,同时把当前符合条件的数累加到变量sam中去,最终利用totPjz来求得满足所给条件的所有数的平均值。
36.void jsVal() { int bb[4]; int ijkflag; for (i=O; i<200;i++) { bb[0]=a[i]/1000; /*求四位数的千位数字*/ bb[1]=a[i]%1000/100; /*求四位数的百位数字*/ bb[2]=a[i]%100/10; /*求四位数的十位数字*/ bb[3]=a[i]%10; /*求四位数的个位数字*/ for (j=0;i<4;i++) { if (bb[j]%2==0) /*如果各位上的数字均是0或2或4或6或8*/ flag=1; /*则置标志位flag为1*/ else(flag=O;break;) /*否则置flag为0退出循环*/ } if(flag==1) /*将满足条件的数存入数组b中并统计满足条件的个数cnt*/ {b[cnt]=a[i];cnt++;) } for(i=O;i<cnt-1;i++) /*把数组b中的数按从
大到小的顺序排序*/ for(j=i+1;i<cnt;i++) if (b[i]<b[j]) {k=b[i];b[i]=b[j];b[i]=k;) }void jsVal()\r\n {\r\n int bb[4];\r\n int i,j,k,flag;\r\n for (i=O; i<200;i++)\r\n {\r\n bb[0]=a[i]/1000; /*求四位数
的千位数字*/\r\n bb[1]=a[i]%1000/100; /*求四位数的百位数字*/\r\n bb[2]=a[i]%100/10; /*求四位数的十位数字*/\r\n bb[3]=a[i]%10; /*求四位数的个位数字*/\r\n for (j=0;i<4;i++)\r\n {\r\n if (bb[j]%2==0) /*如果各位上的数字均是0或2或4或6或8*/\r\n flag=1; /*则置标志位flag 为1*/\r\n else(flag=O;break;) /*否则置flag为0,退出循环*/\r\n }\r\n if(flag==1) /*将满足条件的数存入数组b中,并统计满足条件\r\n 的个数cnt*/\r\n {b[cnt]=a[i];cnt++;)\r\n }\r\n for(i=O;i<cnt-1;i++) /*把数组b中的数按从大到小的顺序排序*/\r\n for(j=i+1;i<cnt;i++) \r\n if (b[i]<b[j])\r\n {k=b[i];b[i]=b[j];b[i]=k;)\r\n } 解析:根据题意可知,函数JsVal()要实现两个功能:一是找出满足条件的那些数,并存放在数组b中;二是对数组b中的数进行从大到小的排序。
首先来实现找出各位上的数字均是0或2或4或6或8”(即每一位上的
数字都是偶数)的位数的功能。
利用一个for循环来不断从数组a中取出
4位数,并对取出的数进行条件判断。
由于这里涉及到要对位数的每一
位进行判断,因此,要借助数组bb来临时存放取得的每一位上的数字
值,“bb[0]=a[i]/1000;bb[1]=a[i]%1000/100;bb[2]=a[i]%100/10;
bb[3]=a[i]%10;”这4条语句就可以完成在数组bb中依次存放当前被
判断的4位数的位上的数字值、百位上的数字值、十位上的数字值,以
及个位上的数字值。
之后,对所得该数的每一位的值进行是否为偶数的
判断,只要有一位上的数字是偶数,就使标志变量flag的值置1,否则
为0,这样最终根据flag的值来决定是否要放到数组中去,变量cnt用来统计数组bb中元素的个数。
将所有满足条件的数取出后利用选择法对其进行排序,即用当前元素依次和它后面的元素进行比较,发现有大于该数的数,就将这两数进行交换。