【2021年】陕西省榆林市全国计算机等级考试网络技术预测试题(含答案)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

【2021年】陕西省榆林市全国计算机等级考试网络技术预测试题(含答案) 学校:________ 班级:________ 姓名:________ 考号:________
一、单选题(10题)
1.下列对子网系统的防火墙的描述错误的是()。

A.控制对系统的访问
B.集中的安全管理
C.增强的保密性
D.防止目和外部的威胁
2.将Catalyst 6500交换机的系统时间设定为“2013年3月26日,星期五,9点l9分25秒”,正确配置是()。

A.set clock fri 26/3/2013 9:19:25
B.set time fri 3/26/2013 9:19:25
C.set time fri 26/3/2013 9:19:25
D.set clock 3/26/2013 fri 9:19:25
3. 在公用密钥数字签名技术中,使用单向散列函数生成信息摘要的目的是______。

A.防止交易者抵赖
B.防止信息被篡改或伪造
C.为了便于解密明文
D.给接收方传递密钥
4.目前的防火墙防范主要是()。

A.主动防范
B.被动防范
C.不一定
5.
6.下列是4台交换机的BridgeID值,依据该值STP确定的根网桥是()。

A.32768.00-01-55-4b-dl-aa
B.24576,00-12-6a-ab-fl-ee
C.8192-00-21-5a-ab-cl-Dc
D.8192,00-26-8a-bb-e2-ff
7.下列关于Ciseo Aironet 1100进入快速配置步骤的描述中,错误的是()。

A.使用5类无屏蔽双绞线将PC机和无线接入点连接起来
B.接入点加电后,确认PC机获得了10.0.0.X网段的地址
C.打开PC机浏览器,并在浏览器的地址栏输入接入点的默认IP地址10.0.0.254
D.输入密码进入接入点汇总状态页面,并点击“Express Setup”进入快速配置页面
8.在Cisco路由器上主要用于存储路由表、快速交换缓存、ARP缓存、数据分组缓冲区和缓冲队列、运行配置(running configuration)文件,以及正在执行的代码和一些临时数据信息的存储器是()。

A.RAM
B.NVRAM
C.Flash
D.ROM
9.
10.在建筑群布线子系统可采用的四种铺设方式中,对线缆保护最有利和最不利的方式分别是()。

