当前位置:文档之家› 第四章多组查询及组函数

第四章多组查询及组函数

第四章多组查询及组函数
第四章多组查询及组函数

第4章多表查询与组函数

【考点】

?各种类型组函数、使用分组函数注意事项

?分组(groupby)语句和分组后过滤(having)语句

?SQL语句的执行顺序

?内连接、外连接、交叉连接、自然连接、全连接查询分类

?笛卡尔积

?子查询与子查询多值问题的处理

多表查询

DQL(数据查询语言)

查询表中的所有数据

语法:SELECT列名FROM表名[WHERE-->GROUPBY-->HAVING-->ORDERBY]

语法:

SELECTselection_list/*要查询的列名称*/

FROMtable_list/*要查询的表名称*/

WHEREcondition/*行条件*/

GROUPBYgrouping_columns/*对结果分组*/

HAVINGcondition/*分组后的行条件*/

ORDERBYsorting_columns/*对结果分组*/

LIMIToffset_start,row_count/*结果限定*/

DML是对表中的数据进行增、删、改的操作。不要与DDL(数据定义语言)混淆了。

查询代码的书写顺序和执行顺序

查询语句书写顺序:select–from-where-groupby-having-orderby-limit

查询语句执行顺序:from->where-->groupby-->having-->select-->orderby -->limit

注:其中WHERE语句执行顺序是从右到左

组函数(多行函数,分组函数)

注:组函数会自动忽略空值,NVL函数使分组函数无法忽略空值

AVG(expr)求平均值

COUNT([DISTINCT]expr)统计行数,当expr=*时,所有的行数,expr=COLUMN时会自动过滤对应列的空值的行数

DISTINCT去掉重复行

MAX(expr)求最大值

MIN(expr)求最小

SUM(expr)求和

分组函数(GROUP BY)

注:SELECT中的列不在组函数中就必须在GROUPBY中

多个列的分组:先按照第一个列分组,如果相同,再第二个列分组,依次类推

SELECT deptno,job,AVG(sal) FROM emp GROUPBY deptno,job;

Oracle的增强GROUP BY:用于做财务报表breakondeptnoskip2

--部门号只显示一个,不同的部门号跳过2行

Break on null关闭设置

GROUP BY ROLLUP(a,b)增强分组

例子

SELECT deptno,job,SUM(sal)FROM emp GROUPBYROLLUP(deptno,job)

上面代码相当于下面几个分组函数的和

SELECT deptno,job,SUM(sal) FROM emp GROUP BY deptno,job;

+

SELECT deptno,SUM(sal) FROM emp GROUP BY deptno,job;+

SELECT SUM(sal) FROM emp GROUPBY deptno, job

即:

GROUPBYa,b+GROUPBYa+没有GROUPBY

过滤分组(HA VING)

注:不能再WHERE子句中使用组函数

可以在HAVING子句中使用组函数,尽量使用WHERE

SELECT deptno,job,AVG(sal) FROM emp GROUP BY deptno,job

HAVINGAVG(sal)>300;

重点:HAVING可以和组函数配合使用,不是必须和GROUPBY配合,例子如下SELECTCOUNT(*) from dual HAVING COUNT(*)>0;

连接类型

1)内连接(innerjoin(可简写为join))

内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复属性。(区别于自然连接)

2、不等连接:在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>。

teacher和student表

eg1:等值连接:

SELECT S.*, T.* FROM STUDENT S INNER JOIN TEACHER T ON S.TEACHERID = T.ID;

;//注意oracle重命名table不能加as只需加空格即可,as可用于重命名列

结果:(注意结果中包含重复属性,重复的属性结果中重命名了)

eg2:

SELECT * FROM STUDENT JOIN TEACHER ON STUDENT.DEPTNO= TEACHER.DEPTNO;

2)自然连接(naturaljoin)

自然连接是在广义笛卡尔积R×S中选出同名属性上符合相等条件元组,再进行投影,去掉重复的同名属性,组成新的关系。即自然连接是在两张表中寻找那些数据类型和列名都相同的字段,然后自动地将他们连接起来,并返回所有符合条件按的结果。

eg1:

SELECT STUDNET.CLASSID,TEACHER.DEPTNO FROM STUDENT NATURAL JOIN TEACHER;

报错:(不能加限定条件)

SQL错误:ORA-25155:NATURAL联接中使用的列不能有限定词

eg2:

SELECT * FROM STUDENT NATURAL JOIN TEACHER;

分析:两个表中有两个相同属性,TEACHERID和DEPTNO,不用加限定条件即按照这两个字段连接

结果:(注意deptno属性只有一个)

下面对比使用innerjoin的结果:(包含重复属性,并且连接方式区别于自然连接)SELECT * FROM STUDENT JOIN TEACHER ON STUDENT.DEPTNO= TEACHER.DEPTNO;

3)外连接(outerjoin)

外连接,返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接或左连接))、右表(右外连接或右连接)或两个边接表(全外连接)中的所有数据行。

1.leftjoin(左联接)等价于(leftouterjoin)返回包括左表中的所有记录和右表中联结字段相等的记录;

2.rightjoin(右联接)等价于(rightouterjoin)返回包括右表中的所有记录和左表中联结字段相等的记录;

3.fulljoin(全连接)等价于(fullouterjoin)查询结果等于左外连接和右外连接的和

eg1:

