2021年广东省湛江市全国计算机等级考试网络技术测试卷(含答案)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2021年广东省湛江市全国计算机等级考试网络技术测试卷(含答案) 学校:________ 班级:________ 姓名:________ 考号:________
一、单选题(10题)
1.网络营销的企业竞争是一种()的竞争形态。
A.以产品为焦点
B.以技术为焦点
C.以人才为焦点
D.以顾客为焦点
2.静态随机存储器可以用双极型器件构成,也可以由MOS型器件构成。
双极型器件与MOS型器件相比,下面哪一项不是它的特点()
A.工艺较简单
B.集成度较低
C.存取速度低
D.功耗比较大
3.第37题Ethemet的核心技术是()。
A.CSMA/CD
B.Token Ring
C.Token Bus
D.CSMA/CA
4.用得最多的网桥是( )。
A.透明网桥
B.源路由网桥
C.互联网桥
D.多用网桥
5.
6.
7.在一台主机上用浏览器无法访问到域名为WWW.abc.edu.cn的网站,并且在这台主机上执行tracert命令时有如下信息Tracing route to www.abc.edu.cn[202.113.96.10] Over maximum of 30 hops:1<1 ms<1 ms<1 ms 59.67.148.1 259.67.1 48.1 reports:Destination net unreachable Trace complete 分析以上信息,会造成这种现象的原因是()。
A.该计算机IP地址设置有误
B.相关路由器上进行了访问控制
C.该计算机没有正确设置DNS服务器
D.该计算机设置的DNS服务器工作不正常
8.下列关于综合布线的描述中,错误的是()。
A.多介质信息插座是用于连接双绞线和同轴电缆
B.干线线缆铺设经常采用点对点结合和分支结合两种方式
C.终端有高速率接入要求时,水平子系统可采用光纤直接铺设到桌面
D.采用在管理子系统中更改、增加、交换、扩展线缆的方式来改变线缆路由
9.以下不属于计算机病毒生命周期的是( )。
A.潜伏阶段
B.繁殖阶段
C.触发阶段
D.破坏阶段
10.一个路由表通常包含许多(N,R)对偶序。
其中,N和R代表的是( )。
A.N指源主机的IP地址,R是到网络N路径上的“下一个”路由器的IP
地址
B.N指要到达的网络的IP地址,R是到网络N路径上的“下一个”路由器的护地址
C.N指源网络的IP地址,R是到网络N路径上的默认路由IP地址
D.N指要到达的网络的IP地址,R是到网络N路径上的“上一个”路由器的企地址
二、填空题(10题)
11. ______是指二进制数据在传输过程中出现错误的概率。
12.数字签名是笔迹签名的模拟,用于确认发送者的身份,是一个的消息摘要。
13. 数据报选项与填充域使得IP数据报的头部长度是【】的整数倍。
14.第64题第三层交换机本质上是用硬件实现的一种高速路由器,它分析了()层的PDU结构。
15.
16. 为了保证连接的可靠建立,TCP使用了______法。
17. 网络计费管理的主要目的是控制和监测网络操作的。
18. 在混合式P2P网络中,根据结点的能力可以将结点分为用户结点、搜索结点和______3种类型。
19.
第74 题VoIP的3种实现形式分别为PC-to—PC、PC—to-Phone和___________。
20. 在通信网中,为了防止当发送能力大于接收能力时造成数据丢失的现象,一般需要进行______。
三、2.填空题(8题)
21. IPTV包括三个基本业务,分别是______、直播电视和时移电视。
22. 无线局域网使用扩频的两种方法是直接序列扩频与______扩频。
23. 交换式局域网的核心设备是______,它可以在它的多个端口之间建立多个并发连接。
24. 传输层的主要任务是向用户提供可靠的______服务,透明地传送报文。
25. 计算机的硬件主要包括:______、存储器和输入/输出设备。
26. 虚拟局域网通常采用交换机端口号、MAC地址、网络层地址或______。
27. 从网络高层协议角度看,攻击方法可以概括为:______与非服务攻击。
28. 在ISO/OSI参考模型中,______的主要功能是路由选择、拥塞控制与网络互联。
四、C语言程序设计题(2题)
29. 已知数据文件in.dat中存有300个四位数,并已调用读函数readDat 把这些数存入数组a中,请编制一函数isValue,其功能是:求出所有这些四位数是素数的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序。
最后main 函数调用写函数writeDat把数组b中的数输出到out.dat文件中。
例如:5591是素数,则该数满足条件存入数组b中,且个数cnt=cnt+1。
9812是非素数,则该数不满足条件忽略。
注意:部分源程序存在test.C文件中。
程序中已定义数组:a[300],b[300],已定义变量:cnt请勿改动数据文件in.dat中的任何数据、主函数main、读函数readDat和写函数writeDat的内容。
30.已知数据文件in.dat中存有200个四位数,并已调用读函数readDat 把这些数存入数组a中,请考生编制一函数jsgal,其功能是:从数组a 中依次取出一个四位数,对每一个四位数作如下处理:把个位数字和千位数字重新组成一个新的含有两位数字的数(新数的十位数字是原四位数的个位数字,新数的个位数字是原四位数的于位数字),以及把百位数字和十位数字组成另一个新的含有两位数字的数(新数的十位数字是原四位数的百位数字,新数的个位数字是原四位数的十位数字),如果两个新组成数:一个是奇数,另一个为偶数,并且至少有一个数能被l7整除,同时两个新数的十位数字均不为零,则将满足此条件的四位数存入数组b中,并计算满足上述条件的四位数的个数cnt,而后对数组b进行降序排序。
最后main函数调用写函数writeDat把结果cnt以及数组b中符合条件的四位数输出到out.dat文件中。
例如:一个四位数为4512,依题意组成的第一个新数为24,第二个新数为51,其中51能被l7整除,这两个新数的十位数字不为零,则4512这个四位数满足题意所规定条件。
注意:部分源程序存在test.c文件中。
程序中已定义数组:a[200],b[200],已定义变量:cnt
请勿改动数据文件in.dat中的任何数据、主函数main、读函数readDat 和写函数writeDat的内容。
五、1.选择题(3题)
31. 下面不属于第三代移动通信系统标准的是______。
A.TD-SCDMA
B.WCDMA
C.CDMA2000
D.EDGE
32. 网络新闻组是一种利用网络进行专题讨论的国际论坛,到目前为止
( )仍是最大规模的网络新闻组。
A.UNIX
ENET
C.BBS
D.E-MAIL
33. 在以下网络协议中,属于数据链路层协议的是______。
Ⅰ、TCP Ⅰ、UDP Ⅰ、IP Ⅰ、SMTP
A.Ⅰ、Ⅰ和Ⅰ
B.Ⅰ和Ⅰ
C.Ⅰ和Ⅰ
D.都不是
六、1.程序设计题(3题)
34. 已知数据文件IN77.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsVal(),其功能是:如果一个4位数的干位数字上的值加十位数字上的值恰好等于百位数字上的值加上个位数字上的值,并且此4位数是偶数,则统计㈩满足此条件的数的个数cnt并把这些4位数按从小到大的顺序存入数组b中,最后调用写函数writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT77. 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 ( "IN77. DAT", "r" );
for (i=0; i<MAX; i++)
fscanf (fp, "%d",&a [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 ( "OUT7 7. DAT", "w" );
fprint f (fp, "%od\n", cnt);
for (i=0;i<cnt; i++)
fprintf(fp, "%d\n",b[i]);
fclose (fp);
}
35. 已知数据文件1N68.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,清编制一函数JsVal(),其功能是:如果4位数各位上的数字均是奇数,则统计出满足此条件的个数cnt,并把这些4位数按从大到小的顺序存入数组b中。
最后调用函数writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT68.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("IN68.DAT","r");
for(i=0;i<MAX;i++)
fscanf(fp,"%d",&a[i]);
fclose(fp);
}
void main()
{
int i;
readDat();
jsVal();
printf (满足条件的数=%d\n", cnt);
for(i=0;i<cnt;i++)
printf ("%d", b Iii );
printf ("\n");
writeDat ();
}
writeDat ()
{
FILE *fp;
iht i;
fp=fopen ("out68.dar","w");
fprintf (fp,"%d\n",cnt);
for (i=0; i<cnt; i++)
fprintf {fp,"%d\n",b Iii );
fclose (fp);
}
36. 已知在文件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);
}
参考答案
1.D
2.A
3.AEthernet的核心技术是它的随机争用型介质访问控制方法,即带有冲突检测的载波侦听多路访问CSMA/CD方法。
4.A网桥按照路由表的建立方法分为两类:透明网桥与源路由网桥。
目前,用得最多的网桥是透明网桥。
5.B
6.A
7.Btracert命令输出了目的地址的IP地址,则证明本机IP地址和DNS 服务器设置正常,且DNS服务器工作正常。
而在路由器转发第二路59.67.148.1时存在访问控制,从而对该计算机进行了限制。
故选择B选项。
8.A多介质信息插座用于连接光纤和铜缆,用以解决用户对“光纤到桌面”的需求。
故选A选项。
9.D计算机病毒生命周期包括4个阶段;潜伏阶段、繁殖阶段、触发阶段和执行阶段。
10.B
11.误码率误码率解析:误码率是指二进制码元在数传输系统中被传错
的概率,它在数值上近似等于,Pe=Ne/N,其中N为传输的二进制码总数,Ne为被传错的码元数、
12.加密数字签名是笔迹签名的模拟,用于确认发送者身份,是一个加密的消息摘要。
13.3232 解析:IP选项是任选的,但选项处理是不可或缺的,填充域用来将IP报文凑齐为32的整数倍长度。
14.网络【解析】三层交换机是网络层设备,它使用硬件分析分组的格式,从而进行转发。
15.
16.3次握手3次握手解析:为了保证可靠性,TCP采用了3次握手来建立和取消连接。
17.费用和代价费用和代价解析:计费管理记录网络资源的使用,目的是控制和监测网络操作的费用和代价,它可以估算出用户使用网络资源可能需要的费用和代价。
18.索引结点索引结点解析:在混合式P2P网络中,根据结点的能力可以将结点分为用户结点、搜索结点和索引结点3种类型。
19.Phone-to-Phone
【解析】VOIP技术问世以来,在技术上逐步成熟。
短短几年内,它已由最初的PC-to-PC发展到更实用的Phone—to Phone,并逐渐走入电信市场。
20.流量控制流量控制解析:在通信网中,为了防止当发送能力大于接收能力时造成数据丢失的现象,要进行流量控制。
21.视频点播视频点播解析:IPTV的主要特点是交互性和实时性,三个基本业务包括视频点播,直播电视,时移电视。
22.跳频跳频解析:无线局域网所使用的两种扩频方法是跳频扩频(FHSS)和直接序列扩频(DSSS)。
23.局域网交换机局域网交换机解析:交换式局域网的核心部件是它的局域网交换机,它可以在它的多个端口之间建立多个并发连接。
24.端到端(或End-to-End)端到端(或End-to-End) 解析:传输层的丰要任务足向用户提供可靠的端到端服务,透明地传送报文。
它向高层屏蔽了下层数据通信的细节,因而是计算机通信体系结构中最关键的一层。
25.中央处理单元(CPU)中央处理单元(CPU) 解析:一个完整的计算机系统是由硬件系统和软件系统这两大部分组成。
计算机硬件指的是组成一台计算机的各种物理装置,它是由控制器、运算器、存储器、输入设备和输出设备组成,其中,运算器和控制器组成中央处理器,也称为中央处理单元,在微机中则称为CPU。
26.IP广播组地址定义IP广播组地址定义解析:虚拟网络建立在交换技术基础上。
以软件方式来实现逻辑工作组的划分与管理。
通常有4种定义虚拟局域网的技术:通过交换机端口号、用MAC地址、用网络层地址和IP广播组地址。
27.服务攻击服务攻击解析:从网络高层协议角度看,攻击方法可以概括为服务攻击与非服务攻击。
服务攻击是针对某种特定网络服务的攻击。
非服务攻击不针对某项具体应用服务,而是基于网络层等低层协议进行的。
非服务攻击利用协议或操作系统实现协议时的漏洞来达到攻击的目
的,是一种更有效的攻击手段。
28.网络层网络层解析:网络层主要功能是路由选择、拥塞控制和网络互联。
通过路由算法,为分组通过通信子网选择最适当的路径。
29.【审题关键句】求素数的个数,存入数组,按从小到大的顺序排序。
\n【解题思路】
\n①首先定义两个循环变量循环i、j和一个用于数据交换的整型变量tmp。
\n②通过for循环依次读取数组中的300个数,其中,循环变量i从0开始每次加1,直到i<300停止循环;在每次循环中判断a[i]是否是素数,如果是素数,则把a[i]的值赋给数组b[cnt],同时数组下标变量cnt 值加1。
\n③在退出循环后,用两个for循环对数组b[]中元素进行两两比较,实现数组元素从小到大的排序,比较过程中通过整型变量tmp实现两个数的交换。
\n【参考答案】
\n
30.【审题关键句】个位+千位与百位+十位,奇数,偶数,整除,从大到小排序。
\n【解题思路】
\n本题类似第24套试题,通过审题可以发现主要是对四位数的筛选条件有所不同,体现在两个方面:①分解后重新组合成十位数的方式不同,参考答案的第8、9条语句重新指定两位数的组合方式;②新组合的两
位数的奇偶性判断及整除判断,参考答案的第l0条语句。
\n本题第10条语句中各条件表达式之间的关系有些复杂,大致思路是:①首先判断新组合的两位数的十位不为0,即表达式“gwbw”;②再判断新组合的第一个两位数为偶数,第二个两位数为奇数,且两个两位数中至少有一个能被l7整除的情况,两个整除关系表达式式要用或运算符(11)连接,且用括号括起来先计算或运算,再与奇偶性判断表达式进行与运算;③最后,在判断新组合的第一个两位数为奇数,第二个两位数为偶数,且两个两位数中至少有一个能被l7整除的情况(各表达式之间的连接关系同第2步)。
完成以上3部分的表达式设计后,再通过与运算将3部分表达式连接起来。
\n【参考答案】
\n
31.D解析:EDGE(数据速率增强型GSM) 接入技术是一种提高GPRS 信道编码效率的高速移动数据标准,数据传输速率高达384 kbps。
它提供了一个从GPRS到第三代移动通信的过渡性方案,也有人称它为“二代半(2.5G) ”技术。
TD-SCDMA、WCDMA和CDMA2000是ITU-R 的三大标准。
32.B解析:网络新闻组是一种利用网络进行专题讨论的国际论坛,到目前为止USENET仍是最大规模的网络新闻组。
33.D解析:本题考查点是TCP/IP协议簇中的多种协议。
TCP协议是TCP/IP协议簇中传输层使用的协议。
它是一种可靠的面向连接的协议,可以将源主机的字节流无差错的传送到目的主机,以保证将通信子网中
的传输错误全部处理完毕。
UDP协议也是TCP/IP协议簇中传输层使用的协议。
它是一种不可靠的无连接协议,分组传输中的差错控制由应用层完成。
IP协议是TCP/IP协议簇中互联层的协议。
IP协议是一种面向无连接的协议。
它负责将发送主机的数据分组以“五连接”的方式发送到目的主机。
由于是“无连接”方式,各数据分组在Internet中是独立传输的,所以IP层必须负责数据分组传送过程中的路由选择和差错控制。
同时,“无连接”方式也决定了构成一个传输层报文的各个分组的发送顺序和接收顺序不同,甚至有丢失现象,这些问题则提交给传输层去解决。
SMTP协议(简单电子邮件协议)是TCP/IP协议簇中应用层的协议。
它用于实现电子邮件传送功能。
通常,电子邮件应用程序向邮件服务器传送邮件时使用SMTP协议,而从邮件服务器的邮箱中读取时使用POP3或IMAP协议。
综上所述,TCP、UDP、IP和SMTP协议都不属于数据链路层协议。
34.void jsVal( ) { int i thou hun ten data j; int ab cd; for (i=0; i<MAX; i++) { thou=a [i]/1000; /*求四位数的千位数字*/ hun=a [i] %1000/100; /*求四位数的百位数字*/ ten=a [i] %100/10; /*求四位数的十位数字*/ data=a [i] %10; /*求四位数的个位数字*/ if ((thou+ten==hun+data) &&a [i] %2 !=1) { /*如果千位数加十位数等于百位数并且此数是偶数*/ b [cnt]=a [i]; /*则将满足条件的数存入数组b中*/ cnt++; /*统计满足条件的数的个数*/ } } for (i=0; i<cnt-1; i++) /*将数组b中的数按从小到大的顺序排列*/ for (j=i+1; j<cnt; j++) if (b[i]>b[j]) { da ta=b [i]; b[i]=b[j];
b [j] =data; } }void jsVal( )\r\n {\r\n int i, thou, hun, ten, data, j;\r\n int ab, cd;\r\n for (i=0; i<MAX; i++)\r\n {\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+ten==hun+data) &&a [i] %2 !=1)\r\n { /*如果千位数加十位数等于百位数,并且此数是偶数*/ \r\n b [cnt]=a [i]; /*则将满足条件的数存入数组b中*/\r\n cnt++; /*统计满足条件的数的个数*/\r\n }\r\n }\r\n for (i=0; i<cnt-1; i++) /*将数组b中的数按从小到大的顺序排列*/\r\n for (j=i+1; j<cnt; j++)\r\n if (b[i]>b[j])\r\n {\r\n da ta=b [i];\r\n b[i]=b[j];\r\n b [j] =data;\r\n }\r\n } 解析:本题考查的知识点如下:
(1)将一个4位整数各位上的数转变成单独的个位数。
(2)判断结构中多个条件的布尔运算。
(3)数据的排序。
在本题中,首先要将一个4位数的千位、百位、十位、个位拆成独立的数字。
这里借助特殊运算符号“%” (取余)和“/” (整除)。
将一们位数整除1000则可得到其千位上的数字,除以1000取余再整除100则可得百位上的数字,除以100取余再整除10则可得—卜位上的数字,除以10取余则得个位上的数字。
若一个数除以2取余为0,则这个数是偶数。
题目中的两个条件必须同时满足,所以两条件之间用“与”运算。
先将满足条件的数存入数组b中,再对数组中的数据进行排序。
最后的排序采用“选择排序法”。
35.void jsVal() { iht i thou hun ten data j; for (i=0;i<200;i++) { thou=a [i] /1000; /*求四位数的千位数字*/ hun=a [i] %1000/100; /*求四位数的百位
数字*/ ten=a [i] %100/10; /*求四位数的十位数字*/ dat a=a [i] %10; /*求四位数的个位数字*/ if (thou%2 !=0 && hun%2!=0 && ten%2!=0 && data%2!=0) /*如果4位数各位上数字均是奇数*/ { b [cnt] =a [i]; /*将满足条件的数存入数组b中*/ cnt++; /*统计满足条件的数的个数*/ } } for (i=0; i for (j=i+l; j<cnt; j++) if (b[i] <b[j] ) { data=b[i]; b[i]=b[j]; b [j] =data; } }void jsVal()\r\n {\r\n iht i, thou, hun, ten, data, j;\r\n for (i=0;i <200;i++)\r\n {\r\n thou=a [i] /1000; /*求四位数的千位数字*/\r\n hun=a [i] %1000/100; /*求四位数的百位数字*/\r\n ten=a [i] %100/10; /*求四位数的十位数字*/\r\n dat a=a [i] %10; /*求四位数的个位数字*/\r\n if (thou%2 !=0 && hun%2!=0 && ten%2!=0 && data%2!=0)\r\n /*如果4位数各位上数字均是奇数*/\r\n {\r\n b [cnt] =a [i]; /*将满足条件的数存入数组b中*/\r\n cnt++; /*统计满足条件的数的个数*/\r\n }\r\n }\r\n for (i=0; i for (j=i+l; j<cnt; j++)\r\n if (b[i] <b[j] )\r\n {\r\n data=b[i];\r\n b[i]=b[j];\r\n b [j] =data;\r\n }\r\n } 解析:本题考查的知识点如下:
(1) '%'与'/'的使用。
(2) 循环结构与判断结构的使用。
(3)数据的排序。
本题中,首先借助“%”与“/”将4位数各位上的数拆成独立的数字:将1个4位数整除1000则可得到其千位上的数字,除以1000取余再整除100则可得百位上的数字,除以100取余再整除10则可得十位上的数字,除以10取余则得个位卜的数字。
1个数除以2取余所得的数不等于0,则此数是奇数。
题中要求将符合条件的4位数按从大到小的顺序存
入数组b中,我们可以先将符合条件的4位数存入数组b,然后对b中的数进行排序。
排序使用“选择排序法
36.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来求得满足所给条件的所有数的平均值。