A.巷道布线和架空布线
B.管道内布线和架空布线
C.巷道布线和直埋布线
D.管道内布线和直埋布线
二、填空题(10题)
11.( 3')与共享介质局域网不同,交换式局域网可以通过交换机端口之间的_________连接增加局域网的带宽。

12. P2P网络的基本结构之一是______结构,其特点是由服务器负责记录共享的信息以及回答对这些信息的查询。

13. MPEG压缩标准包括MPEG______、MPEG音频和MPEG系统三个部分。

14.
15.
16.(20)Google搜索引擎主要采用了分布式爬行网页采集技术、超文本匹配技术和__________。

17.在计算机拓扑结构中,简单、传输延时确定。

18.
19.目前,因特网上的中文搜索引擎一般都提供分类检索和两种检索方式。

20. 路由器是构成因特网的关键设备。

按照OSI参考模型,它工作于【】层。

三、2.填空题(8题)
21. WWW服务的客户端需要使用一种专门解读网页的软件是【】。

22. 网络的配置管理主要目的在于______网络和系统的配置信息以及网络内各设备的状态和连接关系。

23. 21世纪全球多媒体网络应具有异构性、服务质量、移动性、扩展性、______和可靠性。

24. TCP使用IP传递信息,每一个TCP信息被封装在一个【】中并通过互联网传送。

25. Unix系统采用的【】文件系统,具有良好的安全性、保密性和可维护性。

在文件系统的实现方面,Unix也有比较大的创新,这大大影响了以后的操作系统。

26. 网络安全环境由三个部分组成,它们是技术、管理和______。

27. Solaris 10操作系统获得业界支持,它的桌面已经窗口化和菜单化。

新的______界面使人感觉亲近而且舒适。

28. 屏蔽双绞线由三部分组成:外部保护层、______与多对双绞线。

四、C语言程序设计题(2题)
29. 函数ReadDat实现从文件in.dat中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar,按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx对应的位置上,最后调用函数WriteDat把结果xx输出到文件out.dat中。

替代关系:f(p)=p*13 mod 256,mod为取余运算,P是数组xx中某一个字符的ASCII值,f(p)是计算后的无符号整型值(注意:中间变量定义成整型变量),如果计算后f(p)值小于等于32或是偶数,则该字符不变,否则用f(p)替代所对应的字符。

注意:部分源程序存放在test.c文件中,原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格,并也按此替代关系进行处理。

请勿改动主函数main、读函数ReadDat和输出函数WriteDat的内容。

30.已知数据文件in.dat中存有200个四位数,并已调用读函数readDat 把这些数存入数组a中,请考生编制一函数jsVal,其功能是:依次从数组a中取出一个四位数,如果该四位数大于该四位数以后的连续五个数且该数是奇数(该四位数以后不满五个数,则不统计),则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中,最后调用写函数writeDat把结果cnt以及数组b中符合条件的四位数输出到out.dat文件中。

注意:部分源程序存在test.c文件中。

程序中已定义数组:a[200],b[200],已定义变量:cnt
请勿改动数据文件in.dat中的任何数据、主函数main、读函数readDat 和写函数writeDat的内容。

五、1.选择题(3题)
31. 由各网桥自己来决定路由,局域网上各站不负责路由选择的是
A.802.1
B.802.2
C.802.4
D.802.5
32. 关于HTML协议的描述中,错误的是______。

A.HTML可以包含指向其他文档的链接项
B.HTML可以将声音、图像、视频等文件压缩在一个文件中
C.HTML是Internet上的通用信息描述方式
D.符合HTML规范的文件一般具有.btm或.html扩展名
33. 某交换机端口作于半双工方式时带宽为10Mbps,那么它工作于全双工方式时带宽为( )。

A.5Mbps
B.10Mbps
C.20Mbps
D.15Mbps
六、1.程序设计题(3题)
34. 函数readDat()的功能是从文件IN22.DAT中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。

请编制函数jsSort(),该函数的功能是:以行为单位对字符串按下面给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT22.DAT中。

条件:从字符串中间一分为二,左边部分按字符的ASCII值降序排序,排序后,左边部分与右边部分按例子所示进行交换。

如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。

例如,位置0 1 2 3 4 5 6 7 8
源字符串a b c d h g f e
2 3 4 9 8 7 6 5
则处理后字符串h g f e d c b a
8 7 6 5 9 4 3 2
注意:部分源程序已给出。

请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。

试题程序:
#include〈stdio.h>
#include〈string.h>
#include〈conio.h>
char xx[20] [80];
void jsSort()
{
}
main ( )
{
readDat ();
jsSort ( );
writeDat ();
}
readDat ( )
{
FILE *in;
int i=0;
char *p;
in= fopen("IN22.DAT", "r");
while(i 〈20 && fgets(xx[i], 80, in) != NULL)
{
p = strchr(xx[i], '\n');
if(p) *p = 0;
i++;
}
fclose (in);
}
writeDat ()
{
FILE *out;
int i;
clrscr ( );
ut = fopen("OUT22.DAT", "w");
for(i = 0; i 〈20; i++)
{
printf("%s\n", xx[i]);
fprintf(out, "%s\n", xx[i]);
}
fclose (out);
}
35. 已知数据文件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)

36. 已知文件IN16.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价由(整
型)、数量s1(整型)、金额je(长整型)几部分组成。

其中:金额=单价×数量。

函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell 中。

请编制函数SortDat(),其功能要求:按产品名称从大到小进行排列,若产品名称相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT16.DAT 中。

注意:部分源程序已给出。

请勿改动主函数main()、渎函数ReadDat()和写函数WriteDat()的内容。

试题程序:
#include 〈stdio.h>
#include 〈mem.h>
#include 〈string.h>
#include 〈conio.h>
#include 〈stdlib.h>
#define MAX 100
typedef struct
{
char dm[5]; /* 产品代码*/
char mc[11]; /* 产品名称*/
int dj; /* 单价*/
int s1; /* 数量*/
long je; /* 金额*/
} PRO;
PRO sell [MAX];
void ReadDat ();
void WriteDat();
void SortDat ()
{
}
main ( )
{
memset (sell, 0, sizeof(sell)); ReadDat ();
SortDat ();
WriteDat ();
}
void ReadDat ()
{
FILE *fp;
char str[80], ch[11];
int i;
fp = fopen("IN16.DAT", "r");
for(i=0; i〈100; i++)
{
fgets (str, 80, fp);
memcpy(sell[i].dm, str, 4); memcpy (sell [i] .mc, str + 4, 10); memcpy(ch, str + 14, 4);
ch[4] = 0;
sell[i] .dj = atoi(ch);
memcpy(ch, str +18, 5);
ch[5] = 0;
sell[i].s1 = atoi(ch);
sell[i].je = (long) sell[i].dj * sell[i].s1; }
fclose(fp);
}
void WriteDat()
{
FILE *fp;
int i;
fp = fopen("OUT16.DAT", "w");
for(i = 0; i〈100; i++)
{
fprintf(fp, "%s %s %4d %5d %101d\n", sell[i] .dm, sell[i] .mc,
sell[i].dj, sell[i].s1, sell[i].je);
}
felose (fp);
}
参考答案
1.D
2.B
正确的配置公式是"set \r\ntime[day_of_week][mm/dd/yy][hh:mm:ss]",所以B项正确。

