strcmp函数实现及详解
strcmp函数实现及分析
strcmp函数是C/C++中基本的函数,它对两个字符串进行比较,然后返回比较结果,函数形式如下:
int strcmp(const char*str1,const char*str2);
其中str1和str2可以是字符串常量或者字符串变量,返回值为整形。返回结果如下规定:
①str1小于str2,返回负值或者-1(VC返回-1);
②str1等于str2,返回0;
③str1大于str2,返回正值或者1(VC返回1);
strcmp函数实际上是对字符的ASCII码进行比较,实现原理如下:首先比较两个串的第一个字符,若不相等,则停止比较并得出两个ASCII码大小比较的结果;如果相等就接着比较第二个字符然后第三个字符等等。无论两个字符串是什么样,strcmp函数最多比较到其中一个字符串遇到结束符'/0'为止,就能得出结果。strcmp算法的可以有多种,不过我觉的可以把这么多算法分为两种,一种是利用减法运算判断结果,另一种是利用比较运算(==)得出结果。
减法运算的实现的代码如下:
1int strcmp(const char*str1,const char*str2)
2{
3int ret=0;
4while(!(ret=*(unsigned char*)str1-*(unsigned char*)str2)&&*str1) 5{
6str1++;
7str2++
8}
9
10
11if(ret<0)
12{
13return-1;
14}
15else if(ret>0)
16{
17return1;
18}
19return0;
20}
这个函数要注意一下几点
①使用*(unsigned char*)str1而不是用*str1。这是因为传入的参数为有符号数,有符号字符值的范围是-128~127,无符号字符值的范围是0~255,而字符串的ASCII没有负值,若不转化为无符号数这回在减法实现时出现错误。
例如str1的值为1,str2的值为255。
作为无符号数计算时ret=-254,结果为负值,正确
作为有符号数计算时ret=2,结果为正值,错误
②While循环中ret=*(unsigned char*)str1-*(unsigned char*)str2)&&*str1,最后与上str1也可以换成str2,因为前面已经做了相减,无论哪个先为‘\0’都会退出。因为最后与上str1是为了判断str1是否结束,即是否为‘\0’。
③这个函数没有判断参数为NULL时的情况,所以当传入NULL时程序会崩溃。网上看别人说商业化代码都会在调用strcmp前先判断是否为NULL,所以可以不用判断NULL;我在VC6上测试string.h中的strcmp(NULL,NULL),程序也会崩溃。这里可以根据实际情况来决定。
若要判断NULL按下面方法更改代码,可以在这个函数最前面加入断言
assert((NULL!=str1)&&(NULL!=str2))
但要注意断言assert是仅在Debug版本起作用的宏,是在Debug时做的无害测试。若想在Release版也可
以判断NULL,那我们必须用别的代码来判断。
可以在程序前面加入if判断
if((NULL!=str1)&&(NULL!=str2))
{
return0;
}
我用CFree5测试sting.h中的strcmp(NULL,NULL),程序返回值为0
(strcmp(NULL,str1)崩溃),这里我们可以返回其他的值如-2。
我们也可以在函数前面加入while判断
while((NULL!=str1)&&(NULL!=str2))
{
//strcmp实现代码
}
return0;
利用while就可以把每个字符都进行判断。
利用比较运算(==)算法如下
21
22int strcmp(const char*str1,const char*str2)
23{
24while((*str1)&&(*str1==*str2))
25{
26str1++;
27str2++;
28}
29
30
31if(*(unsigned char*)str1>*(unsigned char*)str2)
32{
33return1;
34}
35else if(*(unsigned char*)str1<*(unsigned char*)str2) 36{
37return-1;
38}
39else
40{
41return0;
42}
43}
函数注意点和上面一样,有一点要注意不要为了简洁而写成下面44
45int strcmp(const char*str1,const char*str2)
46{
47while((*str1)&&(*str1++==*str2++))//这里++会引起错误
48{
49NULL;
50}
51
52
53if(*(unsigned char*)str1>*(unsigned char*)str2)
54{
55return1;
56}
57else if(*(unsigned char*)str1<*(unsigned char*)str2)
58{
59return-1;
60}
61else
62{
63return0;
64}
65}
当str1为abcd,st2为abfd时,由于判断到第三个字符时while推出,而str指针又加了1,str都指向第四个字符输出结果为0,显然这是错误的。
这个函数也可以用for来实现
66int strcmp(const char*str1,const char*str2)
67{
68for(;*str1==*str2;str1++,str2++)
69{
70if(*str1=='\0')
71return0;
72}
73
74if(*(unsigned char*)str1>*(unsigned char*)str2)
75{
76return1;
77}
78else if(*(unsigned char*)str1<*(unsigned char*)str2)
79{
80return-1;
81}
82//如果只返回正负的话可以用return*(unsigned char*)str1-*(unsigned char*)str2;
83}
C字符串处理函数全
strcpy(char destination[], const char source[]); strcpy:将字符串source拷贝到字符串destination中。 strcpy函数应用举例 原型:strcpy(char destination[], const char source[]); 功能:将字符串source拷贝到字符串destination中 例程: #include Proe中的部分函数关系 一、函数关系 sin 正弦Cos 余弦tan 正切asin 反正弦acos 反余弦atan 反正切sinh 双曲线余弦cosh 双曲线正弦tanh 双曲线正切spar 平方根exp e的幂方根abs 绝对值log 以10为底的对数ln 自然对数 ceil 不小于其值的最小整数floor 不超过其值的最大整数 二、齿轮公式 alpha=20 m=2 z=30 c=0.25 ha=1 db=m*z*cos(alpha) r=(db/2)/cos(t*50) theta=(180/pi)*tan(t*50)-t*50 z=0 三、蜗杆的公式da=8为蜗杆外径m=0.8 为模数angle=20压力角 L=30长度q直径系数d分度圆直径f齿根圆直径n实数 其中之间的关系 q=da/m-2 d=q*m df=(q-2.4)*m n=ceil(2*l/(pi*m)) 在可变剖面扫描的时候运用公式sd4=trajpar*360*n 在扫描切口的时候绘制此图形,其中红色的高的计算公式是sd5=pi*m/2 五、方向盘的公式sd4=sd6*(1-(sin(trajpar*360*36)+1)/8) 其中sd4是sd6的(3/4或者7/8),sin(trajpar*360*36的意思是转过360度且有36个振幅似的 六、凸轮的公式sd5=evalgraph("cam2",trajpar*360) r=150 theta=t*360 z=9*sin(10*t*360) 在方向按sin(10*t*360)的函数关系,9为高的9倍10为10个振幅似的 七、锥齿轮公式 m=4模数z =50齿轮齿数z-am=40与之啮合的齿轮齿数angle=20压力角b=30齿厚long分度圆锥角 d分度圆直径da齿顶圆直径df齿根圆直径db基圆直径关系:long=atan(z/z-am) d=m*z da=d+2*m*cos(long) 一、s trlen函数 strlen()函数用来计算字符串的长度,其原型为: unsigned int strlen (char *s); 【参数说明】s为指定的字符串。 strlen()用来计算指定的字符串s 的长度,不包括结束字符"\0"。 【返回值】返回字符串s 的字符数。 注意一下字符数组,例如 char str[100] = "https://www.360docs.net/doc/b218545917.html,/cpp/u/biaozhunku/"; 定义了一个大小为100的字符数组,但是仅有开始的11个字符被初始化了,剩下的都是0,所以 sizeof(str) 等于100,strlen(str) 等于11。 如果字符的个数等于字符数组的大小,那么strlen()的返回值就无法确定了,例如 char str[6] = "abcxyz"; strlen(str)的返回值将是不确定的。因为str的结尾不是0,strlen()会继续向后检索,直到遇到'\0',而这些区域的内容是不确定的。 注意:strlen() 函数计算的是字符串的实际长度,遇到第一个'\0'结束。 如果你只定义没有给它赋初值,这个结果是不定的,它会从首地址一直找下去,直到遇到'\0'停止。而sizeof返回的是变量声明后所占的内存数,不是实际长度,此外sizeof不是函数,仅仅是一个操作符,strlen()是函数。 二、s trcat函数 strcat() 函数用来连接字符串,其原型为: char *strcat(char *dest, const char *src); 【参数】dest 为目的字符串指针,src 为源字符串指针。 strcat() 会将参数 src 字符串复制到参数 dest 所指的字符串尾部;dest 最后的结束字符 NULL 会被覆盖掉,并在连接后的字符串的尾部再增加一个NULL。 注意:dest 与 src 所指的内存空间不能重叠,且 dest 要有足够的空间来容纳要复制的字符串。 示例 1.字符串输出示例。 程序: #include int x,y; x=strlen(a); y=strlen("abc13"); printf("%d\n%d\n\n",x,y); } 结果: 4.字符串连接函数的使用。 程序: #include C++常用库函数atoi,itoa,strcpy.strcmp的实现 1.//整数转换成字符串itoa函数的实现 #include "stdafx.h" 1.//整数转换成字符串itoa函数的实现 #include "stdafx.h" #include temp[i++] = '-';//对于负数,要加以负号 } temp[i] = '\0'; i--; while(i>=0)//反向操作 { str[j] = temp[i]; j++; i--; } str[j] = '\0'; } 2. //字符串转换成整数atoi函数的实现 int atoiTest(char s[]) { int i = 0,sum = 0,sign; //输入的数前面可能还有空格或制表符应加判断 while(' '==s[i]||'\t'==s[i]) { i++; } sign = ('-'==s[i])?-1:1; if('-'==s[i]||'+'==s[i]) { i++; } while(s[i]!='\0') { sum = s[i]-'0'+sum*10; i++; } return sign*sum; } 3.//字符串拷贝函数 #include "stdafx.h" #include 高中常用函数性质及图像 一次函数 (一)函数 1、确定函数定义域的方法: (1)关系式为整式时,函数定义域为全体实数; (2)关系式含有分式时,分式的分母不等于零; (3)关系式含有二次根式时,被开放方数大于等于零; (4)关系式中含有指数为零的式子时,底数不等于零; (5)实际问题中,函数定义域还要和实际情况相符合,使之有意义。 (二)一次函数 1、一次函数的定义 一般地,形如y kx b =+(k ,b 是常数,且0k ≠)的函数,叫做一次函数,其中x 是自变量。当0b =时,一次函数y kx =,又叫做正比例函数。 ⑴一次函数的解析式的形式是y kx b =+,要判断一个函数是否是一次函数,就是判断是否能化成以上形式. ⑵当0b =,0k ≠时,y kx =仍是一次函数. ⑶当0b =,0k =时,它不是一次函数. ⑷正比例函数是一次函数的特例,一次函数包括正比例函数. 2、正比例函数及性质 一般地,形如y=kx(k 是常数,k≠0)的函数叫做正比例函数,其中k 叫做比例系数. 注:正比例函数一般形式 y=kx (k 不为零) ① k 不为零 ② x 指数为1 ③ b 取零 当k>0时,直线y=kx 经过三、一象限,从左向右上升,即随x 的增大y 也增大;当k<0时,?直线y=kx 经过二、四象限,从左向右下降,即随x 增大y 反而减小. (1) 解析式:y=kx (k 是常数,k ≠0) (2) 必过点:(0,0)、(1,k ) (3) 走向:k>0时,图像经过一、三象限;k<0时,?图像经过二、四象限 (4) 增减性:k>0,y 随x 的增大而增大;k<0,y 随x 增大而减小 (5) 倾斜度:|k|越大,越接近y 轴;|k|越小,越接近x 轴 3、一次函数及性质 一般地,形如y=kx +b(k,b 是常数,k≠0),那么y 叫做x 的一次函数.当b=0时,y=kx +b 即y=kx ,所以说正比例函数是一种特殊的一次函数. 注:一次函数一般形式 y=kx+b (k 不为零) ① k 不为零 ②x 指数为1 ③ b 取任意实数 一次函数y=kx+b 的图象是经过(0,b )和(- k b ,0)两点的一条直线,我们称它为直线y=kx+b,它可以看作由直线y=kx 平移|b|个单位长度得到.(当b>0时,向上平移;当b<0时,向下平移) ***************数学相关**************** 1、函数名称: abs 函数原型: int abs(int x); 函数功能: 求整数x的绝对值 函数返回: 计算结果 参数说明: 所属文件: <>,<> 使用范例: #include <> #include <> int main() { int number=-1234; printf("number: %d absolute value: %d",number,abs(number)); return 0; } 2、函数名称: fabs 函数原型: double fabs(double x); 函数功能: 求x的绝对值. 函数返回: 计算结果 参数说明: 所属文件: <> 使用范例: #include <> #include <> int main() { float number=; printf("number: %f absolute value: %f",number,fabs(number)); return 0; } 3、函数名称: sqrt 函数原型: double sqrt(double x); 函数功能: 计算x的开平方. 函数返回: 计算结果 参数说明: x>=0 所属文件: <> 使用范例: #include <> #include <> int main() { double x=,result; result=sqrt(x); printf("The square root of %lf is %lf",x,result); return 0; } 4、函数名称: pow 函数原型: double pow(double x,double y); 函数功能: 计算以x为底数的y次幂,即计算x^y的值. 函数返回: 计算结果 计算机二级考试MS_Office应用Excel函数 =公式名称(参数1,参数2,。。。。。) =sum(计算范围) =average(计算范围) =sumifs(求和范围,条件范围1,符合条件1,条件范围2,符合条件2,。。。。。。) =vlookup(翻译对象,到哪里翻译,显示哪一种,精确匹配) =rank(对谁排名,在哪个范围里排名) =max(范围) =min(范围) =index(列范围,数字) =match(查询对象,范围,0) =mid(要截取的对象,从第几个开始,截取几个) =int(数字) =weekda y(日期,2) =if(谁符合什么条件,符合条件显示的内容,不符合条件显示的内容) =if(谁符合什么条件,符合条件显示的内容,if(谁符合什么条件,符合条件显示的内容,不符合条件显示的内容)) SUM函数 简单求和。 函数用法 SUM(number1,[number2],…) =SUM(A1:A5)是将单元格 A1 至 A5 中的所有数值相加; =SUM(A1,A3,A5)是将单元格 A1,A3,A5 中的数字相加。 SUMIFS函数 根据多个指定条件对若干单元格求和。 函数用法 SUMIFS(sum_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...) 1) sum_range 是需要求和的实际单元格。包括数字或包含数字的名称、区域或单元格引用。忽略空白值和文本值。 2) criteria_range1为计算关联条件的第一个区域。 3) criteria1为条件1,条件的形式为数字、表达式、单元格引用或者文本,可用来定义将对criteria_range1参数中的哪些单元格求和。例如,条件可以表示为32、“>32”、B4、"苹果"、或"32"。 4)criteria_range2为用于条件2判断的单元格区域。 5) criteria2为条件2,条件的形式为数字、表达式、单元格引用或者文本,可用来定义将对criteria_range2参数中的哪些单元格求和。 4)和5)最多允许127个区域/条件对,即参数总数不超255个。 VLOOKUP函数 是Excel中的一个纵向查找函数,按列查找,最终返回该列所需查询列序所对应的值。 字符串处理函数大全 bcmp(比较内存内容)相关函数 bcmp,strcasecmp,strcmp,strcoll,strncmp,strncasecmp 表头文件;include Creo(PROE)中关系式的理解 一)关系式中可以用下列数学函数式表达: 1)、正弦 sin( ) 2)、余弦 cos( ) 3)、正切 tan( ) 4)、反正弦 asin( ) 5)、反余弦 acos( ) 6)、反正切 atan( ) 7)、双曲线正弦 sinh( ) 8)、双曲线余弦 cosh( ) 9)、双曲线正切 tanh( ) 以上九种三角函数式所使用的单位均为“度”。 10)、平方根 sqrt( ) 11)、以10为底的对数 log( ) 12)、自然对数 ln( ) 13)、e的幂 exp( ) 14)、绝对值 abs( ) 15)、不小于其值的最小整数(上限值) ceil( ) 16)、不超过其值的最大整数(下限值) floor( ) 可以给函数ceil和floor加一个可选的自变量,用它指定要圆整的小数位数。 带有圆整参数的这些函数的语法是: ceil(parameter_name或number, number_of_dec_places) floor (parameter_name 或 number, number_of_dec_places) 其中的parameter_name或number意为参数名称或者一个带小数位的精确数值 后面跟随着的number_of_dec_places意为十进位的小数位数,是可选值: A)可以被表示为一个数或一个使用者自定义参数。如果该参数值是一个实数,则被截尾成为一个整数。 B)它的最大值是8。如果超过8,则不会舍入要舍入的数(第一个自变量),并使用其初值。C)如果不指定它,则功能同前期版本一样。 使用不指定小数部分位数的ceil和floor函数,其举例如下: ceil (10.2) 值为11 floor (10.2) 值为 10 在ProE中,我们的关系可以直接很多系统已经预定义好的函数,通过这些函数我们可以来进行一些特定的运算得到所期望的值,下面我们就对一些常用函数进行一个概括和总结,方便大家在使用的时候查阅。 1.数学函数 在proe中,我们可以使用丰富的数学函数,常用的函数列表如下: sin()、cos()、tan()函数 这三个都是数学上的三角函数,分别使用角度的度数值来求得角度对应的正弦、余弦和正切值,比如: A=sin(30) A=0.5? B=0.866?B=cos(30) ?C=tan(30) C=0.577 asin()、acos()、atan()函数 这三个是上面三个三角函数的反函数,通过给定的实数值求得对应的角度值,如:A=asin(0.5) A=30? B=60?B=acos(0.5) C=26.6?C=atan(0.5) sinh()、cosh()、tanh()函数 在数学中,双曲函数类似于常见的(也叫圆函数的)三角函数。基本双曲函数是双曲正弦“sinh”,双曲余弦“cosh”,从它们导出双曲正切“tanh”等。 sinh / 双曲正弦:sinh(x) = [e^x - e^(-x)] / 2 cosh / 双曲余弦:cosh(x) = [e^x + e^(-x)] / 2 tanh / 双曲正切:tanh(x) = sinh(x) / cosh(x)=[e^x - e^(-x)] / [e^x + e^(-x)] 函数使用实数作为输入值 log()函数 求得10为底的对数值,如: A=log(1) A=0;? A=1;?A=log(10) ?A=log(5) A=0.6989...; ln()函数 求得以自然数e为底的对数值,e是自然数,值是2.718...;如: A=ln(1) A=0;? ?A=ln(5) A=1.609...; 字符函数和字符串函数 头文件:字符串函数头文件:#include 5. Scanf(“%d%c%f”,&a,&b,&c); 输入时1234a123h26↙在输入遇到时空格回车 tab或其他非法输入就会认定输入完毕 Gets (字符数组):读入字符串函数 Gets(str)从键盘键入a b↙括号里为字符数组str的起始地址,Puts(字符数组):输出字符串函数 Strcat(字符数组1,字符数组2):字符串连接函数(2连接在1后面) Strcpy和strncpy:字符串复制函数 Strcpy(字符数组1,字符数组2):将2复制到1 数组1 要为数组名,字符串2可以为数组名或者字符串 Strncpy(str1,str2,2):将str2的前两个字符复制到str1,取代str1的前两个字符 Strcmp:字符串比较函数 Strcmp(str1,str2):相等则为0(对字符串自左向右逐个字母进行比较) Strlen(字符数组):测字符串的实际长度 Strlwr(字符串)将字符串转换为大写 Strupr(字符串)将字符串转换为小写 使用strcmp()函数时常出现的问题 原型:int strcmp(char *str1,char *str2) 功能:把两字符串str1与str2进行比较,当str1>str2,函数返回1,当str1==str2时,函数返回0,当str1 #include 一.正比例函数的性质 1.定义域:R(实数集) 2.值域:R(实数集) 3.奇偶性:奇函数 4.单调性:当k>0时,图像位于第一、三象限,y随x的增大而增大(单调递增);当k<0时,图像位于第二、四象限,y随x的增大而减小(单调递减) 5.周期性:不是周期函数。 6.对称轴:直线,无对称轴。、 二.一次函数图像和性质 一般地,形如y=kx+b(k、b是常数,且k≠0?)的函数,?叫做一次函数(?linear function).一次函数的定义域是一切实数. 当b=0时,y=kx+b即y=kx(k是常数,且k≠0?).所以说正比例函数是一种特殊的一次函数. 当k=0时,y等于一个常数,这个常数用c来表示,一般地,我们把函数y=c(c是常数)叫做常值函数(constant function)它的定义域由所讨论的问题确定. 一般来说, 一次函数y=kx+b(其中k、b是常数,且k≠0)的图像是一条直线. 一次函数y=kx+b的图像也称为直线y=kx+b. 一次函数解析式y=kx+b称为直线的表达式. 一条直线与y轴的交点的纵坐标叫做这条直线在y轴上的截距,简称直线的截距. 一般地,直线y=kx+b(k0)与y轴的交点坐标是(0,b).直线y=kx+b(k0)的截距是b. 一次函数的图像: k>0 b>0 函数经过一、三、二象限 k>0 b<0 函数经过一、二、三象限 k<0 b>0 函数经过一、二、四象限 k<0 b<0 函数经过二 、三、四象限 上面性质反之也成立 1.b 的作用 在坐标平面上画直线y=kx+b (k≠0),截距b 相同的直线经过同一点(0,b). 2.k 的作用 k 值不同,则直线相对于x 轴正方向的倾斜程度不同. (1)k>0时,K 值越大,倾斜角越大 (2)k<0时,K 值越大,倾斜角越大 说明 (1) 倾斜角是指直线与x 轴正方向的夹角; (2)常数k 称为直线的斜率.关于斜率的确切定义和几何意义,将在高中数学中讨论. 3.直线平移 一般地,一次函数y=kx+b(b0)的图像可由正比例函数y=kx 的图像平移得到.当b>0时,向上平移b 个单位;当b<0时,向下平移|b|个单位. 4.直线平行 如果k1=k2 ,b1b2,那么直线y=k1x+b1与直线y=k2x+b2平行. 如果直线y=k1x+b1与直线y=k2x+b2平行,那么k1=k2 ,b1b2 . 1.一次函数与一元一次方程的关系 一次函数 y=kx+b 的图像与x 轴交点的横坐标就是一元一次方程kx+b=0的解;反之,一元一次方程kx+b=0的解就是一次函数 y=kx+b 的图像与x 轴交点的横坐标.两者有着密切联系,体现数形结合的数学思想. 2.一次函数与一元一次不等式的关系 由一次函数 y=kx+b 的函数值y 大于0(或小于0),就得到关于x 的一元一次不等式kx+b>0(或kx+b<0).在一次函数 y=kx+b 的图像上且位于x 轴上方(或下方)的所有点,它们的横坐标的取值范围就是不等式kx+b>0(或kx+b<0)的解. 三.二次函数图像及其性质 1.定义:一般地,如果c b a c bx ax y ,,(2 ++=是常数,)0≠a ,那么y 叫做x 的一元二次函数. 2.二次函数2 ax y =的性质 (1)抛物线2ax y =)(0≠a 的顶点是原点,对称轴是y 轴. (2)函数2ax y =的图像与a 的符号关系: ①当0>a 时?抛物线开口向上?顶点为其最低点;②当0 常用字符串函数 /************************************* ************************************* ***** 一.NSString ************************************* ************************************* *****/ /*----------------创建字符串的方法 ----------------*/ //1、创建常量字符串。NSString *astring = @"Welcome to 1000phone"; //2、通过实例化方法initWithString:实例化一个字符串对象 NSString *astring = [[NSString alloc] initWithString:@" I love iOS!"]; NSLog(@"astring:%@",astring);?[astring release]; //3、用标准c创建字符串: initWithCString:encoding:方法 const char *cString = "I love iphone"; NSString * aString = [[NSString alloc]initWithCString:cString encoding:NSUTF8StringEncoding];? NSLog(@"astring:%@",aString);?[aString release]; 或者:用initWithUTF8String:实例化一个字符串对象const char *p = " Welcome to Beijing!";?NSString *string = [[NSString alloc]initWithUTF8String:p]; //4、创建格式化字符串:占位符(由一个%加一个字符组成) int age = 23;?NSString *astring = [[NSString alloc] initWithFormat:@”I am %d”,age]]; NSLog(@"astring:%@",astring);?[astring release]; //5、通过静态方法创建字符串对象NSString * str1 = [NSString stringWithString:@"I love programming!"];?NSString * str2 = [NSString stringWithUTF8String:" I love programming!"]; NSString * str3 = [NSString 高考中常用函数模型.... 归纳及应用 一. 常数函数y=a 判断函数奇偶性最常用的模型,a=0时,既是奇函数,又是偶函数,a ≠0时只是偶函数。关于方程解的个数问题时常用。 例1.已知x ∈(0, π],关于方程2sin(x+ 3 π )=a 有两个不同的实数解,则实数a 的取植范围是( )A .[-2,2] B.[ 3,2] C.( 3,2] D.( 3,2) 解析;令y=2sin(x+3π ), y=a 画出函数y=2sin(x+3 π ),y=a 图象如图所示,若方程有两个不同的解,则两个函数图象有两个不同的交点, 由图象知( 3,2),选D 二. 一次函数y=kx+b (k ≠0) 函数图象是一条直线,易画易分析性质变化。常用于数形结合解决问题,及利用“变元”或“换元”化归 为一次函数问题。有定义域限制时,要考虑区间的端点值。 例2.不等式2x 2 +1≤m(x-1)对一切│m │≤2恒成立,则x 的范围是( ) A .-2≤x ≤2 B. 4 31- ≤x ≤0 C.0≤x ≤ 4 71+ D. 4 71-≤x ≤ 4 1 3- 解析:不等式可化为m(x-1)- 2x 2+1≥0 设f(m)= m(x-1)- 2x 2 +1 若x=1, f(m)=-3<0 (舍) 则x ≠1则f(m)是关于m 的一次函数,要使不等式在│m │≤2条件下恒成立,只需? ? ?≥-≥0)2(0 )2(f f ,解之可得答案D 三. 二次函数y=ax 2 +bx+c (a ≠0) 二次函数是应用最广泛的的函数,是连接一元二次不等式和一元二次方程的纽带。很多问题都可以化归和转化成二次函数问题。比如有关三次函数的最值问题,因其导数是二次函数,最后的落脚点仍是二次函数问题。 例3.(1).若关于x 的方程x 2 +ax+a 2 -1=0有一个正根和一个负根,则a 的取值范围是( ) 解析:令f(x)= x 2 +ax+a 2 -1由题意得f(0)= a 2 -1 <0,即-1<a <1即可。 一元二次方程的根分布问题可借助二次函数图象解决,通常考虑二次函数的开口方向,判别式对称轴与根的位置关系,端点函数值四个方面。也可借助韦达定理。 Strcat,strcpy,strcmp,Strlen函数原型 1、Strcat函数原型如下: #include p_s = s; p_t = t; for(i = 0; i < strlen(s); i++) *(p_st++) = *(p_s++); for(i = strlen(s); i<(strlen(s) + strlen(t)); i++) *(p_st++) = *(p_t++); *p_st = '\0'; return st; } int main() { char *dst = {"wo ai "}; char *src = {"wo de guo jia !"}; printf("%s\n",strca(dst,src)); return 0; } 2、Strcpy函数原型如下: char *strcpy(char *strDest, const char *strScr) { char *address=strDest; assert((strDest != NULL) && (strScr != NULL)); while(*strScr) //是while(*strScr != ’\0’)的简化形式; { *strDest++ = *strScr++; } *strDest = '\0'; //当strScr字符串长度小于原strDest字符串长度return address; //时,如果没有改语句,就会出错了。 } 以下是在VC6.0中调试的例子,函数名用strcpya代替。 #include 同角三角函数的基本关系式 倒数关系: 商的关系:平方关系: tanα ·cotα=1sinα ·cscα=1cosα ·secα=1 sinα/cosα=tanα= secα/cscα cosα/sinα=cotα= cscα/secα sin2α+cos2α=1 1+tan2α=sec2α1 +cot2α=csc2α 诱导公式 sin(-α)=-sinαcos(-α)=cosαtan(-α)=-tanαcot(-α)=-cotα sin(π/2-α)=cosαcos(π/2-α)=sinαtan(π/2-α)=cotαcot(π/2-α)=tanαsin (π/2+α)=cosαcos(π/2+α)=-sinαtan(π/2+α)=-cotαcot(π/2+α)=-tanαsin(π-α)=sinα cos(π-α)=-cosα tan(π-α)=-tanα cot(π-α)=-cotα sin(π+α)=-sinαcos(π +α)=-cosαtan(π+α)= tanαcot(π+α)=cotα sin(3π/2-α)=- cosαcos(3π/2-α) =-sinαtan(3π/2- α)=cotαcot(3π/2 -α)=tanαsin (3π/2+α)=- cosαcos(3π/2+α) =sinαtan(3π/2+ α)=-cotαcot (3π/2+α)=-tanα sin(2π-α)=-sinα cos(2π-α)=cosα tan(2π-α)=-tanα cot(2π-α)=-cotα sin(2kπ+α)= sinαcos(2kπ+α)= cosαtan(2kπ+α)= tanαcot(2kπ+α)= cotα(其中k∈Z) 两角和与差的三角函数公式万能公式 sin(α+β)=sinαcosβ+cosαsinβsin(α-β)=sinαcosβ-cosαsinβcos(α+β)=cosαcosβ-sinαsinβcos(α-β)=cosαcosβ+sinαsinβtanα+tanβtan(α+β)=——————1-tanα ·tanβtanα-tanβtan (α-β)=——————1+ tanα·tanβ 2tan(α/2) sinα=—————— 1+tan2(α/2) 1-tan2(α/2) cosα=—————— 1+tan2(α/2) function F = ztrans(varargin) %ZTRANS Z-transform. % F = ZTRANS(f) is the Z-transform of the scalar sym f with default % independent variable n. The default return is a function of z: % f = f(n) => F = F(z). The Z-transform of f is defined as: % F(z) = symsum(f(n)/z^n, n, 0, inf), % where n is f's symbolic variable as determined by FINDSYM. If % f = f(z), then ZTRANS(f) returns a function of w: F = F(w). % % F = ZTRANS(f,w) makes F a function of the sym w instead of the % default z: ZTRANS(f,w) <=> F(w) = symsum(f(n)/w^n, n, 0, inf). % % F = ZTRANS(f,k,w) takes f to be a function of the sym variable k: % ZTRANS(f,k,w) <=> F(w) = symsum(f(k)/w^k, k, 0, inf). % % Examples: % syms k n w z % ztrans(2^n) returns z/(z-2) % ztrans(sin(k*n),w) returns sin(k)*w/(1-2*w*cos(k)+w^2) % ztrans(cos(n*k),k,z) returns z*(-cos(n)+z)/(-2*z*cos(n)+z^2+1) % ztrans(cos(n*k),n,w) returns w*(-cos(k)+w)/(-2*w*cos(k)+w^2+1) % ztrans(sym('f(n+1)')) returns z*ztrans(f(n),n,z)-f(0)*z % % See also IZTRANS, LAPLACE, FOURIER. % Copyright 1993-2003 TheMathWorks, Inc. % $Revision: 1.20.4.2 $ $Date: 2004/04/16 22:23:22 $ % Trap for errors in input first. ifnargin>= 4 error('symbolic:sym:ztrans:errmsg1','ZTRANS can take at most 3 input variables'); end % Make f a sym and extract the variable closest to 'x'. f = sym(varargin{1}); % Find all symbolic variables in f. vars = [ '{' findsym(f) '}' ]; % Determine whether n is in the expression. varcheck = maple([ vars ' intersect {n}']); % If n is a symbolic variable, make it the default. Otherwise % let the variable closest to x be the variable of integration. ifisequal(varcheck,'{n}') var = sym('n');Proe中的常用函数关系
strlen,strcat,strcpy,strncpy,strcmp函数的比较
各种字符串处理函数示例(基本)
C++常用库函数atoi,itoa,strcpy.strcmp的实现
高中常用函数性质及图像汇总
二级c常用函数总结(1)
Excel常用函数详解
字符串处理函数大全
Creo常用函数
关系中常用函数详解
C语言常用函数名及用法
strcmp()函数的使用问题
初中常用函数及其性质
OC常用函数
高考中常用函数模型归纳及应用
Strcat,strcpy,strcmp,Strlen函数原型
三角函数常用公式
ztrans函数