【2023年】河南省漯河市全国计算机等级考试网络技术测试卷(含答案)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【2023年】河南省漯河市全国计算机等级考试网络技术测试卷(含答案) 学校:________ 班级:________ 姓名:________ 考号:________
一、单选题(10题)
1.S/Key协议属于( )的内容。
A.个人持证
B.口令机制
C.数字签名
D.笔迹识别
2. 如果没有特殊声明,匿名FTP服务登录账号为________。
er
B.anonymous
C.guest
D.用户自己的电子邮件地址
3.电子邮件的地址格式是( )。
A.用户账号.邮件服务器域名
B.用户账号@邮件服务器城名
C.邮件服务器域名@用户账号
D.用户账号@用户计算机名
4.我国是在()年出现第一例计算机病毒。
A.1980
B.1983
C.1988
D.1977
5.正向查找区域用于将域名解析为IP地址,在Windows Server 2003系统中可以测试域名到IP地址解析功能的命令是()。
A.ipconfig
stat
C.tracert
D.ARP
6.Internet中有一种非常重要的设备,它是网络与网络之间相互连接的桥梁,这种设备是( )。
A.客户机
B.路由器
C.服务器
D.主机
7.OSI参考模型中,负责在两个相邻节点间的线路上无差错地传送以帧为单位的数据的是()。
A.物理层
B.数据链路层
C.网络层
D.传输层
8.下列关于ICMP的描述中,错误的是()。
A.IP包的TTL值减为O时路由器发出“超时”报文
B.收到“Echo请求”报文的目的节点必须向源节点发出“Echo应答”报文
C.ICMP消息被封装在TCP数据包内
D.数据包中指定的目的端口在目的节点无效时,源节点会收到一个“目标不可达”报文
9.攻击者将一个包的源地址和目的地址都设置成目标主机的地址,然后将该包通过IP欺骗的方式发送给被攻击主机,这种攻击方式叫()。
A.SYNFlood
B.Smurf
nd-based
D.Teardrop
10.若服务器系统可用性达到99.99%,那么每年的停机时间必须小于()
A.4分钟
B.10分钟
C.53分钟
D.106分钟
二、填空题(10题)
11.(3)在TCP/IP协议集中,TCP协议和UDP协议运行于开放系统互联参考模型中的____层。
12. X-Scanner运行在Windows平台下,它主要针对Windows NT/Windows 2000/Windows xP操作系统的安全进行全面细致评估,可
以扫描出很多Windows系统流行的漏洞,并详细地指出安全的脆弱环节与________措施。
13.
第62 题从被管理设备中收集数据有两种方法:轮询法和基于中断法,将两者结合起来的___________ (Trap—directed Polling)是执行网络管理最有效的方法。
14. 对于复杂的计算机网络协议最好的组织方式是层次结构模型。
我们将计算机网络层次结构模型和各层协议的集合定义为【】。
15.(10)UNIX提供了功能强大的可编程语言________ 。
16.IEEE标准定义了CSMA/CD总线介质访问控制子层与物理层的规范。
17.某端口的IP地址为172.16.7.131/26,则该IP地址所在网络的广播地址是万个信元。
18.
19. 以太网MAC地址的长度为______位。
20.
三、2.填空题(8题)
21. 局域网从介质访问控制方法的角度可以分为两类:共享介质局域网与______局域网。
22. 浏览器通常由一系列的客户单元、一系列的【】单元和一个控制单元组成。
23. IPTV包括三个基本业务,分别是______、直播电视和时移电视。
24. 在HFC网络传输结构中,从有线电视中心至用户区域的结点之间使用以【】作为传输介质。
25. 无线传输有着显而易见的诸多优点,目前已广泛应用于通信领域,其中最常见的无线信道有微波、红外线和【】。
26. 公钥密码体制有两种基本的模型:一种是加密模型,另一种是______。
27. Web最吸引入的地方就是它的简单,它的工作可分为4个基本阶段:连接、请求、应答和【】。
28. TCP协议是一种可靠的面向连接的协议,它允许将一台主机的【】无差错地传送到目的主机。
四、C语言程序设计题(2题)
29.函数readDat是从文件in.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。
请编制函数jsSort,其函数的功能是:以行为单位对字符串按下面给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数writeDat把结果xx输出到文件out.dat中。
条件:字符串从中间一分为二,左边部分按字符的ASCII值降序排序,右边部分按字符的ASCII值升序排序。
如果原字符串长度为奇数,则最中间的字符不参加排序,字符仍放在原位置上。
注意:部分源程序存在test.c文件中。
请勿改动数据文件in.dat中的任何数据、主函数main、读函数readDat 和写函数writeDat的内容。
30. 函数readDat是从文件in.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。
请编制函数jsSort,其函数的功能是:以行为单位对字符串按下面给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数writeDat把结果xx输出到文件out.dat中。
条件:字符串从中间一分为二,左边部分按字符的ASCII值降序排序,右边部分不作处理,排序后,左边部分与右边部分按例子所示进行交换。
如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。
注意:部分源程序存在test.c文件中。
请勿改动数据文件in.dat中的任何数据、主函数main、读函数readDat 和写函数writeDat的内容。
五、1.选择题(3题)
31. FDDI数据传输速率为( )。
A.1Gb/s
B.10Mb/s
C.100Mb/s
D.10Gb/s
32. 局域网参考模型将对应于OSI参考模型的数据链路层划分为MAC 子层与( )。
A.LLC子层
B.PMD子层
C.接入子层
D.汇聚子层
33. 在因特网电子邮件系统中,电子邮件应用程序( )。
A.发送和接收邮件都使用SMTP
B.发送邮件通常使用POP3,而接收通常使用SMTP
C.发送邮件通常使用SMTP,而接收通常使用POP3
D.发送和接收邮件通常都使用POP3和IMAP
六、1.程序设计题(3题)
34. 函数ReadDat()的功能是实现从文件IN32.DAT中读取一篇英文文章存入到字符串数组xx中。
请编数StrOR(),该函数的功能是:以行为单位把字符串中所有小写字母。
左边的字符串内容移至该串的右边
存放,然后把小写字母。
删除,余下的字符串内容移到已处理字符串的左边存放,最后把已处理的字符串仍按行重新存入字符串数组xx中。
最后调用函数WriteDat()把结果输出到文件OUT32.DAT中。
例如, 原文: You can create an index on any field
you have the correct record
结果: n any field Yu can create an index
rd yu have the crrect rec
原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格.
注意:部分源程式序已给出
请勿改动主函main(),读函数ReadDat( )和写函数WriteDat( )的内容。
试题程序:
#include<stdio. h>
# include<string, h>
# include<conio, h>
char xx[50] [80];
int maxline=0;
int ReadDat (void);
void WriteDat (void);
void StrOR (void)
{
}
void main ()
{
clrscr ( );
if (ReadDat ())
{
printf ("数据文件IN32.DAT 不能打开!\n\007"); return;
}
StrOR ();
WriteDat ();
}
int ReadDat (void)
{
FILE *fp;
iht i=0;
char *p;
if ((fp=fopen("IN32.DAT","r"))==NULL) return 1; while (fgets (xx [i], 80, fp) !=NULL)
{
p=strchr (xx [i], ' In' );
if (p) *p=0;
i++;
}
maxline=i;
fclose (fp);
return 0;
}
void WriteDat (void)
{
FILE *fp;
int i;
clrscr ();
fp=fopen ( "OUT32. DAT", "w" );
for (i=0;i {
printf ("%s\n", xx [i] );
fprintf (fp, "%s\n", xx[i] );
}
fclose (fp);
}
35. 编写一个函数findStr(),该函数统计一个长度为2的字符串在另一个字符串中出现的次数。
例如,假定输入的字符串为"asd asasdfg asd as zx67 asd mklo",子字符串为“as”,函数返回值是6。
函数ReadWrite()的功能是实现从文件in40.dat中读取两个字符串,并调用函数findStr(),最后把结果输出到文件out40.dat中。
注意:部分源程序已给出。
请勿改动主函数main()和其他函数中的任何内容,仅在函数findStr()的花括号中填入你所编写的若干语句。
试题程序:
#include<stdio.h>
#include<string.h>
#include<conio.h>
int findStr(char *str,char *substr)
{
}
main ( )
{
char str[81],substr[3];
int n;
clrscr ( );
printf("输入原字符串:");
gets (str);
printf("输入子字符串:");
gets (substr);
puts (str);
puts (substr);
n=findStr (str, substr);
printf ("n=%d\n", n);
ReadWrite ();
}
ReadWrite ( )
{
char ch, str[81],substr[3];
int n, len, i=0;
FILE *rf,*wf;
rf=fopen ("in40.dat", "r");
wf=fopen ( "out40.dat", "w");
while (i<5)
{
fgets(str, 80,rf);
fgets(substr, 10,rf);
len=strlen (substr)-1;
ch=substr [len];
if(ch=='\n'||ch==0x1a)
substr [len]=0;
n=findStr (str, substr);
fprintf (wf,"%d\n", n);
i++;
}
fclose(rf);
fclose(wf);
}
36. 对10个候选人进行选举,现有一个100条记录的选票文件IN84.DAT,其数据存放格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依此类推。
每
一位候选人的记录内容均为字符0或1,1表示此人被选中,0表示此人未被选十,若一张选票选中人数大于5个人时被认为无效的选票。
给定函数ReadDat()的功能是把选票数据读入到字符串数组xx中。
请编制函数CoutRs()来统计每个人的选票数并把得票数依次存入yy[0]到yy[9]中,最后调用函数WriteDat()把结果yy输出到文件OUT84.DAT中。
注意:部分源程序已给出。
请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。
试题程序:
#include<stdio.h>
char xx[100] [11];
int yy[10];
int ReadDat (void);
void WriteDat(void);
void CoutRs(void)
{
}
void main()
{
int i;
for(i=0;i<10;i++)
yy[i] =0;
if (ReadDat ())
{
printf ("数据文件IN84 .DAT不能打开! \n\007");
return;
}
CoutRs ();
WriteDat ();
}
int ReadDat (void)
{
FILE *fp;
int i;
char tt[13];
if ( (fp=fopen ("IN84 .DAT", "r") ) ==NULL) return 1;
for (i=0; i<lO0; i++)
{
if(fgets(tt,13,fp)==NULL) return 1;
memcpy(xx[i],tt,10);
xx[i] [10]=0;
}
fclose(fp);
return 0;
}
void WriteDat()
{
FILE *fp;
int i;
fp=fopen ("OUT84. DAT", "w");
for (i=0; i<10; i++)
{
fprintf (fp, "%d\n", yy [i] );
printf ("第%d个人的选票数=%d\n", i+1, yy [i] );
}
fclose (fp);
}
参考答案
1.B解析:S/Key协议属于口令机制。
它运行于客户机/服务器环境中,
是基于MD4和MD5的一次性口令生成方案。
2.B文件传输协议(File Transfer Protocal,FTP),是指在因特网上的两台计算机之间传送文件的一种服务方式。
文件传输也是因特网上使用较早的服务之一,今天仍然广为使用。
通过将文件从本地计算机传送到远程主机的过程称为“上载(Upload)”,而将从远程主机取回文件存放在本地计算机中的过程称为“下载(Download)”。
无论因特网上两台计算机相距多么遥远,只要支持FTP 文件传送协议,就可使用此项服务。
文件传递是一种实时联机服务,在文件传送之前须取得远程计算机的授权并进行登录。
因特网上提供FTP服务的计算机一般都支持匿名访问,它允许用户以“anonymous”作为用户名,以自己的E-mail地址作为口令,这样就可登录到支持FTP的计算机上,下载其公共数据文件。
3.B
4.C
5.Cipconfig命令显示当前TCP/IP网络配置。
netstat命令显示活动的TCP连接、侦听的端口、以太网统计信息、IP路由表和IP统计信息。
tracert命令通过发送包含不同TTL的ICMP报文并监听回应报文,来探测到达目的的计算机的路径。
一般情况下,发送TTL报文前,将域名解析成IP地址,然后在发送TTL报文。
ARP(Address Resolution Protocol,地址解析协议)是获取物理地址的一个TCP/IP协议。
故选择C选项。
6.B
7.B
8.CICMP消息封装在IP数据包内而非TCP数据包内。
因此C选项错
误。
9.C
10.C1-停机时间(单位是小时)/(365×24)×100%=服务器可用性百分比,其中365指的是365天,24是每天24小时。
代入公式1-x/(365×24)×100%=99.99%,得0.876小时,即如果要保证服务器系统可用性达到99.99%,系统每年的停机时间要小于0.876小时。
4分钟约是0.067小时,10分钟约是O.1666/b时,53分钟约是0.883小时。
因此选项C最接近0.876小时,故选C选项。
11.传输【解析】在lP互联中,传输控制协议(TCP)和用户数据报协议(UDP) 是传输层最重要的两种协议,它们为上层用户提供不同级别的通信可靠性。
12.\n弥补或补救
\n
13.陷入制轮询法
【解析】从被管理设备中收集数据有两种方法:一种是轮询方法,另一种是基于中断的方法。
将以上两种方法结合的陷入制导轮询方法可能是执行网络管理最有效的方法。
14.网络体系结构或计算机网络体系结构网络体系结构或计算机网络体系结构解析:计算机网络采用层次结构,各层之间互相独立,每一层又实现了相对独立的功能。
15.(10) Shell
【解析】UNIX提供了功能强大的可编程语言Shell,即外壳语言。
16.802.3IEEE 802委员会为局域网制定了一系列标准,统称为IEEE 802标准。
— IEEE 802.1标准,包括局域网体系结构、网络互连以及网络管理与性能测试。
— IEEE 802.2标准,定义了逻辑链路控制(LLC)子层的功能与服务。
— IEEE 802.3标准,定义了CSMA/CD总线介质访问控制子层与物理层的规范。
— IEEE 802.4标准,定义了令牌总线(Token Bus)介质访问控制子层与物理层的规范。
— IEEE 802.5标准,定义了令牌环(Token Ring)介质访问控制子层与物理层的规范。
— IEEE 802.6标准,定义了城域网(MAN)介质访问控制子层与物理层的规范。
— IEEE 802.7标准,定义了宽带技术的规范。
— IEEE 802.8标准,定义了光纤技术的规范。
— IEEE 802.9标准,定义了综合语音与数据局域网的规范。
— IEEE 802.10标准,定义了可互操作的局域网安全性规范。
— IEEE 802.11标准,定义了无线局域网技术的规范。
17.172.16.7.191IP地址为172.16.7.131/26,可知该IP地址所在网络的地址为172.16.7.128。
它由一个B类网络172.16.0.0划分而来,同时划分出了个网络,分别是172.16.0.64、172.16.0.128……将该子网号转换成二进制表示,形式为10101100.00010000.00000111.10000011。
其中,前26位为网络标识,后6位为主机标识。
由于广播地址的主机号全为1,所以将该子网号的后6位全置为1,可以得到十进制广播地址为
172.16.7.191。
18.
19.48位48位解析:MAC地址又叫硬件地址或以太网的物理地址,一般用12个十六进制数表示,长度为48位(6字节)。
例如,00-06-80-A3-BD-67(数字中不能有比F大的数),每个生产厂商分配以太网的前3个字节(即公司标识)。
20.地理
【解析】Internet规定了一组正式的通用标准标号,形成了国际通用顶级域名。
顶级域名的划分采用组织模式和地理模式。
21.交换式交换式解析:局域网从介质访问控制方法的角度可以分为两类:共享介质局域网与交换式局域网。
22.解释解释解析:本题的考查点是浏览器的组成。
浏览器通常由一系列的客户单元、一系列的解释单元和一个控制单元组成。
控制单元是浏览器的核心,负责协调、管理客户单元和解释单元。
客户单元接收和执行从键盘和鼠标上传来的用户指令。
解释单元负责相关的解释工作,如HTML解释器负责解释由服务器发来的页面文件。
23.视频点播视频点播解析:IPTV的主要特点是交互性和实时性,三个基本业务包括视频点播,直播电视,时移电视。
24.光纤光纤解析:光纤/同轴电缆混合网HFC的传输结构由光纤和同轴电缆组成。
在有线电视中心至用户区域的光纤结点之间使用有源光纤,而从光纤结点至用户家中使用750MHz同轴电缆。
HFC利用同轴电缆
高达1GHz的带宽,采用“副载波频分”方式,将数据加载到某个电视频道,经同轴电缆传送到用户家中。
25.激光激光解析:微波、红外线和激光是最常见的无线信道。
26.认证模型认证模型
27.关闭关闭解析:Web的工作过程可分为4个基本阶段:连接、请求、应答和关闭。
Web客户程序提出与某服务器连接,若连接失败,则什么也不做,同时显示一行错误信息;若连接成功,则开始下一阶段。
浏览器向服务器发出请求,包含指定的协议(如Http、Ftp等)、寻找的目标、用户的应答方式以及方法(Method)等。
假若服务器能满足要求,它就执行应答。
应答也指出所用的协议并完成请求所需要的服务。
上述工作完成后,拆除连接,进入关闭阶段。
这时,浏览器又进入活跃状态。
一方面它将请求获得的数据,按规定的形式显示或播放,同时准备开始下一次请求过程。
28.字节流字节流解析:TCP协议是一种可靠的面向连接的协议,它允许将一台主机的字节流无差错地传送到目的主机。
TCP协议将应用层的字节流分成多个字节段,然后将一个一个的字节段传送到互连层,发送到目的主机。
29.【审题关键句】以行为单位从字符串左边部分降序排序,右边部分升序排序。
如果原字符串长度为奇数,则最中间的字符不参加处理。
\n【解题思路】
\n①定义字符局部变量ch,整型循环变量i、j、k和表示字符串长度的变量len、P。
\n②在第一层for循环中,变量i从0开始,依次递增直到其值等于20,在循环体中,首先调用库函数strlen(xx[i])求得字符串xx[il的长度,把此值转化成整型赋给变量len,用len的值除以2,得到字符串xx[i]的长度的一半赋给变量P;在第二层for循环中,变量j从0开始,依次递增直到其值等于(p-1),在循环体中执行第三层for循环,循环变量k从j+1开始,依次递增直到其值等于P,对字符串xx[i]左半部分的子字符串中的字符xx[i][j]和xx[i][k]按照ASCII码值的大小进行比较,如果xx[i][j]的ASCII码值小于xx[i][k]的ASCII码值,则两者进行互换,实现对字符串xx[i]左半部分的子字符串按照降序排列。
然后,有if条件语句判断,len对2的余数是否等于1,如果等于1,说明字符串xx[i]的长度为奇数,则变量P加1,因为这时字符串的中间字符不参与排序。
再对字符串xx[i][j]右半部分的字符串按升序排列。
在for循环中,变量j 从P开始,依次递增直到其值等于len-1,在循环体中,执行for循环中,变量k从j+1开始,依次递增直到其值等于Ien,对字符xx[i][j]和xx[i][k]按其ASCII码值的大小进行比较,如果字符xx[i][j]的ASCII码值大于xx[i][k]的ASCII码值,则两者进行互换,实现字符串xx[i]右半部分的字符串按照升序排列。
\n【参考答案】
\n
30.【审题关键句】以行为单位从字符串左边部分降序排序,排序后左边部分与右边部分进行交换。
如果原字符串长度为奇数,则最中间的字符不参加处理。
\n【解题思路】①定义循环变量i、j、k和整型变量len、P。
\n②第一层for循环中,循环变量i从0开始,依次递增直到其值等于20,实现对20行数据的逐行处理。
在循环体中,对于i行首先调用函数strlen(xx[i])求得第i行字符串的长度,并把其值赋给变量len,再用len 除以2,得到第i行字符串长度的一半,赋给变量P。
在第二层for循环中,循环变量j从0开始,依次递过来增直到其值等于(p-1),在第三层for循环中,循环变量k从j+1开始,依次递过来增直到其值等于P,比较字符xx[i][j]ASCII码值与xx[i][k]ASCII码值的大小,如果字符xx[i][j]的ASCII码值小于xx[i][k]的ASCII码值,则两者进行互换实现对第i行字符串左半部分的字符串按降序排列。
\n③用变量len的值对2求余数,如果余数为1,则调用函数字符串拷贝函数strcpy,把从字符串xx[i]+P+1开始直到字符串xx[i]的结尾的子字符拷贝到字符串变量str中,再调用字符串连接函数stmcat把字符串xx[i]的中间字符连接到字符串变量s仃的后面,再调用字符串连接函数stmcat把字符串xx[i]的左半部分的子字符串连接到变量str的后面;如果余数不等于l,则调用字符串拷贝函数strcpy,把从字符串xx[i]+P开始直到字符串xx[i]的结尾的子字符拷贝到字符串变量str中,再调用字符串连接函数strncat把字符串xx[i]的左半部分的子字符串连接到变量str的后面,实现字符串xx[i]左右部分子字符串的交换。
\n④调用字符串拷贝函数strcpy,把字符串变量str的值拷贝到字符串xx[i],实现把排序后的结果仍按行重新存入字符串数组xx中。
\n【参考答案】
\n
31.C解析:光纤分布式数据接口(Fiber Distributed Data Interface, FDDI)是一种以光纤为传输介质的高速主干网络,它可以用来互连局域网。
数据传输速率为100Mb/s,连网的结点数小于1000个,环路长度为100km。
32.A解析:局域网参考模型只对应OSI参考模型的数据链路层和物理层,它将数据链路层划分为逻辑链路控制LLC (Logical Link Control)子层和介质访问控制MAC(Mediea Access Control)子层。
33.C解析:向邮件服务器传送邮件时使用的是SMTP,而POP3为接收协议。
34.void StrOR(void) { int I j k index strl; char ch; for (I=O; I<maxline; I++) { Strl=s'trlen (xx [ I ] ); /*求各行的长度*/ index=strl; for (j=O; j<strl; j++) /*将一行中所以小写字母o右边的字符依次向左移一位并删除字母.*/ if (xx[I] [j]=='o') { for (k=j; k xx[I] [k]=xx[I] [k+l]; xx[I] [strl-1]=' '; index=j; /*记录下最后一个o所在的位置* / } for (j=strl-1; j >=index; j--) /*最后一个o右侧的所有字符都移到已处理字符串的左边*/ ch=xx[I] [strl-1]; for (k=strl-1; k>O; k--) xx[I] [k]=xx[I] [k-l]; xx[I]
[O]=ch; } } }void StrOR(void)\r\n {\r\n int I, j, k, index, strl;\r\n char ch;\r\n for (I=O; I<maxline; I++)\r\n {\r\n Strl=s'trlen (xx [ I ] ); /*求各
行的长度*/\r\n index=strl;\r\n for (j=O; j<strl; j++) /*将一行中所以小写字母o右边的字符依次\r\n 向左移一位,并删除字母.*/\r\n\r\n if (xx[I] [j]=='o')\r\n {\r\n for (k=j; k xx[I] [k]=xx[I] [k+l];\r\n xx[I] [strl-1]=' ';\r\n index=j; /*记录下最后一个o所在的位置* /\r\n }\r\n for (j=strl-1; j >=index; j--) /*最后一个o右侧的所有字符都移到已处理字\r\n 符串
的左边*/\r\n ch=xx[I] [strl-1];\r\n for (k=strl-1; k>O; k--)\r\n xx[I] [k]=xx[I] [k-l];\r\n xx[I] [O]=ch;\r\n }\r\n }\r\n } 解析:本题考查的知识
点如下:
(1)循环结构与选择结构的嵌套使用。
(2)字符数组中的元素的移动。
(3)字符串处理函数的使用。
在本题中,以行作为字符串处理的基本单位。
首先,要确定该行字符串
的长度。
然后使用循环结构依次对字符进行处理。
先找到字符o,将o
右侧的字符依次向左移。
这个操作同时能够删除字符o。
记录下最后一
个。
所在的位置,在这个。
右侧的所有字符都要移到已处理字符串的左
边,这个过程也是使用循环来完成的。
最后,对文章中的每一行都进行
这一操作即可。
`
35.int findStr(char *strchar *substr) { int n; char *p*r; n=0; while (*str) { p=str; /*指针p指向字符串产地址*/ r=substr; /*指针r指向子字符串
首地址*/ while (*r) if (*r==*p) /*如果子字符串的第一个字符等于字符
串中的该字符则继续比较下一个字符*/ { r++; p++; } else break; /*否则
退出循环*/ if(*r=='\0') /*如果子字符串在字符串中出现了一次*/ n++;/*则n加1进行统计*/ str++;/*指向字符串中的下一个字符*/ } return n;/*返回n*/ }int findStr(char *str,char *substr)\r\n { int n;\r\n char *p,*r;\r\n n=0;\r\n while (*str)\r\n {\r\n p=str; /*指针p指向字符串产地址*/\r\n r=substr; /*指针r指向子字符串首地址*/\r\n while (*r)\r\n if (*r==*p) /*如果子字符串的第一个字符等于字符串中的该字符,则继续比较下一个字符*/\r\n { r++;\r\n p++;\r\n }\r\n else break; /*否则退出循
环*/\r\n if(*r=='\\0') /*如果子字符串在字符串中出现了一次*/\r\n n++;/*则n加1,进行统计*/\r\n str++;/*指向字符串中的下一个字符*/\r\n }\r\n return n;/*返回n*/\r\n } 解析:本题考查的知识点如下:
(1)指针的相关操作。
(2)强行退出——break的使用。
指针是C语言中的一个难点。
在这里,我们要使用指针实现对数组的访问继而进行字符的比较。
使用数组存放字符串时,存放的字符个数要比数组的容量小1,因为数组最后—个位置存放的是空格或者结束标志位。
我们可利用这一点来判断一个字符串是否已经结束。
在循环结构中常常要出现强行退出的情况,这里要使用到break语句强行退出一层循环。
当字符串中的某个字符与子字符串的第一个字符不同时,则将字符串中的下一个字符与子字符串中的第一个字符比较,而不是与子字符串中的第二个字符比较。
36.void CoutRs (void) { int i count j; char *pf; for (i=0; i<l0;i++) yy[i]=0; for (i=0; i<l00; i++) { pf=xx [i]; /*指针pf指向字符串的第一个字符*/ count=0; while (*pf) if (*pf=='1') { count++; /*统计每条记录中1的个数*/ pf++; } else pf++; if (count<=5) /*如果每条记录中1的个数小于等于5则为有效票*/ { pf=xx [i]; /*指针pf指向字符串的第一个字符*/ j=0; while (*pf) /*统计每个人的选票数并把得票数依次存入yy[0]到yy[9]中*/ if (*pf=='1') { yy[j]+=l; j++; pf++; } else if(*pf=='0') { j++; pf++; } } } }void CoutRs (void)\r\n {\r\n int i, count, j;\r\n char *pf;\r\n for (i=0; i<l0;i++)\r\n yy[i]=0;\r\n for (i=0; i<l00; i++)\r\n {\r\n pf=xx [i]; /*指针pf指向字符串的第一个字符*/\r\n count=0;\r\n while (*pf)\r\n
if (*pf=='1')\r\n {\r\n count++; /*统计每条记录中1的个数*/\r\n pf++;\r\n }\r\n else pf++;\r\n if (count<=5) /*如果每条记录中1的个数小于等于5则为有效票*/\r\n {\r\n pf=xx [i]; /*指针pf指向字符串的第一个字符*/\r\n j=0;\r\n while (*pf) /*统计每个人的选票数并把得票数依次存入yy[0]到yy[9]中*/\r\n if (*pf=='1')\r\n {\r\n yy[j]+=l;\r\n j++;\r\n
pf++;\r\n }\r\n else if(*pf=='0')\r\n {\r\n j++;\r\n pf++;\r\n }\r\n }\r\n }\r\n } 解析:本题考查的知识点如下:
(1)二维数组的操作。
(2)指向数组的指针。
在本题中,要先判断选票是否有效。
因为记录存放在一个二维数组中,为了简便我们为数组的—组元素定义一个指向该数组每一行数据的指针,例如,char*P=xx[2]。
初始时该指针指向该行的第一个元素,指针地址每加1,则指向下一个元素。
这样就可以轻松地统计每一个选票。
设一变量标记每一个选票中1的个数,若其不大于5,则选票有效。
若选票有效,则依次查看哪一个元素为1,在数组yy相应的元素上加l。
使用循环实现对所有记录的访问。