3.B解析:数字签名使用的技术决定了数字签名的功能:安全单向散列函数的特性使得不同数据生成相同加密摘要的可能性很小,从而保证了数据传输过程中的完整性;公开密钥加密技术决定了除发送者之外,其他任何人都不可能产生该密文,从而证明了发送者的身份,也使得发送者无法抵赖。

4.B
5.C
6.CBridgeID用8个字节表示,BridgeID由两个字节的优先级值和6个字节的交换机MAC地址组成,优先级取值范围是0~61440,增值量是4096,优先值越小,优先级越高。

当优先值相同时,那么就根据MAC 地址的值确定根网桥,MAC地址最小的为根网桥。

选项C、D中优先值相同,但是选项C的MAC值小于选项D,故选C选项。

isco Aironet 1100通过PC机浏览器访问时,在浏览器的地址栏里输
入无线接入点的IP地址10.O.0.1,因此C项描述错误,故选择C 选项。

8.ARAM即随机存储器,主要存储路由表、快速交换缓存、ARP缓存、数据分组缓冲区和缓冲队列、运行配置等文件,关机和重启后,RAM里的数据会丢失。

NVRAM即非易失性随机存储器,主要用于存储启动配置文件或备份配置文件。

Flash即闪存,主要用于存储路由器当前使用的操作系统映像文件和一些微代码。

ROM即只读内存,是用于永久保存路由器的开机诊断程序、引导程序和操作系统软件的存储器。

故选择A选项。

9.D
10.D管道布线法:是由管道和入孔组成的地下系统,用来对网络内的各建筑物进行互联。

由于管道是由耐腐蚀材料做成的,所以这种方法对电缆提供了最好的机械保护,使电缆受到维修的机会减到最小程度。

直埋布线法:该方法除了穿过基础墙部分电缆外,电缆的其余部分都没有管道保护,容易受到破坏。

巷道布线法:利用建筑物之间的地下巷道铺设电缆,不仅造价低而且还可以利用原有的安全设施给线缆提供保护。

由于地下巷道存在热水管道,因此可能会把电缆烫伤。

架空布线法:利用原有的电线杆布线,这种布线方法成本较低,但是保密性、安全性和灵活性较差。

故选择D选项。

11.(3)并发【解析】交换式局域网通过支持以太网交换机端口结点之间多个并发连接,实现多结点之间数据的并发传输,因此可以增加局域网带宽,改善局域网的性能与服务质量。

12.集中式集中式解析:目前,P2P网络存在4种主要的结构类型,集中式拓扑结构、分布式非结构化拓扑结构、分布式结构化拓扑结构以及混合式P2P网络结构。

13.视频视频解析:MPEG是ISO/IEC委员会的第111 72号标准草案,包括MPEG视频、MPEG音频和MPEG系统三部分。

14.
15.
16.页面等级技术
【解析】Google搜索引擎主要采用了分布式爬行网页采集技术、超文本匹配技术和页面等级技术。

17.环型拓扑结构在环型拓扑结构中,每个节点与两个最近的节点相连接,使整个网络形成一个环形,数据沿着环向一个方向发送。

环中的每个节点如同一个能再生和发送信号的中继器,它们接收环中传输的数据,再将其转发到下一个节点。

环型拓扑结构简单、传输延时确定。

18.
19.关键词查询目前,因特网上的中文搜索引擎一般都提供分类检索和关键词查询两种检索方式。

分类检索指利用搜索引擎提供的分类目录由上级类目逐级向下级类目查询的方式。

各网站通过人工分类建立类目,一般分为娱乐与休闲、新闻与政治、商业与经济、教育、健康与医药、艺
术与人文等大类,大类不断细化,渐进到细分网页。

这种查询方式较为直观,便于族性检索,但查询速度慢,效率较低,且各搜索站点分类方式不统一,使用起来不太方便。

关键词查询是搜索引擎提供的一种快速、高效的搜索方式。

