子网掩码、前缀长度、IP地址数的换算子网掩码子网掩码只有一个功能,就是将IP地址划分为网络地址和主机地址两部分。如同现实生活中的通讯地址,可以看作省市部分和具体门牌号部分。相同的IP地址,但掩码不一样,则指向的网络部分和主机部分不一样。子网掩码用来判断任意两台计算机的IP地址是否在同一个子网中的根据。如果相同,说明两台计算机在同一个子网中,可以直接通讯;按照TCP/IP协议规定,IP地址用二进制来表示,每个IP地址长32bit,比特换算成字节,就是4个字节;子网掩码的长度也是32位,左边是网络位,用二进制数字“1”表示;右边是主机位,用二进制数字“0”表示;子网掩码常用两种表示形式,一种是点分
在Lua或者Python中可以使用多值赋值语句来交换两个数。例如:a,b=b,a。在C++中有没有类似的操作?先解析一下多值赋值的原理,a,b=b,a等价于t1,t2=b,aa,b=t1,t2可以看到多值赋值还是用到了中间变量,而且还是两个。想到两个变量,可以联想到C++中的std::pair,可以用std::make_pair(b,a)构造中间变量,来完成上述第1条语句的功能。中间变量是std::pair类型。如何将std::pair的两个元素赋值给a和b?可以利用std::tie对std::pair进行unpack。示例代码如下:#include#includeintmain(){inta
在Lua或者Python中可以使用多值赋值语句来交换两个数。例如:a,b=b,a。在C++中有没有类似的操作?先解析一下多值赋值的原理,a,b=b,a等价于t1,t2=b,aa,b=t1,t2可以看到多值赋值还是用到了中间变量,而且还是两个。想到两个变量,可以联想到C++中的std::pair,可以用std::make_pair(b,a)构造中间变量,来完成上述第1条语句的功能。中间变量是std::pair类型。如何将std::pair的两个元素赋值给a和b?可以利用std::tie对std::pair进行unpack。示例代码如下:#include#includeintmain(){inta
使用引用#includeusingnamespacestd;structTime{ inth; intm; ints;};voidtimeCompute(Time&t,intsec){ //引用作为形参 t.m=t.m+(t.s+sec)/60; //分钟的进位 t.s=(t.s+sec)%60;//秒数位计算后剩余的时间 t.h=t.h+t.m/60; //小时的进位 t.m=t.m%60;//分钟位计算后剩余的时间 t.h=t.h%24;//小时位取余实现24小时制}intmain(){ intrepeat,sec; //重复次数 cin>>repeat; structTimet;//创建
使用引用#includeusingnamespacestd;structTime{ inth; intm; ints;};voidtimeCompute(Time&t,intsec){ //引用作为形参 t.m=t.m+(t.s+sec)/60; //分钟的进位 t.s=(t.s+sec)%60;//秒数位计算后剩余的时间 t.h=t.h+t.m/60; //小时的进位 t.m=t.m%60;//分钟位计算后剩余的时间 t.h=t.h%24;//小时位取余实现24小时制}intmain(){ intrepeat,sec; //重复次数 cin>>repeat; structTimet;//创建
在编写程序解决某些问题时,可以灵活地使用进位制数,例如像二进制枚举就是灵活使用二进制数。下面再讲述一些例题。1、二进制的应用【例1】至少一位数字相同问题描述给定N个正整数A1,A2,...,AN,求有多少整数对(i,j),满足以下条件:1≤i输入输入的第一行包含一个正整数N。接下来N行,每行包含一个正整数Ai。输出输出一行一个整数,表示满足条件的整数对的数目。输入样例43251123282输出样例4 (1)编程思路。 以样例为例说明。共有4组整数对满足条件。(32,123)、(32,282)、(51,123)和(123,282)。 显然,若采用二重循环两两组合来判断每
在编写程序解决某些问题时,可以灵活地使用进位制数,例如像二进制枚举就是灵活使用二进制数。下面再讲述一些例题。1、二进制的应用【例1】至少一位数字相同问题描述给定N个正整数A1,A2,...,AN,求有多少整数对(i,j),满足以下条件:1≤i输入输入的第一行包含一个正整数N。接下来N行,每行包含一个正整数Ai。输出输出一行一个整数,表示满足条件的整数对的数目。输入样例43251123282输出样例4 (1)编程思路。 以样例为例说明。共有4组整数对满足条件。(32,123)、(32,282)、(51,123)和(123,282)。 显然,若采用二重循环两两组合来判断每
数的计数题目描述我们要求找出具有下列性质数的个数(包含输入的自然数n),先输入一个自然数n(n≤1000),然后对此自然数按照如下方法进行处理:(1)、不作任何处理;(2)、在它的左边加上一个自然数,但该自然数不能超过原数的一半;(3)、加上数后,继续按此规则进行处理,直到不能再加自然数为止;输入输入一个自然数n输出输出满足条件的数的个数样例输入:6样例输出:6样例解释:满足条件的有六个:6,16,26,126,36,136So:这是一道典型的递归那么上代码咯:#includeusingnamespacestd;intans=1;voidf(intn){ if(n==0) { return;
数的计数题目描述我们要求找出具有下列性质数的个数(包含输入的自然数n),先输入一个自然数n(n≤1000),然后对此自然数按照如下方法进行处理:(1)、不作任何处理;(2)、在它的左边加上一个自然数,但该自然数不能超过原数的一半;(3)、加上数后,继续按此规则进行处理,直到不能再加自然数为止;输入输入一个自然数n输出输出满足条件的数的个数样例输入:6样例输出:6样例解释:满足条件的有六个:6,16,26,126,36,136So:这是一道典型的递归那么上代码咯:#includeusingnamespacestd;intans=1;voidf(intn){ if(n==0) { return;
如何使用带参数的方法定义带参数的方法返回类型(){ //方法的主体}调用带参数的方法对象名.方法名(参数1,参数2,......,参数n)案例分析增加学员姓名在保留了多个学生姓名的数组中,指定查找区间,查找某个学生姓名并显示查找成功首先得将同学们的名字录入进去,先定义名字数组publicString[]names=newString[10];publicvoidinitStus(){//因为不能直接定义名称,使用静态代码块的手段执行,再定义一个方法名方便调用names[0]="张三";names[1]="李四";names[2]="王五";names[3]="赵六";names[4]="周七"