C语言基础知识点总结_第1页
C语言基础知识点总结_第2页
C语言基础知识点总结_第3页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

重庆市二级C语言基础知识点总结第一部分C语言基础知识C程序的基本结构(1)一个C程序由一个或者多个函数构成,有且仅有一个主函数main()。一个函数由函数的首部和函数体组成。函数是从主函数main()执行(main()(与main(数在程序中定义的位置无关)编译(语句(语句结束;算法的特性:有穷性,确定性,有一个或者0输入输出有效性算法(程序)的几个结构:选择结构,顺序结构,循环结构第一个不能是数字(一般会出选择题让你判断哪个标识符定义正确,字母要区分大小写。不能与32P242题P122、2,模拟题第一题和能。C语言的基本数据类型数据类型:分为:基本类型(整型,实型,字符型,枚举型型(结构体类型,数组类型,共用体类型空类型(空类型合法哦,不要忘记了这个特殊哦。基本数据类型16位编译器char:1个字节char*(即指针变量):2个字节shortint:2个字节int:2个字节unsignedint:2float:4个字节double: 8个字节long: 4个字节longlong: 8个字unsignedlong: 4个字节

32位编译器char:1个字节即指针变量:4个字节位的寻址2^32,324shortint:2个字节int:4个字节unsignedint:4个字float: 4个字节double: 8个字节long: 4个字节longlong: 8个字unsignedlong: 4个字节一般只需要记int类型是2个字节,float是4个字节,double是8个字节注意int的最大表示范围是-32768――+32767,当超过这个范围的时候,即以%d输出+32768时结果为-32768长整型(long)表示方法是在数字后面加,如果一个变量a=33a=3L3%o,%ld,%x(8进制,长整型,16进制)0,0XL例:inta=075,b=ox14;longintc=5L;printf(“%o,%x,%ld”,abc);(75,14,5)P22第5、11、9题等转义字符:\n\t\\\’\”\ddd(1-3位八进制所代表的字符)十六进制所代表的字符)这个书上习题特别多,19题,P1203题,P13816题P14714题P1522题等sizeof()和strlen():sizeof()测试字符串的存储长度;strlen()测试字符串长度,第一个\0前面的字符个数。例:strlen(“abc\089”)=3 strlen(“abc\012”)=4注意这个例题:chara[30]=“abc\0b”;sizeof(a)=30; sizeof(“abc\0b”)=6;strlen(a)=3 strlen(“abc\0b”)=3记忆书上附录里的运算符优先级(一定要记住常用的)(1)算术运算符和算术表达式:注意自增++,自减--,自反-,++,--,当++,--,在变量后面的时候表示在本次运算的时候不会改变,在下次引用或者参与运算的时候才会自变;当++,--,在变量的前面的时候则是在本次运算就会发生自变(顺便掌握++,--结合性是右结合,若i+++j等价于(i++)+j;(2)关系运算符:>,<,<=,>=,==,!=,==和!=优先级最低。的区别:=是关系运算符,0C数据类型,因此用整型数据来表示关系运算的结果。逻辑运算符:&&,||,!在这几个中优先级!大于&&大于||。例如a=b=c=1;d=++a||++b&&++c++a开始,b=1,c=1变量名式复合赋值运算符:+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=。注意当等号后面接的是表达式的时候要把表达式看成一个整体即x*=y+8是一个整体条件运算符:由两个符号“?”和“123先计算表达式1的值,如果值为真(非0,则将表达式23的值作为条件表达式的值。逗号运算符和逗号表达式一般形式:表达式1,表达式2,……,表达式nnn达式的值。例:#include<stdio.h>voidmain(){ inta;}a优先级高于,的优先级。(参考教材P17-18)位运算符有|或)即只要有一个1就是1,&(与)要全部为1才为1 异或要不相同才为1;注意的是当向左移动n位就是乘以2的n次方;向右移动n位就是除以2的n次方。强制类型转换运算符强制类型转换的一般形式(类型名)表达式表达式(double)(x+y),是将x+y的值转换为doublex,y和表达式x+y都保持原来的数据类型。C程序的输出printf()函数的一般形式为:printf(“格式控制字符串”,输出表列);格式控制包括两种信息1)%、%f等。作字符开始putchar()输出一个字符。一般形式:putchar(c),c的值,c可以是字符型变量或整型变量。%d,%md,%m.nd,%e,以及相应的几种格式是什么意思C程序的输入scanf()函数的一般形式为:scanf(“格式控制字符串”,变量地址表);这里的格式控制与printf()中的一样。变量地址表是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址。getchar()输入一个字符。gechar函数没有参数,一般形式:getchar()常用数学类标准库函数的简单应用:abs()、fabs()、fmod()、sin()、cos()、tan()、exp()、pow()、log()、log10()、sqrt()。参考教材第二部分C程序的基本控制结构分支结构if形式:if()语句功能:若表达式的值为真,则执行语句。注意,当函数作为if里面的表达式的时候即if(printf(“*”))的时候,则是以函数的返回值判断if的真假,printf输出以1个字符则返回为1,所以这个if是真的;if……else形式:if()语句1else语句2功能:若表达式的值为真,则执行语句1,否则执行语句2复合语句及其在程序中的使用复合语句是用一对花括号“{}”将若干条C语句括起来形成的语句序列。复合语句的基本形式如下所示:{ 1;…语句i;…语句n;}注意:C”后不需要用分号“语句格式出现,则应认为是复合语句后面跟了一个空语句:{ 语句序列/*最后的分号是空语句*/if语句的嵌套与程序的多分支结构C语法规定else必须与最近的if相匹配。switch形式:switch(表达式){ case1case2………case常量表达式n:语句组n;default:语句组n+1;}常量表达式必须为整型、字符型或者枚举型,且值必须互不相同case{}case可共用一组执行语句当表达式的值和某个casecase并继续执行之后的语句。若不希望继续执行之后的语句,则使用break语句跳出语句。参考P40,11题循环结构(执行过程参考课件)while型循环形式:while(表达式)语句注意在while()后面没有;号,当函数或者赋值表达式放在while的()中时与if断方法一样,判断函数的返回值或表达式值的逻辑值;若表达式的值为真(非0执行语句(循环体,否则结束循环;do….while形式:do语句while(表达式)先执行语句(循环体)一次,再判断表达式的值是否为真(非0,若为真,则继续循环否则终止循环while(while(do…while则是先执行语句后判断条件,无论如何都会先执行一次。for型循环形式:for(表达式1;表达式2;表达式3)例:for(i=1;i<100;i++)s=s+i;(注意for括号的后面没有;号)当有两个for语句即嵌套的for循环的时候例:for(i=1;i<4;i++)for(j=0;j<5;j++)s=s+i;这个时候是先做i=1;然后判断i;然后做加粗的部分,即是把加粗部分看成一个整体做完之后才会回到i++;所以s=s+i;这个语句做了20次。掌握。书上的练习特别多,大家要学会举一反三。#include<stdio.h>voidmain(){inta[5]={1,2,3,4,5};inti,j;for(i=0;i<5;i++){for(j=i;j<5;j++)printf("%d",a[j]);if(j==5)for(j=0;j<i;j++)printf("%d",a[j]);printf("\n");}}空语句及其在程序中的使用所谓的空语句就是说没有执行代码,只有一个语句结束的标志:分号例如模拟题选择第15题(只要求到3层)过程。参考课件,书上的习题多做练习总结后面如果没{}的时候即是只有一个简单的语句的时候for,whlie的作用效力范围是到与之最近的分号结束当有{ }的时候即是把{ }看成一个整体,控制范围是整{ }里面的所有语句。其他简单控制结构(重点)break()功能:在循环语句和switch,break只能终止并跳出最近一层的结构break不能用于循环语句和switch语句之外的任何其它语句之中continue()的判断仅用于循环语句中控制结构应用举例(重点)参考书上P36-38穷举思想及程序实现迭代思想及程序实现(其中包括:一元高阶方程求根的二分迭代解法。第三部分函数与程序结构函数的定义与调用(1)C无参函数的定义:[类型标识符或void]函数名(){}有参函数定义:[类型标识符或void]函数名(类型形参1,类型形参2,…){说明语句;执行语句;}argcargv这个数组储存的是具体的参数个数。例,voidmain(intargc,char*argv[]){ char **p;while(--argc){ *p=argv[argc];puts(*p);}}若输入为chinaBeijingflie 则结果为:flie Beijing;函数名(表)括号里面一定是实参,要特别注意哦,参考书上的习题认真练习。返回值(包括基本类型、空类型)参考课件及相关教材函数调用时的值参数传递,一定要注意,做这种题,要先弄清楚形参和实参。(1)分清形参和实参的区别:int,float,char等中,不能为常量可以为常量。(2)当实参是一个变量的时候,实参向形参传递值,只是个简单的值传递,不会改变实参的值;当是实参是地址传递的时候就要改变(1)intsu(intx,inty){ intvoidmain(){ inta=3,b=2;sub(a,b);printf(“%d,%d”,a,b);} 结果是(2)intsub(int*x,int*y){intc=*x;*x=*y;*y=c;}voidmain(){inta=3,b=2;sub(&a,&b);printf(“%d,%d”,a,b);} 结果是书上这类题特别多,认真练习!注意形参和实参必须赋值兼容,也就是说形参和实参维数必须一样;注意区别void和retur(参考教材和课件)嵌套调用常考阅读程序题,理解书上P75的图18简单问题的递归函数设计(Fibonacci数列、等书上有很多关于数字拆分、阶乘的题目,一定要掌握。变量的作用域和生存期作用域(全局变量的定义和使用、局部变量的定义和使用要严格区分全局变量和局部变量,分清楚各自的作用范围生存期(存储类别符externstaticauto和对局部变量的作用)staticextern编译预处理宏替换的时候只是简单的字符替换,不要加任何东,宏名中不能包含空格例:#definexx(m) m*m……inti=5;i=i+xx(4+5);结果为i=5+4+5*4+5=34;预编译的时候进行,所以不占用程序运行时间;宏名是无类型的;文件包含命令的一般形式为:#include“文件名”或者#include<文件名>,注意这两种表示形式是有区别的。第四部分指针与函数指针变量的定义和引用指针变量的定义、初始化、赋值和引用;基本概念参考书上,注意指针变量的初始化和赋值。例inta,*p=&a,这是定义了一个*p=&a*代表的是指针类型,而不是取值。例inta,*p;p=&a,**指针标志*&为互逆运算。C&:取变量的地址。单目运算符、优先级为2、右结合性。例:i=5;pi=&i;*:取指针变量所指地址中的内容,与&为互逆运算。单目运算符、优先级为2、右结合性指针变量作函数的参数函数调用时的地址参数传递;P9113141516指针变量与指针指向变量的区别;存放变量地址(指针)例:int*i_pointer;则变量i_pointeri_pointer一个整型变量。到底指向哪一个整型变量,应由i_pointer为间接访问。如将i(指针)赋给i_pointer,即i_pointer=&i,i_pointer所指向的变量就是i,*i_pointeri(直接访问)等价。函数的指针指向函数的指针变量的定义;用于存储函数指针的变量称为指向函数的指针变量,定义方法为:类型说明符(*指针变量名)(形式参数列表)例:int(*p)(int,int);表示定义了一个指针变量p,由两个整型形式参数,返回值是整型数据(*p)P9011P941区别函数指针和指针函数的技巧:来判断:*p(pp(*,所以是一个返回值是指针的函数。int(*p)(*先与p所以是一个函数指针,保存函数的地址。如执行语句p=&a;&*p的含义是什么?和两个运算符的优先级别相同,但按自右而左方向结合,因此先进行*pa,&&a相同,即变量a*&a&a运算,得a*&a也就是变量a*&a*pa*&a与a(*p)++相当于a+*p++*为同一*(p++p的右侧,是“后加”,因此先对p运算,得到a的值,然后使p的值改变,这样pa第五部分数组及简单应用数组一维数组的输入输出,当数组是int(一个有n个元素的一维数组:输入:for(i=0;i<n;i++)scanf(“%d”,&a[i]);输出:for(i=0;i<n;i++)printf(“%d”,a[i]);注意int类型要以%d的格式一个有nm列的二维数组:输入:for(i=0;i<n;i++)(这里i控制行,j控制列)for(j=0;j<m;j++)scanf(“%d”,&a[i][j]);输出:for(i=0;i<n;i++)for(j=0;j<m;j++)printf(“%d”,a[i][j]);(注意在输入的时候才有&符号,输出的时候没有)对一个有n(既是说从第一个成员访问到最后一个成员种方式:(1)for(i=0;i<n;i++) (2)for(i=0;a[i]!=’\0’i++)a[i]; (都是指从访问到a[n-1]) a[i];chara[10];while(a[i])while(a[i]!=’\0’)a般就是指访问整个数组自编函数实现求字符串的长度:int fun(char *a) intfun(char *s){ int k; { char*p;p=swhlie(a[k]) whlie(*p)k++; p++;retrun(k-1); } retrun(p-s); }int*或者[]int,char,float的时候则是在引用(使用)或者表示降一维;数组的简单应用(本部分内容参考书上程序)数组元素值的随机生成法(标准库函数srand.rand.time的使用方法);第六部分字符数据、字符串(字符数组)数据及其简单应用C语言字符串表示方法(scanf函数和gets一个字符数组即chara[10];对这个的输入有两种方式(1)for(i=0;i<n;i++)scanf(“%c”,&a[i]);(2)gets(a);scanf(“%s”,a)(注意这两种方式的括号里面的只能是一个数组名)(printf函数和puts输出也对应有两种方式:(1)for(i=0;i<n;i++)printf(“%c”,a[i]);(2)puts(a);printf,a);(注意这两种方式的括号里面的只能是一个数组名;字符串的常用处理方法(本部分内容参考书上程序)字符类别的判断方法和大小写字母的转换方法;字符串中有效数字字符的统计方法;字符串的复制方法;字符串的连接方法;字符串中字符的查找、插入和删除方法;字符串中子字符串的查找、插入和删除方法;特别注意字符串的反转、一个字符串在另一个字符串中出现的次数等问题常用字符和字符串处理标准库函数包括:isalpha、isdigit、isalnum、isspace、isupper、islower、toupper、tolower、strlen、strcpy、strcat、strcmp、strchr、strstr、atoi、atoll、atof等。第七部分指针与数组一维数组与指针的关系及简单应用用指向一维数组的指针变量表示数组元素地址和数组元素值的方法;(1)指针变量可指向数组起始位置,即指向a[0],也可指向任意数组元素a[i]。inta[10],*p=a;或inta[10],*p=&a[0];(初始化方式)inta[10],*p=a+3;或inta[10],*p=&a[3];(初始化方式)若p指向数组元素的起始位置p+i等价于a+i即a[ip[i和*(p+i*(a+i),即a[i](2)*(p++)与*(++p)作用不同。若p的初值为a,则*(p++)等价于a[0]、p++;*(++p)等价于p++、a[1];(*p)++表示p所指向的元素值加1。若p当前指向a数组中的第i个元素,则*(p--)相当于a[i--];*(++p)相当于a[++i];*(--p)相当于a[--i]。参考书上例题和习题二维数组与指针的关系及简单应用用指向二维数组的指

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论