SELECT S.*, T.* FROM STUDENT S LEFT JOIN TEACHER T ON S.CLASSNO = T.CLASS;

输出结果:(包含STUDENT 中的所有记录和满足条件的记录)

eg2:

SELECT S.*, T.* FROM STUDENT S RIGHT JOIN TEACHER T ON S.CLASSNO = T.CLASS;

结果:

eg3:

SELECT S.*, T.* FROM STUDENT S FULL JOIN TEACHER T ON S.CLASSNO = T.CLASS;

输出:(因为teacher中有的对应STUDENT 中都有,所以结果和leftjoin相同)

4)交叉连接(crossjoin)

交叉连接不带ON子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。

eg1:

SELECT S.*, T.* FROM STUDENT S CROSS JOIN TEACHER T ;

等价于:

SELECT S.*, T.* FROM STUDENT S , TEACHER T ;

输出结果:

5)自连接

连接的表是同一张表,使用自连接可以将自身表的一个镜像当作另一个表来对待,从而能够

得到一些特殊的数据。

用途举例:计算公交链路换乘问题(见eg2)

eg1:

SELECT S1.*, S2.* FROM STUDENT S1 , STUDENT S2 WHERE S1.DEPTNO=S2.DEPTNO AND S1.CLASSNO=S2.CLASSNO;

结果:

eg2:

table route(num, company, pos, stop)

SELECT * FROM route R1, route R2 WHERE R1.stop=R2.stop;

可查询公用同一公交车站的所有路线

3.总结

1)即使是在连接条件不满足的情况下,外部连接也会在结果集内返回行,而内部连接不会在结果集类返回行当外部连接不满足连接条件时,通常返回一个表中的列,但是第二个表中没有返回值--为null

2)自然连接不包含重复的属性

3)交叉连接是两个表数据笛卡尔积(相当于不加连接条件)

笛卡儿积

笛卡尔积(多张表相乘)

笛卡尔积:多张表关联,将表的所有信息都要显示出来,如果管理不到的数据用null代替。

1.内连接inner join on

内连接:笛卡尔积中,只显示有关联的数据,无关联不显示。

select * from lefttable 左表,righttable 右表where 左表.主键=右表.外键;

select * from lefttable 左表inner join 右表on 左表.主键=右表.外键;

2.左(外)连接left(outer)join on

笛卡尔积中,左边表中的数据必须都显示

select * from 左表left join 右表 on 左表.主键=右表.外键;

select * from 左表,右表 where 左表.主键=右表.外键(+);

3.右连接right join on

笛卡尔积中,右边表中的数据必须都显示

select * from 左表right join 右表 on 左表.主键=右表.外键; select * from 左表,右表 where 左表.主键(+)=右表.外键;

三角函数值表

三角函数值表 sin0=0, sin15=(√6-√2)/4 , sin30=1/2, sin45=√2/2, sin60=√3/2, sin75=(√6+√2)/2 , sin90=1, sin105=√2/2*(√3/2+1/2) sin120=√3/2 sin135=√2/2 sin150=1/2 sin165=(√6-√2)/4 sin180=0 sin270=-1 sin360=0

sin1=0.01745240643728351 sin2=0.03489949670250097 sin3=0.05233595624294383 sin4=0.0697564737441253 sin5=0.08715574274765816 sin6=0.10452846326765346 sin7=0.12186934340514747 sin8=0.13917310096006544 sin9=0.15643446504023087 sin10=0.17364817766693033 sin11=0.1908089953765448 sin12=0.20791169081775931 sin13=0.22495105434386497 sin14=0.24192189559966773 sin15=0.25881904510252074 sin16=0.27563735581699916 sin17=0.2923717047227367 sin18=0.3090169943749474 sin19=0.3255681544571567 sin20=0.3420201433256687 sin21=0.35836794954530027 sin22=0.374606593415912 sin23=0.3907311284892737 sin24=0.40673664307580015 sin25=0.42261826174069944 sin26=0.4383711467890774 sin27=0.45399049973954675 sin28=0.4694715627858908 sin29=0.48480962024633706 sin30=0.49999999999999994 sin31=0.5150380749100542 sin32=0.5299192642332049 sin33=0.544639035015027 sin34=0.5591929034707468 sin35=0.573576436351046 sin36=0.5877852522924731 sin37=0.6018150231520483 sin38=0.6156614753256583 sin39=0.6293203910498375 sin40=0.6427876096865392 sin41=0.6560590289905073 sin42=0.6691306063588582 sin43=0.6819983600624985 sin44=0.6946583704589972 sin45=0.7071067811865475 sin46=0.7193398003386511 sin47=0.7313537016191705 sin48=0.7431448254773941 sin49=0.7547095802227719 sin50=0.766044443118978 sin51=0.7771459614569708 sin52=0.7880107536067219 sin53=0.7986355100472928 sin54=0.8090169943749474 sin55=0.8191520442889918 sin56=0.8290375725550417 sin57=0.8386705679454239 sin58=0.848048096156426 sin59=0.8571673007021122 sin60=0.8660254037844386 sin61=0.8746197071393957 sin62=0.8829475928589269 sin63=0.8910065241883678 sin64=0.898794046299167 sin65=0.9063077870366499 sin66=0.9135454576426009

excel表格的各函数常用函数

