在c++中2^3在菱形abcd中ab等于4多少

C++中实现ping功能3
我的图书馆
C++中实现ping功能3
三、使用Win API调用ICMP.DLL实现、在这里需要注意的一点是,Windows平台实现ping功能,如果需要使用到函数,需要涉及到两个动态库Icmp.dll和Iphlpapi.dll。另外随着IP6的使用,如果业务上涉及到这一块,也应该要留意。常用的函数有三个:IcmpCreateFile、IcmpSendEcho、IcmpCloseHandle。具体使用见下实例。123456789101112131415161718192021void&Ping(char&*pIPAddr){HANDLE&iHiHwnd=IcmpCreateFile();IPAddr pApAddr=(IPAddr)inet_addr (pIPAddr);icmp_echo_reply pDfor(int&i=1;i&=LoopSi++){IcmpSendEcho(iHwnd,pAddr,NULL,0,NULL,(LPVOID)&pData,sizeof(icmp_echo_reply),0);if&(pData.Status==0){printf("Ping测试返回的结果: Time=%dms TTL=%d \n",(int)pData.RoundTripTime,(int)pData.Options.Ttl);}else{printf("Ping测试失败...\n");}}if&(!IcmpCloseHandle(iHwnd))&printf("Close handle has Error!\n");}&你可能会发现,用IcmpSendEcho 测试 127.0.0.1的时候,ICMP_ECHO_REPLY.RoundTripTime 会等于0&其实,这个函数是没有出错的,即使用Ping 127.0.0.1也是可以的那么应该怎么去判断这个函数出错呢?用 ICMP_ECHO_REPLY.Status 来获得测试状态(记住,当Status为0的时候,函数是正确运行的)&常量名值含义IP_SUCCESS0状态是成功。IP_BUF_TOO_SMALL11001答复缓冲区太小。IP_DEST_NET_UNREACHABLE11002目标网络不可达。IP_DEST_HOST_UNREACHABLE11003目标主机不可达。IP_DEST_PROT_UNREACHABLE11004目的地的协议是遥不可及。IP_DEST_PORT_UNREACHABLE11005目标端口不可达。IP_NO_RESOURCES11006IP资源不足是可用的。IP_BAD_OPTION11007指定了错误的IP选项。IP_HW_ERROR11008一个硬件错误。IP_PACKET_TOO_BIG11009包太大。IP_REQ_TIMED_OUT11010请求超时。IP_BAD_REQ11011一个坏的请求。IP_BAD_ROUTE11012一个糟糕的路线。IP_TTL_EXPIRED_TRANSIT11013在传输过程中的生存时间(TTL)的过期。IP_TTL_EXPIRED_REASSEM11014在碎片重组过程中的生存时间过期。IP_PARAM_PROBLEM11015一个参数的问题。IP_SOURCE_QUENCH11016数据报到达太快,处理和数据报可能被丢弃。IP_OPTION_TOO_BIG11017一个IP选项是太大了。IP_BAD_DESTINATION11018一个坏的目的地。IP_GENERAL_FAILURE11050一般故障。这个错误可以返回一些畸形的ICMP数据包&&要了解Ping的原理,我们先来了解下ping命令的使用通过发送“网际消息控制协议 (ICMP)”回响请求消息来验证与另一台 TCP/IP 计算机的 IP 级连接。回响应答消息的接收情况将和往返过程的次数一起显示出来。Ping 是用于检测网络连接性、可到达性和名称解析的疑难问题的主要 TCP/IP 命令。语法ping [-t] [-a] [-n Count] [-l Size] [-f] [-i TTL] [-v TOS] [-r Count] [-s Count] [{-j HostList | -k HostList}] [-w Timeout] [TargetName]-t指定在中断前 ping 可以持续发送回响请求信息到目的地。要中断并显示统计信息,请按 CTRL-BREAK。要中断并退出 ping,请按 CTRL-C。-a指定对目的地 IP 地址进行反向名称解析。如果解析成功,ping 将显示相应的主机名。-n Count指定发送回响请求消息的次数。默认值为 4。-lSize指定发送的回响请求消息中“数据”字段的长度(以字节表示)。默认值为 32。size 的最大值是 65,527。-f指定发送的回响请求消息带有“不要拆分”标志(所在的 IP 标题设为 1)。回响请求消息不能由目的地路径上的路由器进行拆分。该参数可用于检测并解决“路径最大传输单位 (PMTU)”的故障。-i TTL指定发送回响请求消息的 IP 标题中的 TTL 字段值。其默认值是是主机的默认 TTL 值。对于 Windows XP 主机,该值一般是 128。TTL 的最大值是 255。-v TOS指定发送回响请求消息的 IP 标题中的“服务类型 (TOS)”字段值。默认值是 0。TOS 被指定为 0 到 255 的十进制数。-r Count指定 IP 标题中的“记录路由”选项用于记录由回响请求消息和相应的回响应答消息使用的路径。路径中的每个跃点都使用“记录路由”选项中的一个值。如果可能,可以指定一个等于或大于来源和目的地之间跃点数的 Count。Count 的最小值必须为 1,最大值为 9。-s Count指定 IP 标题中的“Internet 时间戳”选项用于记录每个跃点的回响请求消息和相应的回响应答消息的到达时间。Count 的最小值必须为 1,最大值为 4。-jPath指定回响请求消息使用带有 HostList 指定的中间目的地集的 IP 标题中的“稀疏资源路由”选项。可以由一个或多个具有松散源路由的路由器分隔连续中间的目的地。主机列表中的地址或名称的最大数为 9,主机列表是一系列由空格分开的 IP 地址(带点的十进制符号)。-k HostList指定回响请求消息使用带有 HostList 指定的中间目的地集的 IP 标题中的“严格来源路由”选项。使用严格来源路由,下一个中间目的地必须是直接可达的(必须是路由器接口上的邻居)。主机列表中的地址或名称的最大数为 9,主机列表是一系列由空格分开的 IP 地址(带点的十进制符号)。-w Timeout指定等待回响应答消息响应的时间(以微妙计),该回响应答消息响应接收到的指定回响请求消息。如果在超时时间内未接收到回响应答消息,将会显示“请求超时”的错误消息。默认的超时时间为 4000(4 秒 )。TargetName指定目的端,它既可以是 IP 地址,也可以是主机名。/?在命令提示符显示帮助。&&每个ICMP报文都有自己的格式,但它们开始的三个字段都是一样的:一个8位的报文类型(type)用来标识报文,一个8位的代码(code)用来 提供有关类型的进一步信息,一个16位的校验和(checksum)。(ICMP采用和IP相同的校验和算法,但ICMP校验和只覆盖ICMP报文)。这 里我们给出ICMP报文首部的数据结构:struct ICMPHEADER{&&& BYTE&& i_&&&& &&&&&&&&&&// 类型&&& BYTE&& i_&&&&&&&&&&&&&& // 代码&&& USHORT i_&&&&&&&&&&&&& // 首部校验和&&& USHORT i_&&&&&&&&&&&&&&&& // 标识&&& USHORT i_&&&&&&&&&&&&&&& // 序列号&&& ULONG&&&&&&&&&&&& // 时间戳(选用)};下表表示了ICMP的报文类型及其含义:TYPECODEDescriptionQueryError00Echo Reply——回显应答(Ping应答)x&30Network Unreachable——网络不可达&x31Host Unreachable——主机不可达&x32Protocol Unreachable——协议不可达&x33Port Unreachable——端口不可达&x34Fragmentation needed but no frag. bit set——需要进行分片但设置不分片比特&x35Source routing failed——源站选路失败&x36Destination network unknown——目的网络未知&x37Destination host unknown——目的主机未知&x38Source host isolated (obsolete)——源主机被隔离(作废不用)&x39Destination network administratively prohibited——目的网络被强制禁止&x310Destination host administratively prohibited——目的主机被强制禁止&x311Network unreachable for TOS——由于服务类型TOS,网络不可达&x312Host unreachable for TOS——由于服务类型TOS,主机不可达&x313Communication administratively prohibited by filtering——由于过滤,通信被强制禁止&x314Host precedence violation——主机越权&x315Precedence cutoff in effect——优先中止生效&x40Source quench——源端被关闭(基本流控制)&&50Redirect for network——对网络重定向&&51Redirect for host——对主机重定向&&52Redirect for TOS and network——对服务类型和网络重定向&&53Redirect for TOS and host——对服务类型和主机重定向&&80Echo request——回显请求(Ping请求)x&90Router advertisement——路由器通告&&100Route solicitation——路由器请求&&110TTL equals 0 during transit——传输期间生存时间为0&x111TTL equals 0 during reassembly——在数据报组装期间生存时间为0&x120IP header bad (catchall error)——坏的IP首部(包括各种差错)&x121Required options missing——缺少必需的选项&x130Timestamp request (obsolete)——时间戳请求(作废不用)x&14&Timestamp reply (obsolete)——时间戳应答(作废不用)x&150Information request (obsolete)——信息请求(作废不用)x&160Information reply (obsolete)——信息应答(作废不用)x&170Address mask request——地址掩码请求x&180Address mask reply——地址掩码应答&&&言必信,行必果。欢迎访问我的博客。
TA的最新馆藏
喜欢该文的人也喜欢cin>>___________;};(6)以下程序按2行3列输出二维数组,请填空;#includevoidmain(){;intb[2][3]={1,2,3,4,5,6};for(j=0;_________;j++);cout;}};(7)下列函数的功能是:将数组a中n个元素逆序存;voidinvert(inta[],intn){;inti=0,j=n-1
cin>>___________; } (6)以下程序按2行3列输出二维数组,请填空。 #include void main() { int b[2][3]={1,2,3,4,5,6},i,j; for(i=0; _________;i++) { for(j=0; _________;j++) cout<<b[i][j]<< \ \_________; } } (7)下列函数的功能是:将数组a中n个元素逆序存放,请填空。 void invert(int a[],int n) { int i=0,j=n-1; while( _________) {
________; a[j]=t; i++; _________; } } (8)已知整数数组b[2][5]={{7,15,2,8,20},{12,25,37,16,28}},求数组中所有元素的最大值,请填空。 #include
void main( ) { int b[2][5]= _______________;
int i,j,c,d,k=0;
for(i=0;i<2;i++)
for(j=0; ________;j++)
if(b[i][j]>k)
{ ___________; c=i; d=j; }
cout<<\} 参考答案: (1)0,7 (2)12,float (3)按行优先顺序存放 (4)int a[5]={0,0,0,0,0};或int a[5]={0};或static int a[5]; (5)a[i] (6)i<2,j<3,cout<< (7)i<=j,a[i]=a[j],j― (8){{7,15,2,8,20},{12,25,37,16,28}},j<5,k=b[i][j] 2.选择题 (1)C++中引用数组元素时,其数组下标的数据类型允许是(
)。 A. 整型表达式
B. 整型常量
C. 整型常量或整型表达式
D. 任何类型的表达式 (2)下列对一维整型数组a的正确说明是(
)。 A. int a(10);
B. int n=10,a[n];
D. #define SIZE 10;
int a[SIZE];
int a[n]; (3)下列数组说明和初始化正确的是(
)。 A. int a[5]=0;
B. int b[3]={1,2,3,4}; C. float c[ ]={1,2,3};
D. float d={5.3,6.0}; (4)下列数组说明和初始化错误的是(
)。 A. int a[2][3]={1,2,3,4,5,6};
B. int b[ ][3]={2,3,4,5}; C. int c[3][2]={{1},{2},{3}};
D. float d[3][ ]={5.3,6.0,6.8}; (5)若有以下定义,则对a数组元素错误的引用是(
int a[5]={1,2,3,4,5}; A. a[0]
C. a[a[4]-2]
D. a[5] (6)若有以下定义,则数组元素a[3]的值是(
int a[5]={1,2,3}; A. 0
D. 3 (7)若有以下定义,则对a数组元素正确的引用是(
float a[2][3]={1,2,3,4,5,6}; A. a[1]
B. a[0][3]
C. a[2][2]
D. a[1][1] (8)若有以下定义,则数组元素b[2][2]的值是(
int b[ ][3]={{1},{2,3},{4,5,6},{7}}; A. 0
D. 6 (9)下列对字符数组s初始化错误的是(
)。 A. char s[5]={\
B. char s[5]={ 'a', 'b', 'c'};
C. char s[5]= \
D. char s[5]=\(10)对两个数组a和b进行初始化: char a[ ]=\char b[ ]= {'a', 'b', 'c','d', 'e'}; 则下列叙述正确的是(
)。 A . a与b完全相同
B. a与b长度相同 C. a与b中都存放字符
D. a数组比b数组长度长 (11)若有以下定义,则对字符串的操作错误的是(
)。 char s[10]= \A. strcpy(s,t)
B. cout<>t; (12)下列程序的运行结果是(
D. 8 #include
int fun(char s[]) {
int i=0; while(s[i])
i++; } void main( ) { cout<<fun(\} (13)下列程序的运行结果是(
)。 A. ABC123
D. 123ABCde #include
void main( ) { char s1[10]= \cout<<strcat(s2,strcpy(s1,s3))<< } 参考答案: (1)C
结构体和共用体 1.填空题 (1)通常定义结构体变量可采用3种形式,即_________定义、_________定义和_________定义。 (2)用于访问一个结构体变量中的某个结构体成员要用_______运算符。 (3)因为共用体成员采用_______技术,因此,每一时刻共用体变量只有一个成员起作用,其他的成员不起作用。 (4)下列程序的输出结果为_________。 #include struct abc {
}; void main() {
abc a={'B',98.5};
cout<<a.c<<\} (5)函数caculate的功能是:计算45名学生4门课的平均分,请填空。 #include const int m=4; const int n=45; struct student {
char name[12];
float score[m];
//m门课的成绩
//平均分 }stu[n]={{0}}; void caculate(student s[],int n) {
for(i=0;i<n;i++)
sum=_________;
for(j=0;i<m;j++)
sum=__________________;
_________=sum/m;
} } void main() {
student pers[n]; …
stdave(pers,n); … } (6)下面程序的运行结果为_________。 #include
struct flower {
char name[20];
char color[10];
}mudan={110245,\牡丹\void main() {
cout<<mudan.num<<'\\t'<<mudan.name<<'\\t'<<mudan.color<<'\\t'<<mudan.price<< } 参考答案: (1)直接定义,间接定义,无名定义 (2)成员 (3)覆盖 (4)B,98.5 (5)0
sum+s[i].score[j]
s[i].ave (6)110245
12 2.选择题 (1)以下关于结构体的叙述错误的是(
)。 A. 结构体是用户定义的一种数据类型 B. 结构体中可设定若干个不同类型的数据成员 C. 结构体中成员的数据类型可以是另一个已定义的结构 D. 在定义结构体时,可以为成员设置默认值 (2)若有以下定义,下列说法错误的是(
)。 struct ex {
} A. struct是结构体的关键字
B. example是结构体名
C. a,b,c是结构体成员名
D. example是用户声明的结构体变量 (3)下列结构体的定义正确的是(
student struct
student { {
name[10]; }; } C.
student struct
student { {
(4)若有以下定义,则结构体变量初始化正确的是(
)。 struct st 三亿文库3y.uu456.com包含各类专业文献、应用写作文书、幼儿教育、小学教育、专业论文、中学教育、外语学习资料、行业资料、70C++练习2等内容。 
 2015c++试题2_IT认证_资格考试/认证_教育专区。一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中 只有一个是符合题目要求的,...  C++练习题2答案_IT认证_资格考试/认证_教育专区。填空题 1. 根据访问权限的不同,可将类的成员分为三类___公有___ 、__私有___ 和__保护___。 2.静态...  C++习题2_IT认证_资格考试/认证_教育专区。习题 2 第一题 选择: 1、 下面的程序输出结果是什么? int i=2,sum=0; while(i&=5){ sum=sum+i; i=i+1...  29页 免费 c++习题-2 7页 免费 C++编程练习题 5页 1财富值如要投诉违规内容,请到百度文库投诉中心;如要提出功能问题或意见建议,请点击此处进行反馈。 ...  C++课堂练习2_理学_高等教育_教育专区。C++课堂练习2 1.在面向对象的程序设计中,将一组对象的共同特性抽象出来形成 ___类___。 2.下面说法错误的是( )。...  C + +程序设计单元练习卷 2(第 1 - 7 章) 一。填空题: 1.C++语言的标识符只能由字母开头后跟字母、数字和 。。 2. 已知字母 A 的 ASCII 码为 65, ...  C++练习题2_IT认证_资格考试/认证_教育专区。Chapter5 练习作业: 1) /* * 分别用三种循环语句完成从 1 到 n 的 n 个自然数的累加。1+2+3+4+5…+n=...  C++练习题2_IT认证_资格考试/认证_教育专区。填空题 1. 根 据访问权限的不同,可将类的成员分为三类 ___ 、 ___ 和 ___。 2. 静态函数成员可直接引用...C++中的^运算符是什么意思,请举例_百度知道
C++中的^运算符是什么意思,请举例
我有更好的答案
位异或。相同为0 不同为1;如
0x1001 ^ 0x0001结果: 0x1000
采纳率:73%
来自团队:
为您推荐:
其他类似问题
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。怎么用c++求2的i次方_百度知道
怎么用c++求2的i次方
区分结果精度要求,以及数据规模,有如下两种情况:1 当数据规模被限定,非负整数,且结果要求准确值时,可以用整型进行计算。(1) 依照数学定义进行计算。int&pow_2(int&i){&&&&int&r&=&1;&&&&while(i&--)&r*=2;//将2自乘i次,得到2的i次方。&&&&&&&&return&r;}(2) 由于2的特殊性,可以转为移位方式,计算结果。int&pow_2(int&i){&&&&return&1&&i;//将一个数左移一位,在没有溢出的情况下,等效于乘2。于是2的i次方就是1&&i。该方法更高效。&&&&}2 当数据规模偏大,整型会溢出时,需要用浮点型存储。如果i为负数,或浮点型数,那么同样需要浮点型存储。这时需要使用数学函数pow。double pow(double x, double y);声明与math.h, 功能为求x的y次方。于是2的y次方可以写作pow(2,i);
软件工程师
如果i&31或者i为小数。结果也是无符号整数的话,结果只能表示到2的31次方,那么2的i次方用下面的方法求:#include &math.h&gt,最快的算法就是1&lt2的i次方,如果i是个无符号整数的话;i;double d=pow(2,i);&lt
int i,j=0;cin&&i;for(j=0;j&i;j++)i*=2;cout&&i&&
先引入头文件math.h再用下面的函数求pow(2,i)
2的i次方就是 1&&i,int k=1&&i; i不要太大,用unsigned __int64的变量存储,最大为64。
a=1;for(j=0;j&i:j++)a=2*a;printf(&2的I次方是:%d&,a);
其他3条回答
为您推荐:
其他类似问题
次方的相关知识
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。在c++中如何 计算2^1,2^2,……,2^n的值_百度知道
在c++中如何 计算2^1,2^2,……,2^n的值
我有更好的答案
&nbsplong myPower (int x, int y) {//计算x^y&&&&&&&& i&&y;&&&if (y&0) return 0;&&&&ret = 1;&&&&for (i=0;}没有上机调试过;&&}&&&& i++) {&&&&&&&&ret *=&nbsp
采纳率:65%
1 && n // 代表 2^n
power函数啊。。。需要引用头文件#include &cmath&例如power(2,n)=2^n
用for循环怎么写
我就写核心代码了,具体定义你自己写吧。。pow_2=1 for(i=1;i&=n;i++){
pow_2=2*pow_2}
为您推荐:
其他类似问题
您可能关注的内容
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 在角abc中ab等于ac 的文章

 

随机推荐