用户进入搜索引擎网页后,在关键词输入框中输入想要搜索的关键词,然后单击“搜索”按钮即可完成操作。

当然,使用这种方式需要注意如何恰当地输入搜索的字符串,这直接关系到搜索结果的优劣。

20.网络网络解析:网桥是在数据连路层上实现不同网络的互连的设备;路由器是在网络层上实现多个网络互连的设备;网关是通过使用适当的硬件与软件,来实现不同网络协议之间的转换功能,硬件提供不同网络的接口,软件实现不同的互联网协议之间的转换。

21.浏览器浏览器解析:WWW服务采用客户机/服务器工作模式,客户端需使用应用软件——浏览器,这是一种专用于解读网页的软件。

目前常用的有Microsoft公司的IE(Internet Explorer)和Netscape公司的Netscape Communicator。

浏览器向WWW服务器发出请求,服务器根据请求将特定页面传送至客户端。

页面是HTML文件,需经浏览器解释,才能使用户看到图文并茂的页面。

22.掌握和控制或控制和掌握掌握和控制或控制和掌握解析:配置管理的目标是掌握和控制网络和系统的配置信息以及网络内各设备的状态和连接关系。

现代网络设备是由硬件和设备驱动程序组成的,适当配置设备参数可以更好地发挥设备的作用,获得优良的整体性能。

23.安全性安全性解析:安全性是全球多媒体网络的一项重要特征。

24.IP数据报IP数据报解析:TCP协议利用IP层提供的不可靠的数据报服务,在将数据从一端发送到另一端时,为应用层提供可靠的数据传输服务。

TCP使用IP传递信息。

每一个TCP信息被封装在一个IP数据报中并通过互联网传送。

但数据报到达目的主机时,IP将先前封装的TCP信息再送交给TCP。

尽管TCP使用IP传送其信息,但是IP并不解释或读取其信息。

TCP将IP看成一个连接两个终端主机的报文投递通信系统,IP将TCP信息看成它要传送的数据。

25.树形树形解析:日前大多数操作系统如Unix、DOS等都采用多级目录结构,又称为树形目录结构,其中任何一级目录项都可以是下一级目录,也可以是一个具体的文件。

Unix系统采用树形文件系统,具有良好的安全性、保密性和可维护性。

26.法律法律解析:网络安全环境主要是由技术,管理和安全组成,它们一起构成整个网络安全系统,我们从这几个方面去维持网络安全,任何一方面被打破,网络的安全无法得到保障。

27.Java控制台Java控制台解析:Solaris10操作系统获得业界支持,它的桌面已经窗口化和菜单化。

新的Java控制台界面使人感觉亲近和舒适。

28.屏蔽层屏蔽层解析:屏蔽双绞线由外部保护层、屏蔽层与多对双绞线组成。

非屏蔽双绞线由外部保护层与多对双绞线组成。

29.【审题关键句】字符替代f(p)=p*13 mod 256,小于等于32或ASCII 码是偶数不变,否则替换。

\n【解题思路】
\n本题类似第65套试题,通过审题可以发现主要是排序条件的设置要求有所不同,参考答案的第6行,修改if条件语句的设置即可。

\n【参考答案】
\n
30. 【审题关键句】大于后连续5个数,奇数,从小到大排序。

\n【解题思路】本题类似第35套试题,通过审题可以发现主要有两个不同点:①判断数值为奇数,可通过a[i]%2进行判断,参考答案的第4条语句;②要求进行比较的元素大于后连续5个数,因此在设置判断条件时,作为比较的两个数之间应该是大于关系,参考答案的第4条语句。

\n【参考答案】
\n
31.A解析:802.1标准的网桥是透明网桥,802.5标准的是源路选网桥。

32.B解析:HTML是超文本标记语言,它不可以将声音、图像、视频等文件压缩在一个文件中。

33.C解析:交换机端口带宽有半双工与全双工之分,对于10Mbps的端口,半双工端口带宽为10Mbps,而全双工端口带宽为20Mbps。