excel表格的各函数的基本操作 常用函数如下: 1、SUM()求和、总分函数 例:=SUM(B2:B5) 2、A VERAGE()求平均函数 例:=A VERAGE(B2:B5) 3、MIN()求最小值函数 例:=MIN(B2:B5) 4、MAX()求最大值函数 例:=MAX(B2:B5) 5、COUNTIF()求条件统计函数( 例:=COUNTIF(B7:B33,“>=90”) 6、COUNT()求统计函数 例:=COUNT(B7:B33) 7、IF()求逻辑函数 例:=IF(G7>=90,“优秀”,IF(G7>=80,“良好”,IF(G7)>=70,“中等”,IF(AND(G7<70,G7>0),“差生”,“没参考”)))) 8、RANK()求名次函数 例:=RANK(G7,$G$7:$G$33) 9、NOW()求电脑现在日期 例:=NOW() 10、求“性别”函数 例:=IF(MOD(MID(B6,15,1),2)=0,"女","男") 11、求“出生日期”函数 例:=CONCATENA TE(MID(B6,7,2),"-",MID(B6,9,2),"-",MID(B6,11,2)) 12、求“年龄”、“工龄”函数 例:=DATEDIF(E6,NOW(),"Y") 13、求“等级”函数 例:=IF(C6="基础班","入门级",IF(OR(C6="AUTOCAD班",C6="PHOTOSHOP",C6="CORELDRAW"),"平面设计级",IF(C6="综合班","综合办公应用级",IF(C6="OFFICE套班","办公应用级","网络设计级")))) 14、SUNIF()条件求和函数(根据指定的条件求和) 例:=SUMIF(B7:B33,">=100") 例:=SUMIF(C7:C36,"=人事",D7:D36)

c语言中命令行参数argc,argv

main( int argc, char ** argv ) argv:指针的指针 argc:整数 char **argv or char *argv[] or char argv[][] 为了能形象的说明这两个参数的含义,我们先用一个实例来进行讲解: 假设程序的名称为test,当只输入test,则由操作系统传来的参数为: argc = 1,表示只有一程序名称; argc只有一个元素,argv[0]指向输入的程序路径及名称:./ test 当输入test para_1,有一个参数,则由操作系统传来的参数为: argc = 2,表示除了程序名外还有一个参数; argv[0]指向输入的程序路径及名称; argv[1]指向参数para_1字符串 当输入test para_1 para_2 有2个参数,则由操作系统传来的参数为: argc = 3,表示除了程序名外还有两个参数; argv[0]指向输入的程序路径及名称; argv[1]指向参数para_1字符串; argv[2]指向参数para_2字符串; 以此类推……………… void main( int argc, char *argv[] ) char *argv[]: argv是一个指针数组,元素个数是argc,存放的是指向每一个参数

的指针,第一个元素即argv[0]为程序运行的全路径名,从二个元素(argv[1])开始,是每一个参数的名称,最后一个元素为NULL。总的来说,即: * argv: 字符串数组 argv[0] 为程序运行的全路径名 argv[1] 为执行程序名后的第一个字符串; argv[2] 为执行程序名后的第二个字符串; ... argv[argc]为NULL。 int argc:表示argv的大小,是实际参数个数+1,其中+1是因为argv[0]是编译后的可执行文件名 main() 参数: Turbo C2.0启动时总是把argc、argv、env(存放环境变量)这三个参数传递给main()函数, 可以在用户程序中说明(或不说明)它们, 如果说明了部分(或全部)参数, 它们就成为main()子程序的局部变量。 请注意: 一旦想说明这些参数, 则必须按argc, argv, env 的顺序, 如以下的例子: main() main(int argc) main(int argc, char *argv[]) main(int argc, char *argv[], char *env[]) 其中第二种情况是合法的, 但不常见, 因为在程序中很少有只用argc, 而不 用argv[]的情况。 以下提供一样例程序EXAMPLE.EXE, 演示如何在main()函数中使用三个参数: /*program name EXAMPLE.EXE*/ #i nclude

(完整word版)特殊角三角函数值表

特殊角三角函数值表: 函数名 在平面直角坐标系xOy中,从点O引出一条射线OP,设旋转角为θ,设OP=r,P点的坐标为(x,y)有 正弦函数sinθ=y/r余弦函数cosθ=x/r正切函数tanθ=y/x余切函数cotθ=x/y 正弦(sin):角α的对边比斜边余弦(cos):角α的邻边比斜边 正切(tan):角α的对边比邻边余切(cot):角α的邻边比对边 特殊函数人倒数关系: tanα ?cotα=1sinα ?cscα=1cosα ?secα=1特殊函数人商数关系:tanα=sinα/cosαcotα=cosα/sinα 特殊函数人平方关系:sinα2+cosα2=11+tanα2=secα21+cotα=cscα2 以下关系,函数名不变,符号看象限 sin(π+α)=-sinα cos(π+α)=-cosα tan(π+α)=tanα cot(π+α)=cotα sin(π-α)=sinα cos(π-α)=-cosα tan(π-α)=-tanα cot(π-α)=-cotα sin(2π-α)=-sinα cos(2π-α)=cosα tan(2π-α)=-tanα cot(2π-α)=-cotα 以下关系,奇变偶不变,符号看象限 sin(90°-α)=cosα cos(90°-α)=sinα tan(90°-α)=cotα cot(90°-α)=tanα sin(90°+α)=cosα cos(90°+α)=sinα tan(90°+α)=-cotαcot(90°+α)=-tanα 特殊三角函数人积化和差的关系: sinα ?cosβ=(1/2)*[sin(α+β)+sin(α-β)] cosα ?sinβ=(1/2)*[sin(α+β)-sin(α-β)] cosα ?cosβ=(1/2)*[cos(α+β)+cos(α-β)] sinα ?sinβ=(1/2)*[cos(α+β)-cos(α-β)] 特殊三角函数 - 和差化积公式 sinα+sinβ=2*[sin(α+β)/2]*[cos(α-β)/2] sinα-sinβ=2*[cos(α+β)/2]*[sin(α-β)/2]

