十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
auto 指定变量的存储类型,是默认值
成都创新互联是专业的聂拉木网站建设公司,聂拉木接单;提供网站建设、网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行聂拉木网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
break 中断和跳出循环(for循环或 while循环)或switch选择语句,执行到语句块的结束处,即}后。一般不必写出来
case 与switch配套使用的分支起点,也成为case子句。switch和case、default配套使用。小菜一碟!!
char 定义字符型变量或指针。如:char c, char *p等
const 定义常量或参数。constant的简写
continue 在循环语句中,跳过continue后面的程序,回到循环体的开始处重新执行循环
default 定义switch中的default子句。switch结构中的默认分支,即除了case以外的共用分支
do 定义do-while语句,一种固定的循环结构,先执行循环体语句再判断条件是否满足。一般在循环体中修改条件变量的值
double 定义双精度浮点数变量或指针,如存储圆周率,百分比等
enum 定义枚举类型变量,都是整形数。将一类客观对象的每个成员例举出来。如一周的7天,人类的血型,化学元素种类
extern 声明外部变量或函数,说明该变量或函数在本C文件之外申明
float 定义浮点型变量或指针,即所谓的单精度浮点数。与double相对应
for 构成for循环的开始关键字。forever(永远)的意识
goto 跳转语句,即从当前位置跳转到由标签指定的位置执行。应尽量避免使用它。
if 进行条件判断与分支的保留字.
else 不符合if判断条件的分支。可组合为 else if使用
int 定义整型变量或指针。integer(整数)的简写
long 定义长整型变量或指针。占用2倍int的存储字节
register 指定变量的存储类型是寄存器变量,Turbo c中用自动变量代替。主要用于int型变量,且该变量被大量循环使用。因CPU寄存器有限,故一个函数内不可多用该类型变量
return 从调用函数处返回,在for循环和while循环中也有中断、结束循环的功能
short 定义短整型变量或指针,占用int类型的一般存储字节
signed 定义有符号的整型变量或指针
sizeof 获取某种类型的变量或数据所占内存的大小,是运算符,其实际大小与编译器、操作系统和CPU有关,如不能假定sizeof(int)等于4。如sizeof(int)等
static 指定变量的存储类型是静态变量,或指定函数是静态函数。静态变量或函数只在本c文件范围内可用,即禁止在其它c文件访问该变量或函数
struct 定义结构体类型的保留字。structure的简写
switch 构成switch、case、default选择分支的开始保留字。分支条件变量为整数
typedef 为数据类型定义别名的关键字,主要用于缩短类型长度或便于记忆。type define的简写
union 定义共用体类型的保留关键字。共用体类型各类型使用相同的存储字节长度
unsigned 明确申明为无符号的整型或字符型变量或指针,使用int、float等申明时默认为带符号的。确认数据为非负正数时可使用该保留字修饰。
signed 申明为带符号的变量,与unsigned相对应。使用int,float等申明变量时,默认都是signed.。较少直接使用该保留字。
void 定义类型不确定的指针,或指定函数没有返回值和没有形式参数。void定义的指针也称为万能指针,通过强制类型转换才能使用
volatile 变量的值可能在程序的外部被改变,即可能被本程序显式赋值外,还有可能被别的程序赋值,使用volatile可防错、优化。
while 构成while或do-while循环的保留关键字
restrict 用于指针的修饰,确保指针指向的对象只能由该指针访问。用于编译优化
_bool 逻辑类型,其值仅可为真(true)或假(false)
_Complex 复数类型,包含是不和虚部两部分。分为float和double型。一般编译器都不支持
_Imaginary 虚数类型,即只有虚部的复数。也分为float和double型。一般编译器都不支持
C语言可以通过宏,在你需要的位置宏展开出一个新的函数。
例如:
#define XXX(funcname) \
int funcname (int arg1, int arg2) \
{ return arg1 + arg2; }
但这也是编译期就决定好了的,也不能实现运行期动态创建。
strlen是求字符串的长度,但不包括字符串的null结束符。
strlen为C语言库函数,包含于string.h中,作用为计算一个字符串(字符数组)中元素的个数,即从数组头部计数,直到遇到字符串结束符\0为止,计数结果不包括\0。
需要注意的是,strlen并不是绝对安全的,如果在传入的字符数组的合法范围,不存在结束符\0,那么strlen函数会一直访问下去,超出数组范围,即出现越界访问。所以使用strlen时,程序员必须确认参数字符数组中包含\0值,否则会出现不可预知后果。
扩展资料:
strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到'\0'停止。
sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。
该类型保证能容纳实现所建立的最大对象的字节大小。
sizeof是取字节运算符(关键字),strlen是函数。
sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以'\0'结尾的。
参考资料来源:百度百科-strlen
#include stdio.h /*交换两个数*/ void Swap(int a, int b) { int tmp; tmp = a; a = b; b = tmp; } /*输出一行十个数字*/ void Write(int array[], int begin, int end) { for(int i = begin; i = end; i ++) // cout array[i] " "; printf("%d ",array[i]); printf("\n"); // cout endl; } /*插入排序*/ void InsertionSort(int array[], int begin, int end) { int i, j; int tmp; for(i = begin+1; i = end; i ++) /*循环几次就输出几行*/ { tmp = array[i]; for(j = i-1; j = begin; j --) { if(tmp array[j]) /*如果要从小到大排序,则改将''改为''*/ array[j + 1] = array[j]; else break; } array[j+1] = tmp; Write(array, begin, end); /*输出排序结果(一行)*/ } } /*选择排序*/ void SelectionSort(int array[], int begin, int end) { int i, j; int position; for(i = begin; i end; i ++) { for(j = i+1, position = i; j = end; j ++) { if(array[j] array[position]) /*如果要从小到大排序,则改将''改为''*/ position = j; } Swap(array[i], array[position]); Write(array, begin, end); } } /*冒泡排序*/ void BubbleSort(int array[], int begin, int end) { int i, j; for(i = begin; i end; i ++) { for(j = begin; j = end - begin -1; j ++) { if(array[j+1] array[j]) /*如果要从小到大排序,则改将''改为''*/ Swap(array[j], array[j+1]); } Write(array, begin, end); } } /*将原始数组拷贝到要排序的数组,因为有3个排序方法,所以必须保留原始数组,以备其他调用*/ bool Copy(int array1[], int array2[], int n1, int n2) { if(n1 != n2) return false; else { for(int i = 0; i n1; i ++) { array1[i] = array2[i]; } return true; } } /*主函数*/ void main() { /*如果需要输入排序的个数不是10个数,可以将3个地方的10改为你要的个数就可以了*/ int number, i; /*定义2个整型变量*/ int initinal[10], sort[10]; /*定义2个数组,第一个是保存输入的10个数,第2个是用来排序的数组*/ printf("请输入十个要排序的数字:\n"); number = 10; /*排序个数是10个*/ for(i = 0; i number; i ++) scanf("%d",initinal[i]); printf("从大到小插入排序:\n"); Write(initinal, 0, number-1); /*输出原始十个数据*/ Copy(sort,initinal,number, number); /*将原始数组拷贝到排序数组*/ InsertionSort(sort,0,number-1); /*调用排序函数*/ printf("从大到小选择排序:\n"); Write(initinal, 0, number-1); Copy(sort,initinal,number, number); SelectionSort(sort,0,number-1); printf("从大到小冒泡排序:\n"); Write(initinal, 0, number-1); Copy(sort,initinal,number, number); BubbleSort(sort,0,number-1); }
这种函数是可以由编程人员自己定义的,需要在最前面写#includestdarg.h,这是写不定参数函数必须包含的头文件。
这种函数可以定义成如下形式:
int fun(char*x,...)
{
;
}
其中“...”是这种函数特有的结构,代表着后面可能跟着有未知数量的参数。但是这种函数也不是万能的,最大的缺陷就是不能识别后面的参数数量与其数据类型,所以printf需要在第一个字符串中写清楚后面有几个参数(如"%d")。
如果您想深入了解这种函数的编制和运行过程可以参考:
望采纳~
sin(-a)=-sin(a)
cos(-a)=cos(a)
sin(2π-a)=cos(a)
cos(2π-a)=sin(a)
sin(2π+a)=cos(a)
cos(2π+a)=-sin(a)
sin(π-a)=sin(a)
cos(π-a)=-cos(a)
sin(π+a)=-sin(a)
cos(π+a)=-cos(a)
tgA=tanA=sinAcosA
2.两角和与差的三角函数
sin(a+b)=sin(a)cos(b)+cos(α)sin(b)
cos(a+b)=cos(a)cos(b)-sin(a)sin(b)
sin(a-b)=sin(a)cos(b)-cos(a)sin(b)
cos(a-b)=cos(a)cos(b)+sin(a)sin(b)
tan(a+b)=tan(a)+tan(b)1-tan(a)tan(b)
tan(a-b)=tan(a)-tan(b)1+tan(a)tan(b)
3.和差化积公式
sin(a)+sin(b)=2sin(a+b2)cos(a-b2)
sin(a)?sin(b)=2cos(a+b2)sin(a-b2)
cos(a)+cos(b)=2cos(a+b2)cos(a-b2)
cos(a)-cos(b)=-2sin(a+b2)sin(a-b2)
4.积化和差公式 (上面公式反过来就得到了)
sin(a)sin(b)=-12?[cos(a+b)-cos(a-b)]
cos(a)cos(b)=12?[cos(a+b)+cos(a-b)]
sin(a)cos(b)=12?[sin(a+b)+sin(a-b)]
5.二倍角公式
sin(2a)=2sin(a)cos(a)
cos(2a)=cos2(a)-sin2(a)=2cos2(a)-1=1-2sin2(a)
6.半角公式
sin2(a2)=1-cos(a)2
cos2(a2)=1+cos(a)2
tan(a2)=1-cos(a)sin(a)=sina1+cos(a)
7.万能公式
sin(a)=2tan(a2)1+tan2(a2)
cos(a)=1-tan2(a2)1+tan2(a2)
tan(a)=2tan(a2)1-tan2(a2)
8.其它公式(推导出来的 )
a?sin(a)+b?cos(a)=a2+b2sin(a+c) 其中 tan(c)=ba
a?sin(a)-b?cos(a)=a2+b2cos(a-c) 其中 tan(c)=ab
1+sin(a)=(sin(a2)+cos(a2))2
1-sin(a)=(sin(a2)-cos(a2))2
csc(a)=1sin(a)
sec(a)=1cos(a)