34.void jsSort() { int ijkstr1half;char ch;for(i=0;i〈20;i++) { str1=strlen(xx[i]); /*求字符串的长度*/ half=str1/2;for(j=0;j〈half-1;j++) /*将左边部分按字符的ASCII值降序排序*/ for(k=j+1;k〈half;k++) if (xx[i][j]〈xx[i][k]) { ch=xx[i][j]; xx[i][j]=xx[i][k]; xx[i][k]=ch; } for(j=half-1k=str1-1;j>=0;j--k--) /*将左边部分和右边部分的对应字符互换位置*/ { ch=xx[i][j]; xx[i][j]=xx[i][k]; xx[i][k]=ch; } } }void jsSort()\r\n {\r\n int i,
j,k,str1,half;\r\n char ch;\r\n for(i=0;i〈20;i++)\r\n {\r\n str1=strlen(xx[i]); /*求字符串的长度*/\r\n half=str1/2;\r\n for(j=0;j〈half-1;j++) /*将左边部分按字符的ASCII值降序排序*/\r\n for(k=j+1;k〈half;k++)\r\n if (xx[i][j]〈xx[i][k])\r\n {\r\n ch=xx[i][j]; \r\n xx[i][j]=xx[i][k];\r\n xx[i][k]=ch;\r\n }\r\n for(j=half-1,k=str1-1;j>=0;j--,k--) /*将左边部分和右边部分的对应字符互换位置*/\r\n {\r\n ch=xx[i][j];\r\n xx[i][j]=xx[i][k];\r\n xx[i][k]=ch;\r\n }\r\n }\r\n } 解析:本题考查对二维字符数组的处理。

由于对二维字符数组的操作是按照先行后列的顺序,因此,需要首先求得各行字符串的长度(利用求字符串长度的strlen()函数),之后借助循环结构逐个访问各行中的每一个字符。

在本题中,应先确定各行中字符串的中间位置(长度的一半就是中间位置),之后先对中间位置以前的字符进行降序排序,排序过程如下:依次用每一个位置的字符与它后面的所有字符(到中间位置前一个字符结束)进行比较,如果发现某字符的ASCII码值大于当前被比较的字符的ASCII码值,则将该字符与当前字符进行交换,交换过后继续与其后面的字符进行比较。

最终比较所得的结果是第一个被比较的位置总是存放着最大的字符,第二个位置总是存放着次大的字符,以此类推就实现了从大到小的排序功能。

接着要做的工作是把中间位置前的一个位置定为初始位置,字符串中的最后一个位置也视为初始位置,让两个位置所对应的字符进行交换,交换过后,这两个位置值(也就是下标值)分别前移,再进行对应位置字符的交换。

最终实现了题目要求。

35.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位数的千位、百位、十位、个位拆成独立的数字。

这里借助特殊运算符号“%”——取余和“/”——整除,拆分方法略。

然后判断“千位数+百位数=十位数+个位数”。

依次求得符合条件的数的个数及其平均值。

36.void SortDat() { int ij;PRO xy;for(i=0;i〈MAX-1;i++) for(j=i+1;
j〈MAX;j++) if(strcmp(sell[i].mcsell[j].mc)<0) /*按产品名称从大到小进行排列*/{ xy=sell[i];sell [i]=sell[j];sell[j]=xy;} else if(strcmp(sell[i].mcsell[i].mc)==0) /*若产品名称相同则按金额从大到小进行排列*/if(sell[i].je〈sell[j].je) { xy=sell[i];sell[i]=sell[j];sell[j]=xy;} }void SortDat()\r\n {\r\n int i,j;\r\n PRO xy;\r\n for(i=0;i〈MAX-1;i++)\r\n for(j=i+1;j〈MAX;j++)\r\n if(strcmp(sell[i].mc,sell[j].mc)<0) /*按产品名称从大到小进行排列*/\r\n {\r\n xy=sell[i];\r\n sell [i]=sell[j];\r\n sell[j]=xy;\r\n }\r\n else if(strcmp(sell[i].mc,sell[i].mc)==0) /*若产品名称相同,则按金额从大到小进行排列*/\r\n if(sell[i].je〈sell[j].je)\r\n {\r\n xy=sell[i];\r\n sell[i]=sell[j];\r\n sell[j]=xy;\r\n }\r\n } 解析:本题是有关结构体数组的排序问题。

可以用选择法来实现,即用第一个元素的产品名称依次和它后面的元素的产品名称进行比较,如果发现当前元素的产品名称比后面的某个元素的产品名称的对应位置的字符的ASCII码小(这里用到了字符串比较函数strcmp()),则交换这两个元素的位置,继续和后面的其他元素进行比较,最终在第一个元素中存放的是产品名称最大的元素。

以此类推,就实现了从大到小排序的功能。

注意:这里要进行交换的是两个结构体变量,而不是它们的某一个域,因此,要借助第三个结构体变量来充当中间容器。

若发现产品名称是相同的,则要按照金额从大到小进行排序。

相关文档
最新文档