C语言编程实战-4-命令行参数(main函数)处理

命令行(main函数)参数处理 我们在执行某某命令的时候,经常会传入一些参数,告诉程序做不同的处理。如使用gcc编译程序时,我们经常会在后边指定c源码文件,如gcc test.c。我们自己写的程序,如何能够算其它命令一样,能够接收和处理不同的参数呢?答案是肯定的。我们今天来介绍自写程序对命令行参数的处理。 一个标准的C程序,其主函数通常是这样子定义的: int main(int argc,char *argv[]) { //用户代码 return xxx; } main函数有两个参数:argc与agv,前者是一个整数,表示命令行给程序参数的个数,后者是一个字符串数组,用于顺次存放命令行传给程序的参数,通过argc与argv,我们就能实现对命令行参数的处理。 对每一个程序而言,程序的名称总会作为命令行的第一个参数传给它的主函数,那怕命令行中并没有传任何参数。因此,主函数的参数argc最小值为1,argv[0]总是存放命令程序名。因此,假使test是我们程序的名字,如果执行: test 则main函数得到的参数是:argc = 1, argv = {“test”}; 如果执行: test arg1 arg2 则main函数得到的参数是:argc = 3, argv = {“test”, “arg1”, “arg2”}; 如此类推。 通过上面的讲解,我们不难在main函数中实现对命令行参数的代码。我们接下来做一个编程任务: 写一个程序,该程序接收两个参数,这两个参数都是整数,程序中需将这两个整数的和与差计算并输出到屏幕上。假设程序的名称为cal,在命令行执行: cal 10 15 则程序输出: 10 + 15 = 25 10 – 15 = -5 如果输入的参数不合法,则提示参数错误。 代码实现: #include

main函数的命令行参数

main函数的命令行参数 前面所用到的main函数都是不带参数的,即main()。其实main函数也可以有参数,只是它的参数之一是指针数组。 1.main函数中可以写两个形参,一般形式如下:main(int argc,char *argv[ ]); 2.说明:第一个形参argc是一个整型变量,第二个形参argv是一个指针数组,其元素指向字符型数据。 1 若以下程序所生成的可执行文件名为filel.exe ; 当输入以下命令行执行该程序 时,FILE1 CHINA BEIJING SHANGHAI程序的输出结果是()。 main( int argc,char *argv[]) { while(argc-->0) { ++argv; printf("%s",*argv);} } A)CHINA BEIJING SHANGHAI B)FILE1 CHINA BEIJING C)C B S D)F C B 2 假定下列程序的可执行文件名为prg.exe,则在该程序的子目录下输入命令行: main(int argc,char *argv[ ]) { int i; if(argc<=0) return; for(i=1;i后程序的输出结果是()。 A)hello good B)hg C)hel D)hellogood 3 假定以下程序经编译和连接后生成可执行文件PROG.EXE,如果在此可执行文件所在录的DOS提示符下键入:PROG ABCDEFGH IJKL<回车>,则输出结果为()。 main( int argc, char *argv[])) { while(--argc>0) printf("%s",argv[argc]); printf("\n"); } A) ABCDEFG B) IJHL C) ABCDEFGHIJKL D) IJKLABCDEFGH 4 不合法的main函数命令行参数表示形式是()。 A) main(int a,char *c[]) B) main(int arc,char **arv) C) main(int argc,char *argv) D) main(int argv,char *argc[]) 5 有以下程序:程序编译连接后生成的可执行文件是exl.exe,若运行时输入带参数的命令行是exl abcd efg 10<回车>则运行的结果是()。 #include main(int argc,char *argv[]) { int i,len=0; for (i=1; i,则运行结果为()。 main(int argc, char *argv[]) { int n,i=0; while(argv[1][i]!= '\0') { n=fun(); i++;} printf("%d\n",n*argc); } int fun() { static int s=0; s+=1; return s; } A)6 B)8 C)3 D)4

excel函数公式图文说明教程

excel函数公式实例教程 excel教程珍藏版,简单明了,包你学会,欢迎转载! 教程在陆续上传添加中,敬请期待! 1、PERCENTILE函数实例:求百分比数值点 Excel中PERCENTILE函数实例:求百分 比数值点 [日期:2010-08-09] 来源:IT部落窝作者:IT部落窝阅读:8560次[字体:大中小] Excel中PERCENTILE函数的用法是:返回区域中数值的第 K 个百分点的值。 PERCENTILE函数实例:求百分比数值点 下面是IT部落窝某几天的一个流量表,详见下图。现在要统计出90%、80%、70%、60%、50%对应的百分比数值点。我们使用PERCENTILE函数设计公式来求取。 操作步骤如下:

