怎么用EXCEL实现排列的最优组合?如5人投标5个标段,每人能且只能中其中一个标段,如何组合总价最低?

[版权声明] 本站所有资料由用户提供并上传,若内容存在侵权,请联系邮箱。资料中的图片、字体、音乐等需版权方额外授权,请谨慎使用。网站中党政主题相关内容(国旗、国徽、党徽)仅限个人学习分享使用,禁止广告使用和商用。

}
按身份证计算年龄 按日计算的 ()(身份证 C2) 
、查找重复内容公式:=IF(COUNTIF(A:A,A2)>,"重复","")。
、用出生年月来计算年龄公式:=TRUNC((DAYS360(H6,"",FALSE))/,)。
、从输入的18位身份证号的出生年月计算公式:=CONCATENATE(MID(E2,,),"/",MID(E2,,),"/",MID(E2,,))。
、从输入的身份证号码内让系统自动提取性别,可以输入以下公式:
  =IF(LEN(C2)=,IF(MOD(MID(C2,,),)=,"男","女"),IF(MOD(MID(C2,,),)=,"男","女"))  公式内的“C2”代表的是输入身份证号码的单元格。
、求和: =SUM(K2:K56) ——对K2到K56这一区域进行求和;
、平均数: =AVERAGE(K2:K56) ——对K2 K56这一区域求平均数;
、排名: =RANK(K2,K$:K$) ——对55名学生的成绩进行排名;
、等级: =IF(K2>=,"优",IF(K2>=,"良",IF(K2>=,"及格","不及格")))
、学期总评: =K2*0.3+M2*0.3+N2*0.4 ——假设K列、M列和N列分别存放着学生的“平时总评”、“期中”、“期末”三项成绩;
、最高分: =MAX(K2:K56) ——求K2到K56区域(55名学生)的最高分;
、最低分: =MIN(K2:K56) ——求K2到K56区域(55名学生)的最低分;
、分数段人数统计:
() =COUNTIF(K2:K56,"") ——求K2到K56区域100分的人数;假设把结果存放于K57单元格;
() =COUNTIF(K2:K56,">=95")-K57 ——求K2到K56区域95~.5分的人数;假设把结果存放于K58单元格;
()=COUNTIF(K2:K56,">=90")-SUM(K57:K58) ——求K2到K56区域90~.5分的人数;假设把结果存放于K59单元格;
()=COUNTIF(K2:K56,">=85")-SUM(K57:K59) ——求K2到K56区域85~.5分的人数;假设把结果存放于K60单元格;
()=COUNTIF(K2:K56,">=70")-SUM(K57:K60) ——求K2到K56区域70~.5分的人数;假设把结果存放于K61单元格;
()=COUNTIF(K2:K56,">=60")-SUM(K57:K61) ——求K2到K56区域60~.5分的人数;假设把结果存放于K62单元格;
() =COUNTIF(K2:K56,"<60") ——求K2到K56区域60分以下的人数;假设把结果存放于K63单元格;
说明:COUNTIF函数也可计算某一区域男、女生人数。
如:=COUNTIF(C2:C351,"男") ——求C2到C351区域(共350人)男性人数;
、优秀率: =SUM(K57:K60)/*
、及格率: =SUM(K57:K62)/*
、标准差: =STDEV(K2:K56) ——求K2到K56区域(55人)的成绩波动情况(数值越小,说明该班学生间的成绩差异较小,反之,说明该班存在两极分化);
、条件求和: =SUMIF(B2:B56,"男",K2:K56) ——假设B列存放学生的性别,K列存放学生的分数,则此函数返回的结果表示求该班男生的成绩之和;
、多条件求和: {=SUM(IF(C3:C322="男",IF(G3:G322=,,)))} ——假设C列(C3:C322区域)存放学生的性别,G列(G3:G322区域)存放学生所在班级代码(、、、、),则此函数返回的结果表示求一班的男生人数;这是一个数组函数,输完后要按Ctrl+Shift+Enter组合键(产生“{……}”)。“{}”不能手工输入,只能用组合键产生。
、根据出生日期自动计算周岁:=TRUNC((DAYS360(D3,NOW( )))/,)
———假设D列存放学生的出生日期,E列输入该函数后则产生该生的周岁。
15、在Word中三个小窍门:
①连续输入三个“~”可得一条波浪线。
②连续输入三个“-”可得一条直线。
连续输入三个“=”可得一条双直线。
一、excel中当某一单元格符合特定条件,如何在另一单元格显示特定的颜色比如:
A1〉1时,C1显示红色
<A1<1时,C1显示绿色
A1<0时,C1显示黄色
方法如下:
、单元击C1单元格,点“格式”>“条件格式”,条件1设为:
公式 =A1=
、点“格式”->“字体”->“颜色”,点击红色后点“确定”。
条件2设为:
公式 =AND(A1>,A1<)
、点“格式”->“字体”->“颜色”,点击绿色后点“确定”。
条件3设为:
公式 =A1<
点“格式”->“字体”->“颜色”,点击黄色后点“确定”。
、三个条件设定好后,点“确定”即出。
二、EXCEL中如何控制每列数据的长度并避免重复录入
、用数据有效性定义数据长度。
用鼠标选定你要输入的数据范围,点"数据"->"有效性"->"设置","有效性条件"设成"允许""文本长度""等于""5"(具体条件可根据你的需要改变)。
还可以定义一些提示信息、出错警告信息和是否打开中文输入法等,定义好后点"确定"。
、用条件格式避免重复。
选定A列,点"格式"->"条件格式",将条件设成“公式=COUNTIF($A:$A,$A1)>”,点"格式"->"字体"->"颜色",选定红色后点两次"确定"。
这样设定好后你输入数据如果长度不对会有提示,如果数据重复字体将会变成红色。
三、在EXCEL中如何把B列与A列不同之处标识出来?
(一)、如果是要求A、B两列的同一行数据相比较:
假定第一行为表头,单击A2单元格,点“格式”->“条件格式”,将条件设为:
“单元格数值” “不等于”=B2
点“格式”->“字体”->“颜色”,选中红色,点两次“确定”。
用格式刷将A2单元格的条件格式向下复制。
B列可参照此方法设置。
(二)、如果是A列与B列整体比较(即相同数据不在同一行):
假定第一行为表头,单击A2单元格,点“格式”->“条件格式”,将条件设为:
“公式”=COUNTIF($B:$B,$A2)=
点“格式”->“字体”->“颜色”,选中红色,点两次“确定”。
用格式刷将A2单元格的条件格式向下复制。
B列可参照此方法设置。
按以上方法设置后,AB列均有的数据不着色,A列有B列无或者B列有A列无的数据标记为红色字体。
四、EXCEL中怎样批量地处理按行排序
假定有大量的数据(数值),需要将每一行按从大到小排序,如何操作?
由于按行排序与按列排序都是只能有一个主关键字,主关键字相同时才能按次关键字排序。所以,这一问题不能用排序来解决。解决方法如下:
、假定你的数据在A至E列,请在F1单元格输入公式:
=LARGE($A1:$E1,COLUMN(A1))
用填充柄将公式向右向下复制到相应范围。
你原有数据将按行从大到小排序出现在F至J列。如有需要可用“选择性粘贴/数值”复制到其他地方。
注:第1步的公式可根据你的实际情况(数据范围)作相应的修改。如果要从小到大排序,公式改为:=SMALL($A1:$E1,COLUMN(A1))
五、巧用函数组合进行多条件的计数统计
例:第一行为表头,A列是“姓名”,B列是“班级”,C列是“语文成绩”,D列是“录取结果”,现在要统计“班级”为“二”,“语文成绩”大于等于104,“录取结果”为“重本”的人数。统计结果存放在本工作表的其他列。
公式如下:
=SUM(IF((B2:B9999="二")*(C2:C9999>=)*(D2:D9999="重本"),,))
输入完公式后按Ctrl+Shift+Enter键,让它自动加上数组公式符号"{}"。
六、如何判断单元格里是否包含指定文本?
假定对A1单元格进行判断有无"指定文本",以下任一公式均可:
=IF(COUNTIF(A1,"*"&"指定文本"&"*")=,"有","无")
=IF(ISERROR(FIND("指定文本",A1,)),"无","有")
求某一区域内不重复的数据个数
例如求A1:A100范围内不重复数据的个数,某个数重复多次出现只算一个。有两种计算方法:
一是利用数组公式:
=SUM(/COUNTIF(A1:A100,A1:A100))
输入完公式后按Ctrl+Shift+Enter键,让它自动加上数组公式符号"{}"。
二是利用乘积求和函数:
=SUMPRODUCT(/COUNTIF(A1:A100,A1:A100))
七、一个工作薄中有许多工作表如何快速整理出一个目录工作表
、用宏3.0取出各工作表的名称,方法:
Ctrl+F3出现自定义名称对话框,取名为X,在“引用位置”框中输入:
=MID(GET.WORKBOOK(),FIND("]",GET.WORKBOOK())+,)
确定
、用HYPERLINK函数批量插入连接,方法:
在目录工作表(一般为第一个sheet)的A2单元格输入公式:
=HYPERLINK("#'"&INDEX(X,ROW())&"'!A1",INDEX(X,ROW()))
将公式向下填充,直到出错为止,目录就生成了。
}

这是一篇五万字的C/C++知识点总结,包括答案。

  1. 修饰变量,说明该变量不可以被改变;

  2. 修饰指针,分为指向常量的指针和指针常量;

  3. 常量引用,经常用于形参类型,即避免了拷贝,又避免了函数对值的修改;

  4. 修饰成员函数,说明该成员函数内不能修改成员变量。

  1. 修饰普通变量,修改变量的存储区域和生命周期,使变量存储在静态区,在 main 函数运行前就分配了空间,如果有初始值就用初始值初始化它,如果没有初始值系统用默认值初始化它。

  2. 修饰普通函数,表明函数的作用范围,仅在定义该函数的文件内才能使用。在多人开发项目时,为了防止与他人命令函数重名,可以将函数定位为 static。

  3. 修饰成员变量,修饰成员变量使所有的对象只保存一个该变量,而且不需要生成对象就可以访问该成员。

  4. 修饰成员函数,修饰成员函数使得不需要生成对象就可以访问该函数,但是在 static 函数内不能访问非静态成员。

  1. 指针是一个隐含于每一个非静态成员函数中的特殊指针。它指向正在被该成员函数操作的那个对象。
  2. 当对一个对象调用成员函数时,编译程序先将对象的地址赋给

    指针,然后调用成员函数,每次成员函数存取数据成员时,由隐含使用
  3. 当一个成员函数被调用时,自动向它传递一个隐含的参数,该参数是一个指向这个成员函数所在的对象的指针。

  4. 指针所指向的这种对象是不可修改的(即不能对这种对象的数据成员进行赋值操作);
  5. 并不是一个常规变量,而是个右值,所以不能取得
  6. 在以下场景中,经常需要显式引用

    1. 为实现对象的链式引用;

    2. 为避免对同一对象进行赋值操作;

    3. 在实现一些数据结构时,如

  • 相当于把内联函数里面的内容写在调用内联函数处;

  • 相当于不用执行进入函数的步骤,直接执行函数体;

  • 相当于宏,却比宏多了类型检查,真正具有函数特性;

  • 不能包含循环、递归、switch 等复杂操作;

  • 在类声明中定义的函数,除了虚函数的其他函数都会自动隐式地当成内联函数。

编译器对 inline 函数的处理步骤

  1. 为所用 inline 函数中的局部变量分配内存空间;

  2. 将 inline 函数的的输入参数和返回值映射到调用方法的局部变量空间中;

  3. 如果 inline 函数有多个返回点,将其转变为 inline 函数代码块末尾的分支(使用 GOTO)。

  1. 内联函数同宏函数一样将在被调用处进行代码展开,省去了参数压栈、栈帧开辟与回收,结果返回等,从而提高程序运行速度。

  2. 内联函数相比宏函数来说,在代码展开时,会做安全检查或自动类型转换(同普通函数),而宏定义则不会。

  3. 在类中声明同时定义的成员函数,自动转化为内联函数,因此内联函数可以访问类的成员变量,宏定义则不能。

  4. 内联函数在运行时可调试,而宏定义不可以。

  1. 代码膨胀。内联是以代码膨胀(复制)为代价,消除函数调用带来的开销。如果执行函数体内代码的时间,相比于函数调用的开销较大,那么效率的收获会很少。另一方面,每一处内联函数的调用都要复制代码,将使程序的总代码量增大,消耗更多的内存空间。

  2. inline 函数无法随着函数库升级而升级。inline函数的改变需要重新编译,不像 non-inline 可以直接链接。

  3. 是否内联,程序员不可控。内联函数只是对编译器的建议,是否对函数内联,决定权在于编译器。

虚函数(virtual)可以是内联函数(inline)吗?

  • 类里如果声明了虚函数,这个函数是实现的,哪怕是空实现,它的作用就是为了能让这个函数在它的子类里面可以被覆盖,这样的话,这样编译器就可以使用后期绑定来达到多态了。纯虚函数只是一个接口,是个函数的声明而已,它要留到子类里去实现。

  • 虚函数在子类里面也可以不重载的;但纯虚函数必须在子类去实现。

  • 虚函数的类用于 “实作继承”,继承接口的同时也继承了父类的实现。当然大家也可以完成自己的实现。纯虚函数关注的是接口的统一性,实现由子类完成。

  • 带纯虚函数的类叫抽象类,这种类不能直接生成对象,而只有被继承,并重写其虚函数后,才能使用。抽象类和大家口头常说的虚基类还是有区别的,在 C# 中用 abstract 定义抽象类,而在 C++ 中有抽象类的概念,但是没有这个关键字。抽象类被继承后,子类可以继续是抽象类,也可以是普通类,而虚基类,是含有纯虚函数的类,它如果被继承,那么子类就必须实现虚基类里面的所有纯虚函数,其子类不能是抽象类。

  • 虚函数指针:在含有虚函数类的对象中,指向虚函数表,在运行时确定。

  • 虚函数表:在程序只读数据段(

    ,见:目标文件存储结构:/E4Wfcfl
    1. 必须保证 this 对象是通过

      、不是 placement new、不是栈上、不是全局、不是其他对象成员)分配的
    2. 的成员函数是最后一个调用 this 的成员函数
    3. 后面没有调用 this 了

    如何定义一个只能在堆上(栈上)生成对象的类?

    如何定义一个只能在堆上(栈上)生成对象的类?

    • 不执行运行时类型检查(转换安全性不如 dynamic_cast)

    • 可以在整个类层次结构中移动指针,子类转化为父类安全(向上转换),父类转化为子类不安全(因为子类可能有不在父类的字段或方法)

    向上转换是一种隐式转换。

    • 对不明确的指针的转换将失败(返回 nullptr),但不引发异常

    • 可以在整个类层次结构中移动指针,包括向上转换、向下转换

    • 滥用 reinterpret_cast 运算符可能很容易带来风险。除非所需转换本身是低级别的,否则应使用其他强制转换运算符之一。

    • 允许将任何指针转换为任何其他指针类型(如

      之类的转换,但其本身并不安全)
    • 也允许将任何整数类型转换为任何指针类型以及反向转换。

    • reinterpret_cast 的一个实际用途是在哈希函数中,即,通过让两个不同的值几乎不以相同的索引结尾的方式将值映射到索引。

    容器的详细说明:/aEv0DV

    • k:代表数值中的 “数位” 个数

    • m:代表数据的最大值减最小值

    二叉查找树(二叉搜索树查找)

    把一个复杂的问题分成两个或更多的相同或相似的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并 循环赛日程安排问题、排序算法(快速排序、归并排序)
    通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法,适用于有重叠子问题和最优子结构性质的问题 背包问题、斐波那契数列
    一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法 旅行推销员问题(最短路径问题)、最小生成树、哈夫曼编码

    • 牛客网 . 程序员面试金典

    • 牛客网 . 在线编程专题

    • 进程是资源分配的独立单位

    • 线程是资源调度的独立单位

    • 进程是资源调度、分配的独立单位

    进程之间的通信方式以及优缺点

      • 有名管道: 一种半双工的通信方式,它允许无亲缘关系进程间的通信

        • 优点:可以实现任意关系的进程间的通信

    1. 长期存于系统中,使用不当容易出错

    • 无名管道:一种半双工的通信方式,只能在具有亲缘关系的进程间使用(父子进程)

        1. b. 只能创建在它的进程以及其有亲缘关系的进程之间

    • 信号量(Semaphore):一个计数器,可以用来控制多个线程对共享资源的访问

    • 信号(Signal):一种比较复杂的通信方式,用于通知接收进程某个事件已经发生

    • 消息队列(Message Queue):是消息的链表,存放在内核中并由消息队列标识符标识

      • 优点:可以实现任意进程间的通信,并通过系统调用函数来实现消息发送和接收之间的同步,无需考虑同步问题,方便

      • 缺点:信息的复制需要额外消耗 CPU 的时间,不适宜于信息量大或操作频繁的场合

    • 共享内存(Shared Memory):映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问

      • 优点:无须复制,快捷,信息量大

      1. 通信是通过将共享空间缓冲区直接附加到进程的虚拟地址空间中来实现的,因此进程间的读写操作的同步问题

      2. 利用内存缓冲区直接交换信息,内存的实体存在于计算机中,只能同一个计算机系统中的诸多进程共享,不方便网络通信

    • 套接字(Socket):可用于不同及其间的进程通信

      • 缺点:需对传输的数据进行解析,转化成应用级的数据。

      1. 传输数据为字节级,传输数据可自定义,数据量小效率高

      2. 传输数据时间短,性能高

      3. 适合于客户端和服务器端之间信息实时交互

      4. 可以加密,数据安全性强

        • 互斥锁/量(mutex):提供了以排他方式防止数据结构被并发修改的方法。

        • 读写锁(reader-writer lock):允许多个线程同时读共享数据,而对写操作是互斥的。

        • 自旋锁(spin lock)与互斥锁类似,都是为了保护共享资源。互斥锁是当资源被占用,申请者进入睡眠状态;而自旋锁则循环检测保持着是否已经释放锁。

        • 条件变量(condition):可以以原子的方式阻塞进程,直到某个特定条件为真为止。对条件的测试是在互斥锁的保护下进行的。条件变量始终与互斥锁一起使用。

      • 信号机制(Signal):类似进程间的信号处理

      • 屏障(barrier):屏障允许每个线程等待,直到所有的合作线程都达到某一点,然后从该点继续执行。

      线程间的通信目的主要是用于线程同步,所以线程没有像进程通信中的用于数据交换的通信机制

      进程之间的通信方式以及优缺点来源于:进程线程面试题总结

      进程之间私有和共享的资源

      • 私有:地址空间、堆、全局变量、栈、寄存器

      • 共享:代码段,公共数据,进程目录,进程 ID

      线程之间私有和共享的资源

      • 私有:线程栈,寄存器,程序寄存器

      • 共享:堆,地址空间,全局变量,静态变量

      多进程与多线程间的对比、优劣与选择

      数据共享复杂,需要用 IPC;数据是分开的,同步简单 因为共享进程数据,数据共享简单,但也是因为这个原因导致同步复杂
      占用内存多,切换复杂,CPU 利用率低 占用内存少,切换简单,CPU 利用率高
      创建销毁、切换复杂,速度慢 创建销毁、切换简单,速度很快
      一个线程挂掉将导致整个进程挂掉
      适应于多核、多机分布式;如果一台机器不够,扩展到多台机器比较简单
      编程、调试简单,可靠性较高 创建、销毁、切换速度快,内存、资源占用小
      创建、销毁、切换速度慢,内存、资源占用大 编程、调试复杂,可靠性较差
      • 需要频繁创建销毁的优先用线程

      • 需要进行大量计算的优先使用线程

      • 强相关的处理用线程,弱相关的处理用进程

      • 可能要扩展到多机分布的用进程,多核分布的用线程

      • 都满足需求的情况下,用你最熟悉、最拿手的方式

      多进程与多线程间的对比、优劣与选择来自:多线程还是多进程的选择及区别

      Linux 内核的同步方式

      在现代操作系统里,同一时间可能有多个内核执行流在执行,因此内核其实象多进程多线程编程一样也需要一些同步机制来同步各执行单元对共享数据的访问。尤其是在多处理器系统上,更需要一些同步机制来同步不同处理器上的执行单元对共享的数据的访问。

      来自:Linux 内核的同步机制,第 1 部分、Linux 内核的同步机制,第 2 部分

      • 进程运行推进顺序不合适

      • 打破互斥条件:改造独占性资源为虚拟资源,大部分资源已无法改造。

      • 打破不可抢占条件:当一进程占有一独占性资源后又申请一独占性资源而无法满足,则退出原占有的资源。

      • 打破占有且申请条件:采用资源预先分配策略,即进程运行前申请全部资源,满足则运行,不然就等待,这样就不会占有且申请。

      • 打破循环等待条件:实现资源有序分配策略,对所有设备实现分类编号,所有进程只能采用按序号递增的形式申请资源。

      主机字节序与网络字节序

      主机字节序(CPU 字节序)

      主机字节序又叫 CPU 字节序,其不是由操作系统决定的,而是由 CPU 指令集架构决定的。主机字节序分为两种:

      • 大端字节序(Big Endian):高序字节存储在低位地址,低序字节存储在高位地址

      • 小端字节序(Little Endian):高序字节存储在高位地址,低序字节存储在低位地址

      可以这样判断自己 CPU 字节序是大端还是小端:

      网络字节顺序是 TCP/IP 中规定好的一种数据表示格式,它与具体的 CPU 类型、操作系统等无关,从而可以保重数据在不同主机之间传输时能够被正确解释。

      网络字节顺序采用:大端(Big Endian)排列方式。

      在地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断。当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法。

      • 全局置换:在整个内存空间置换

      • 局部置换:在本进程中进行置换

      • 最佳置换算法(OPT)

      • 先进先出置换算法(FIFO)

      • 最近最久未使用(LRU)算法

      • 时钟(Clock)置换算法

      计算机经网络体系结构:

      通过媒介传输比特,确定机械及电气规范(比特 Bit)
      将比特组装成帧和点到点的传递(帧 Frame)
      负责数据包从源到宿的传递和网际互连(包 Packet)
      提供端到端的可靠报文传递和错误恢复( 段Segment)
      建立、管理和终止会话(会话协议数据单元 SPDU)
      对数据进行翻译、加密和压缩(表示协议数据单元 PPDU)
      允许访问OSI环境的手段(应用协议数据单元 APDU)

      • 传输数据的单位 ———— 比特

      • 数据传输系统:源系统(源点、发送器) --> 传输系统 --> 目的系统(接收器、终点)

      • 单向通道(单工通道):只有一个方向通信,没有反方向交互,如广播

      • 双向交替通行(半双工通信):通信双方都可发消息,但不能同时发送或接收

      • 双向同时通信(全双工通信):通信双方可以同时发送和接收信息

      • 频分复用(FDM,Frequency Division Multiplexing):不同用户在不同频带,所用用户在同样时间占用不同带宽资源

      • 时分复用(TDM,Time Division Multiplexing):不同用户在同一时间段的不同时间片,所有用户在不同时间占用同样的频带宽度

      • 码分复用(CDM,Code Division Multiplexing):不同用户使用不同的码,可以在同样时间使用同样频带通信

      • 数据单元 ———— 帧

      • 封装成帧:把网络层的 IP 数据报封装成帧,

      • 透明传输:不管数据部分什么字符,都能传输出去;可以通过字节填充方法解决(冲突字符前加转义字符)

      • 硬件地址(物理地址、MAC 地址)

      • 单播(unicast)帧(一对一):收到的帧的 MAC 地址与本站的硬件地址相同

      • 广播(broadcast)帧(一对全体):发送给本局域网上所有站点的帧

      • 多播(multicast)帧(一对多):发送给本局域网上一部分站点的帧

}

我要回帖

更多关于 表格中三行的内容怎么合并到一起 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信