第一步,选中B17单元格,输入公式:=PERCENTILE(C2:C14,0.9),确定,得到90%处的对应的百分比数值点。 第二步,选中B18单元格,输入公式:=PERCENTILE(C2:C14,0.8),确定,得到80%处的对应的百分比数值点。 第三步,选中B19单元格,输入公式:=PERCENTILE(C2:C14,0.7),确定,得到70%处的对应的百分比数值点。 第四步,选中B20单元格,输入公式:=PERCENTILE(C2:C14,0.6),确定,得到60%处的对应的百分比数值点。 第五步,选中B21单元格,输入公式:=PERCENTILE(C2:C14,0.5),确定,得到50%处的对应的百分比数值点。 2、frequency函数实例:统计一组数据出现的次数

frequency函数实例:统计一组数据出 现的次数 [日期:2010-08-06] 来源:IT部落窝作者:IT部落窝阅读:5390次[字体:大中小] 下表中统计了公司员工被投诉的记录。问题是统计出指定的员工编号被投诉的出现次数。 我们使用excel中frequency函数可以实现出现次数统计。frequency函数用于计算数值在某个区域内的出现频率次数,然后返回一个垂直数组。 操作步骤如下: 首先在C列建立需要参与统计投诉出现次数的员工编号,然后选中D5:D8单元格区域,在编辑栏输入公式:=FREQUENCY(B2:B11,C5:C8),然后按下“Ctrl+Shift+Enter”组合键,即可一次性统计出各个编号在B2:B11单元格区域中出现的次数。 3、frequency函数用法介绍 Excel中frequency函数用法介绍 [日期:2010-08-06] 来源:IT部落窝作者:IT部落窝阅读:6622次[字体:大中小]

带参数main函数

main函数也可以带参数。带参数main函数的定义格式如下: void main(int argc, char *argv[]) { ... ... } argc和argv是main函数的形式参数。这两个形式参数的类型是系统规定的。如果main函数要带参数,就是这两个类型的参数;否则main函数就没有参数。变量名称argc和argv 是常规的名称,当然也可以换成其他名称。 那么,实际参数是如何传递给main函数的argc和argv的呢?我们知道,C程序在编译和链接后,都生成一个exe文件,执行该exe文件时,可以直接执行;也可以在命令行下带参数执行,命令行执行的形式为: 可执行文件名称参数1 参数2 ... ... 参数n 执行文件名称和参数、参数之间均使用空格隔开。例如,在linux下运行程序./a.out 1 2 ,可执行文件名称为./a.out,参数1为字符串1,参数2为2。 如果按照这种方法执行,命令行字符串将作为实际参数传递给main函数。具体为: (1) 可执行文件名称和所有参数的个数之和传递给argc;所以上面的argc=3 (2) 可执行文件名称(包括路径名称)作为一个字符串,首地址被赋给argv[0],参数1也作为一个字符串,首地址被赋给argv[1],... ...依次类推。 本回答专业性由科学教育分类达人陶文认证 满意回答 运行方法: (假设你的程序为Untitled1.exe) 打开命令提示符: 转到你的Untitled1.exe的目录, 输入下列命令: Untitled1.exe a basdfsa 1314324 -k -f 回车就可以运行了。 这时,在Main函数里定义的 int main(int argc, char *args[]) 里的argc = 6,就是表示有六个参数, 对应的 args[0] = "Untitled1.exe"; args[1] = "a"; args[2] = "basdfsa"; args[3] = "1314324"; args[4] = "-k"; args[5] = "-f"; 就是这样子了。

(完整版)三角函数特殊角值表

角度 函数 0 30 45 60 90 120 135 150 180 270 360 角a 的弧度 0 π/6 π/4 π/3 π/2 2π/3 3π/4 5π/6 π 3π/2 2π sin 0 1/2 √2/2 √3/2 1 √3/2 √2/2 1/2 0 -1 0 cos 1 √3/2 √2/2 1/2 0 -1/2 -√2/2 -√3/2 -1 0 1 tan √3/3 1 √3 -√3 -1 -√3/3 1、图示法:借助于下面三个图形来记忆,即使有所遗忘也可根据图形重新推出: sin30°=cos60°=2 1 ,sin45°=cos45°=22, tan30°=cot60°=33, tan 45°=cot45°=1 正弦函数 sinθ=y/r 余弦函数 cosθ=x/r 正切函数 tanθ=y/x 余切函数 cotθ=x/y 正割函数 secθ=r/x 余割函数 cscθ=r/y 2、列表法: 说明:正弦值随角度变化,即0? 30? 45? 60? 90?变化;值从0 2 1 22 23 1变化,其余类似记忆. 3、规律记忆法:观察表中的数值特征,可总结为下列记忆规律: ① 有界性:(锐角三角函数值都是正值)即当0°<α<90°时, 则0<sin α<1; 0<cos α<1 ; tan α>0 ; cot α>0。 ②增减性:(锐角的正弦、正切值随角度的增大而增大;余弦、余切值随角度的增大而减小),即当0<A <B <90°时,则sin A <sin B ;tan A <tan B ; cos A >cos B ;cot A >cot B ;特别地:若0°<α<45°,则sin A <cos A ;tan A <cot A 若45°<A <90°,则sin A >cos A ;tan A >cot A . 4、口决记忆法:观察表中的数值特征 正弦、余弦值可表示为 2m 形式,正切、余切值可表示为3 m 形式,有关m 的值可归纳成顺口溜:一、二、三;三、二、一;三九二十七. 30? 1 2 3 1 45? 1 2 1 2 60? 3

三角函数特殊角值表

三角函数特殊值 1、图示法:借助于下面三个图形来记忆,即使有所遗忘也可根据图形重新推出: sin30°=cos60°= 21 sin45°=cos45°=2 2 tan30°=cot60°=3 3 tan 45°=cot45°=1 2 30? 1 2 3 1 45? 1 2 1 2 60? 3

说明:正弦值随角度变化,即0? 30? 45? 60? 90?变化;值从0 2 3 1变化,其余类似记忆. 3、规律记忆法:观察表中的数值特征,可总结为下列记忆规律: ① 有界性:(锐角三角函数值都是正值)即当0°<α<90°时, 则0<sin α<1; 0<cos α<1 ; tan α>0 ; cot α>0。 ②增减性:(锐角的正弦、正切值随角度的增大而增大;余弦、余切值随角度的增大而减小),即当0<A <B <90°时,则sin A <sin B ;tan A <tan B ; cos A >cos B ;cot A >cot B ;特别地:若0°<α<45°,则sin A <cos A ;tan A <cot A 若45°<A <90°,则sin A >cos A ;tan A >cot A . 4、口决记忆法:观察表中的数值特征 正弦、余弦值可表示为 2m 形式,正切、余切值可表示为3 m 形式,有关m 的值可归纳成顺口溜:一、二、三;三、二、一;三九二十七. 巧记特殊角的三角函数值 初学三角函数,记忆特殊角三角函数值易错易混。若在理解掌握的基础上,经过变形,使其呈现某种规律,再配以歌诀,则可浅显易记,触目成诵。 仔细观察表1,你会发现重要的规律。

int main参数详解

int main(int argc,char* argv[])详解 argc是命令行总的参数个数 argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数 命令行后面跟的用户输入的参数,比如: int main(int argc, char* argv[]) { int i; for (i = 0; i>i; return 0; } 执行时敲入 F:\MYDOCU~1\TEMPCODE\D1\DEBUG\D1.EXE aaaa bbb ccc ddd 输出如下: F:\MYDOCU~1\TEMPCODE\D1\DEBUG\D1.EXE aaaa bbb ccc ddd -------------------------------------------------------------------- char *argv[]是一个字符数组,其大小是int argc,主要用于命令行参数argv[] 参数,数组里每个元素代表一个参数; 比如你输入 test a.c b.c t.c 则 argc = 4 argv[0] = "test" argv[1] = "a.c" argv[2] = "b.c" argv[3] = "t.c" -------------------------------------------------------------------------------------------- argc记录了用户在运行程序的命令行中输入的参数的个数。 arg[]指向的数组中至少有一个字符指针,即arg[0].他通常指向程序中的可执行文件的文件名。在有些版本的编译器中还包括程序 文件所在的路径。 ------------------------------------------------------------------------- 在调用一个可执行程序时,某些情况下需要向程序传递参数。如我们可以在控制台中键入notepad.exe, 回车后将执行记事本程序。如果我们希望在打开notepad时同时打开一个文本文件,可以在notepad.exe

关于main函数的(int argc,char argv[])

main(int argc,char *argv[ ]) argv为指针的指针 argc为整数 char **argv or: char *argv[] or: char argv[][] main()括号内是固定的写法。 下面给出一个例子来理解这两个参数的用法: 假设程序的名称为prog, 当只输入prog,则由操作系统传来的参数为: argc=1,表示只有一程序名称。 argc只有一个元素,argv[0]指向输入的程序路径及名称:./prog 当输入prog para_1,有一个参数,则由操作系统传来的参数为: argc=2,表示除了程序名外还有一个参数。 argv[0]指向输入的程序路径及名称。 argv[1]指向参数para_1字符串。 当输入prog para_1 para_2 有2个参数,则由操作系统传来的参数为: argc=3,表示除了程序名外还有2个参数。 argv[0]指向输入的程序路径及名称。 argv[1]指向参数para_1字符串。 argv[2]指向参数para_2字符串。 void main( int argc, char *argv[] ) char *argv[] : argv 是一个指针数组,他的元素个数是argc,存放的是指向每一个参数的指针, 他的第一个元素即argv[0]为编译生成的可执行文件名(包括路径eg:"F:\VC\Ex1\Debug\Ex1.exe"),从二个元素(argv[1])开始,是每一个参数int argc 表示argv的大小,是实际参数个数+1,其中+1是因为argv[0]是编译后的可执行文件名main()主函数 每一C 程序都必须有一main()函数, 可以根据自己的爱好把它放在程序的某个地方。有些程序员把它放在最前面, 而另一些程序员把它放在最后面, 无论放 在哪个地方, 以下几点说明都是适合的。 1. main() 参数 在Turbo C2.0启动过程中, 传递main()函数三个参数: argc, argv和env。 * argc: 整数, 为传给main()的命令行参数个数。 * argv: 字符串数组。 在DOS 3.X 版本中, argv[0] 为程序运行的全路径名; 对DOS 3.0 以下的版本, argv[0]为空串("") 。 argv[1] 为在DOS命令行中执行程序名后的第一个字符串; argv[2] 为执行程序名后的第二个字符串; ... argv[argc]为NULL。 *env: 安符串数组。env[] 的每一个元素都包含ENVV AR=value形式的字符串。其中ENVV AR为环境变量如PA TH或87。value 为ENVV AR的对应值如C:\DOS, C: \TURBOC(对于PA TH) 或YES(对于87)。 Turbo C2.0启动时总是把这三个参数传递给main()函数, 可以在用户程序中说明(或不说明)它们, 如果说明了部分(或全部)参数, 它们就成为main()子程序的局部变量。

三角函数值表

三角函数值表 三角函数 单位圆(及半径的圆)在三角函数的学习中具有举足轻重的地位。我们可以利用单位圆来定义三角函数、求解三角函数问题。在解决三角函数问题的过程中,单位圆是一个非常有用的工具。 设角的终边与单位圆(此处是以原点为圆心)交于点,则有 正弦:,余弦: 正切:,余切: 正割:,余割: (二)反三角函数 反三角函数是一种基本初等函数,它包括反正弦、反余弦、反正切、反余切、反正割、反余割,他们各自表示其正弦、余弦、正切、余切、正割、余割为时的角。例如,当时,;当时,,具体如,。 反三角函地并不能狭义地理解为三角函数的反函数。三角函数的反函数不是单值函数,因为它并不满足一个自变量对应一个函数值的要求,其图像与其原函数关于函数对称。 三、同角三角函数基本关系 1.倒数关系: 2.商的关系:

3.平方关系: 四、三角函数的诱导公式 诱导公式记忆口诀:“奇变偶不变,符号看象限”.此处仅列出了几个易混的诱导公式,过于常规的就没有列出。个人认为,只需记住与、、的三角函数值关系,便可推出所有的诱导公式。 1.任意角与的三角函数值之间的关系: 2.任意角α与-α的三角函数值之间的关系: 3.任意角与的三角函数值之间的关系: 4.任意角与的的三角函数值之间的关系: 五、三角函数的和差角公式

六、倍角公式和半角公式 1.倍角公式 变形: 2.三倍角公式 3.半角公式(也叫降幂公式) 4.升幂公式 七、积化和差与和差化积公式 1.积化和差公式 2.和化积公式 八、万能公式

万能公式是将和均用表示。 九、辅助角公式 得到辅助角公式: 其中与。 又() 从而得到三角函数辅角公式:,;用余弦表示则为:,。 例如,,在实数域上,最大值为,最小值为十、三角函数和反三角函数的导数 十一、反三角函数相关公式 十二、其他常用结论

EXCEL公式手册

这个东西其实是公司一个很老的培训资料,内容非常简单,说白了就是把Excel里按F1打开帮助都能找到的东西贴出来而已。这个东西的唯一价值,只是告诉你这些公式你可能会用得到,所以老手就不必看了,也不必喷了。我在原文的基础上添加了AVERAGEIF、AVERAGEIFS、SUMIFS、COUNTIFS和IFERROR函数(适用于2007以上版本)。 Contents Chapter 0:Updates内容更新 0.1 AVERAGEIF 0.2 AVERAGEIFS、SUMIFS、COUNTIFS 0.3 IFERROR Chapter 1:Text Functions文本函数 1.1 Concatenate 1.2 Exact 1.3 Upper 1.4 Lower 1.5 Left 1.6 Right 1.7 Len 1.8 Trim 1.9 Text 1.10 Substitute Chapter 2:LOOKUP查询函数 2.1 HLookup 2.2 VLookup 2.3 Lookup Chapter 3:Date and Time日期与时间函数 3.1 Today 3.2 Year

3.4 Day 3.5 Date 3.6 Time 3.7 Hour 3.8 Minute 3.9 Second Chapter 4:Math数学函数4.1 ABS 4.2 INT 4.3 PRODUCT 4.4 MOD 4.5 Rand 4.6 ROUND 4.7 ROUNDUP 4.8 ROUNDDOWN 4.9 SumIF 4.10 SumProduct 4.11 Trunc Chapter 5:Logical逻辑函数5.1 And 5.2 Not 5.3 Or 5.4 True 5.5 False 5.6 If Chapter 6:Financial财务函数6.1 PMT

c c++ main 函数命令行参数的使用 知识小结

c/c++ main 函数命令行参数的使用知识小结 2012-12-31 13:13:43 我来说两句作者:wu_lai_314 收藏我要投稿C程序最大的特点就是所有的程序都是用函数来装配的。main()称之为主函数,是所有程 序运行的入口。其余函数分为有参或无参两种,均由main()函数或其它一般函数调用,若调用 的是有参函数,则参数在调用时传递。 C/C++语言中的main函数,经常带有参数argc,argv,如下: int main(int argc, char** argv)int main(int argc, char* argv[])从函数参数的形式上看,包含一个整型和一个指针数组。当一个C/C++的源程序经过编译、链接后,会生成扩展名为.EXE的可执行文件,这是可以在操作系统下直接运行的文件,换句话说,就是由系统来启动运行的。对main()函数既然不能由其它函数调用和传递参数,就只能由 系统在启动运行时传递参数了。 在操作系统环境下,一条完整的运行命令应包括两部分:命令与相应的参数。其格式为: 命令参数1参数2....参数n? 此格式也称为命令行。命令行中的命令就是可执行文件的文件名,其后所跟参数需用空格分隔,并为对命令的进一步补充,也即是传递给main()函数的参数。 命令行与main()函数的参数存在如下的关系: 设命令行为:program str1 str2 str3 str4 str5 其中program为文件名,也就是一个由program.c经编译、链接后生成的可执行文件program.exe,其后各跟5个参数。对main()函数来说,它的参数argc记录了命令行中命令与参数的个数,共6个,指针数组的大小由参数argc的值决定,即为char*argv[6],指针数组的取值情况如图6-15所示。

三角函数值表

三角函数表 第(1)页 共(11)页 角度正弦值余弦值正切值余切值角度正弦值余弦值正切值余切值00.0000 1.00000.0000不存在 0.10.0017 1.00000.0017572.957 4.10.07150.99740.071713.9507 0.20.0035 1.00000.0035286.478 4.20.07320.99730.073413.6174 0.30.0052 1.00000.0052190.984 4.30.07500.99720.075213.2996 0.40.0070 1.00000.0070143.237 4.40.07670.99710.076912.9962 0.50.0087 1.00000.0087114.589 4.50.07850.99690.078712.7062 0.60.01050.99990.010595.4895 4.60.08020.99680.080512.4288 0.70.01220.99990.012281.8470 4.70.08190.99660.082212.1632 0.80.01400.99990.014071.6151 4.80.08370.99650.084011.9087 0.90.01570.99990.015763.6567 4.90.08540.99630.085711.6645 10.01750.99980.017557.290050.08720.99620.087511.4301 1.10.01920.99980.019252.0807 5.10.08890.99600.089211.2048 1.20.02090.99980.020947.7395 5.20.09060.99590.091010.9882 1.30.02270.99970.022744.0661 5.30.09240.99570.092810.7797 1.40.02440.99970.024440.9174 5.40.09410.99560.094510.5789 1.50.02620.99970.026238.1885 5.50.09580.99540.096310.3854 1.60.02790.99960.027935.8006 5.60.09760.99520.098110.1988 1.70.02970.99960.029733.6935 5.70.09930.99510.099810.0187 1.80.03140.99950.031431.8205 5.80.10110.99490.10169.8448 1.90.03320.99950.033230.1446 5.90.10280.99470.10339.6768 20.03490.99940.034928.636360.10450.99450.10519.5144 2.10.03660.99930.036727.2715 6.10.10630.99430.10699.3572 2.20.03840.99930.038426.0307 6.20.10800.99420.10869.2052 2.30.04010.99920.040224.8978 6.30.10970.99400.11049.0579 2.40.04190.99910.041923.8593 6.40.11150.99380.11228.9152 2.50.04360.99900.043722.9038 6.50.11320.99360.11398.7769 2.60.04540.99900.045422.0217 6.60.11490.99340.11578.6427 2.70.04710.99890.047221.2049 6.70.11670.99320.11758.5126 2.80.04880.99880.048920.4465 6.80.11840.99300.11928.3863 2.90.05060.99870.050719.7403 6.90.12010.99280.12108.2636 30.05230.99860.052419.081170.12190.99250.12288.1443 3.10.05410.99850.054218.46457.10.12360.99230.12468.0285 3.20.05580.99840.055917.88637.20.12530.99210.12637.9158 3.30.05760.99830.057717.34327.30.12710.99190.12817.8062 3.40.05930.99820.059416.83197.40.12880.99170.12997.6996 3.50.06100.99810.061216.34997.50.13050.99140.13177.5958 3.60.06280.99800.062915.89457.60.13230.99120.13347.4947 3.70.06450.99790.064715.46387.70.13400.99100.13527.3962 3.80.06630.99780.066415.05577.80.13570.99070.13707.3002 3.90.06800.99770.068214.66857.90.13740.99050.13887.2066 40.06980.99760.069914.300780.13920.99030.14057.1154

Main函数参数argc,argv说明

Main函数参数argc,argv说明 C/C++语言中的main 函数,经常带有参数argc,argv,如下:int main(int argc, char** argv) int main(int argc, char* argv[]) 这两个参数的作用是什么呢?argc 是指命令行输入参数的个数,argv 存储了 所有的命令行参数。假如你的程序是hello.exe,如果在命令行运行该程序,(首 先应该在命令行下用cd 命令进入到hello.exe 文件所在目录)运行命令为:hello.exe Shiqi Yu 那么,argc 的值是3,argv[0]是”hello.exe”,argv[1]是”Shiqi”,argv[2]是”Yu”。 下面的程序演示argc 和argv 的使用: #include int main(int argc, char ** argv) { int i; for (i=0; i 假如上述代码编译 为hello.exe,那么运行 hello.exe a b c d e 将得到 Argument 0 is hello.exe. Argument 1 is a. Argument 2 is b. Argument 3 is c. Argument 4 is d. Argument 5 is e.运行 hello.exe lena.jpg 将得到 Argument 0 is hello.exe. Argument 1 is lena.jpg.================================#include #include #include int main(int argc ,char * argv[]){int i;char arg[6][15]={0};printf(“argc: %d /n”,argc);for(i=0;i{sprintf(arg[i],”%s” ,argv[i]);}//for(i=1;i//printf(“%s/n”,arg[i]);execlp(“/bin/mkdir”,”mkdir”,arg[1],NULL); return 1;}======================================清单 2. BusyBox 使 用argv[0] 来确定调用哪个应用程序// test.c #include int main( int argc, char

相关主题
文本预览
相关文档 最新文档