《C程序复习2.docx》由会员分享,可在线阅读,更多相关《C程序复习2.docx(5页珍藏版)》请在第壹文秘上搜索。
1、C程序复习一一1.基本数据类型(1)【整型d】(ShOrt短整型,2字节,int基本型1.IOng长整型,4字节,加1.)A.整型的第一位均是符号位(最高位是1一一负;最高位是0一正);B.无符号位:UnSigned(定为非负整数),加“UJC.八进制:开头加“0(或);十六进制:开头加“Ox(或OX)”;D.e.g.221.一一表示无符号长整型;(2)【浮点型f】(float单精度型,4字节,力”门,d。UbIe双精度型,8字节,longd。Uble长双精度型,16字节,加1.)A.浮点数计算有误差(舍入误差),可用fabs(x-y)le-6;B.避免把一个很大的数和一个很小的数直接相加减;
2、C.e.g.1.5e-6(=1.5*10-6);(3)【字符型c】(Char1字节D:A.b:退,r:光标移到行首,t:水平制表符(从1、9、17列位置开始输入),匕单引号符,双引号符,0:字符串结束符;B.若用d格式输出即为ASCll码(H:97;A:65);2 .头文件(库函数):include输入输出库函数;string.h字符串处理函数;time.h数学库函数:#define标识符字符列(机IefinePl3.1415926)3 .输入输出函数:(1)单个字符:输出PUtChar(x),X可以是字符/整型,常/变量,输出字符,PUtCharCn):换行;输入getchar(),存ASC
3、ll码;e.g.charcl;cl=getchar();putchar(cl);(2) %d(或i):整数;%F:小数形式输出单/双精度浮点数;%c:一个字符;%s:字符串;(3) :左对齐(默认右对齐):“+”:正数输出带正号;%(+-)(m.n)dcsf:m长度(小数点也占位!),n小数位数(默认输出六位小数);e.g.(%7.2fz6.1)-_6.10:(%5d,123456789)123456789;(4) SCanf(%d%d”,&a,&b);Printf(%d%d”,a,b);%ld:输出长整形(而非IOngdoUbIe!);1.:longdouble:%f:既可以输出float也
4、可以输出double;4.运算(1)赋值运算从右向左,若类型不一致参考右边变量类型(2)“”:取余(余数符号与被除数相同);PoW(X,a)(x的a次方);sqrt()(开平方);fabs()(取绝对值);x+=5:i+(先算再加一);(3)关系运算从左向右,!=:不等于;(4)逻辑运算:&与;“|或;非(取反);(5)条件运算(唯一的三目运算)一一表达式1?表达式2:表达式3若1为真,取2;若!为假,取3。e.g.(取X,y中较大数)(xy)?x:y;(6)SiZeOf运算:Sizeof(类型名)或Sizeof表达式。sizeof(int)=4;sizeofasizeof(int)=a的元素
5、个数;(7)(类型名)表达式或类型名(表达式);e.g.(int)5.8=5:例:将实型变量X精确到小数点后第三位四舍五入。(int)(x*1000+0.5)1000i0,123.45678-123457/1000.0-5 .结构化程序控制(1)交换变量X与y:temp=;x=y;y=temp.(2)1if选择结构】:if(表达式1)语句1;elseif(表达式2)语句2:elsee.g.三角形if(a+bc&b+ca&a+cb)语句3;eg解一元二次方程Switch选择结构工提供下一阶段程序执行的入口。若要只运行某一子语句,加break:SWitCh(表达式)(SWitCh后无分号!)cas
6、e常量表达式1:语句序列1;(语句序列可能为空)case常量表达式2:case常量表达式3:语句序列2;(表达式=常量表达式2,case常量表达式4:语句序列3;则从2开始执行到n;)default:语句序列n;(default语句可有可无)I(switch后表达式仅限整型或字符型,如CaSeTV,case1)e.g.记录成绩(3)【while循环结构】:当型循环WhiIe(表达式)语句;e.g.跳过输入的空白类字符while(c=getchar()=三,c=V);或者while(l)if()break;eg求最大公约数。【do.While结构】:直到型循环do语句(先循环再判断,至少执行一次
7、)While(表达式);(WhiIe后面有分号!)eg用牛顿迭代法求方程近似根Xk=X(k-l)+fkfk【for循环】:for(变量赋初值表达式;控制循环的条件表达式;变量修正表达式)循环计算语句;(4)break语句】:跳出当前语句(退出循环);【continue:中断此次循环的执行,开始下一次。6 .函数【实参向形参单向值传递】(1)类型符标识符(形参)e.g.doublemin(doublex,doubley)函数体returnx(B)?(八):(B)带参数7 .指针【一个变量的地址】用来存放另一个变量的地址的变量称为指针变量2byte)(1)&:取址运算符;*取值运算符;e.g.fl
8、oatfl,*p;p=&a;(*p=a);*(&i)=i;(2)数组名代表数组的首地址(数组的指针)int*p,a10;a=fca0;p=ap+i=&aliplij=ai=*(p+i)8 .结构(1)结构体类型定义【仅定义,不分配内存,也不能对结构类型名进行赋值、运算、存取】struct标识符e.g.structperson域类型域名称;char*name;或者写charname81;):不要忘了分号!intnum;structperson*next;/11structpersonp1;错误pl,p2=JYuHUa”,10,“1.iSan,ll();结构体嵌套定义不允许包含本身,但可以包含指向
9、自己的指针。(2)结构体变量定义【占有一定内存】struct结构体名结构体变量名e.g.structStdTypestul,stu2,stu10;也可定义指向结构的指针变量egDate*pd,date3;/pd:结构指针(变量);date3:结构变量pd=&date3;e.g.student*stp=成员名c. (*指针变量名).成员名(=b.)e.g.structStuscore*sp=st;sp-name等价于(*sp).name(4)结构体数组【基本元素是结构体类型的数组】Sturctcomplexc10;复数cO.real&c5-img(5)结构和函数结构或结构成员作为函数参数,必须用
10、return语句,且原结构不被修改;结构地址或结构指针作为函数参数,函数可直接把结果存储于结构指针形参所指成员中,无返回值。(6)类型定义【typcdefe.g.typedcfintINTEGRA1.;typcdcfstructcomplex;8.链表【动态数据结构:按n自动设定数据对象的个数,可表示某个元素之后是哪一个元素】(1)头指针head表元1(数据+指向表元2的指针)一表元2一尾表元(数据+NU1.1.)structNodeintvalue;结构包含有指向与自己同样结构的指针structNode*next;);(2)动态内存空间的获得与释放【生成动态变量的库函数:malloc&cal
11、loc;释放:free】a.库函数:#includeb.malloc()函数【返回值是void类型,须将返回值强制转换成某种特定指针类型】void*malloc(unsigncdsize)向系统申请SiZe个字节的连续空间函数调用成功返百所分配空间的起始地址,失败则返回NU1.1.。e.g.intNode*;向系统申请能存储类型为intNode的p=(intNode*)malloc(sizeof(intNode);一个结构的存储空间,P为指向这个空间的指针注:动态变量没有名字,只能通过指针引用它。c.ca11oc()函数void*calloc(unsigncdnum,unsignedsize)
12、向系统申请numxsize个字节的连续空间,并将空间清零(malloc不清零)e.g.int*p;申请存储100个整数,p=(int*)malloc(100*sizeof(int);p=(int*)calloc(100,sizeof(int);返回首地址for(intk=0;kc()和CanOC()时的返回值,是指针e.g.p=(int*)malloc(sizeof(int);/sizeof后面可跟数据类型或变量名。free();(3)建立链表structSTU定义一个表元longnum;charname20;floatscore;structSTU*next;;STU*head,*p,*pl
13、,*p2;intn=0;全局变量n,记录链表总结点个数。head=NU1.1.:/建立空链表pl=p2=(STU*)maIloc(sizeof(STU);,创建表元,先向系统申请存储空间。scanf(tt%d%s%f,(fep1-num,p1-name,score);p1-next=NU1.1.;先把PI后置空。while()(4)遍历和查找STU*search(STU*w,intkey)查找函数,W是链表的head,key是要找的数STU*p=head;whilc(p!=NU1.1.&p-num!=key)/p-numnext;returnp;/return(p!=NU1.1.&p-num=key)?p:NU1.1.如果找到输出指针p;没找到NU1.1.;(5)插入新表元a.在首表元前:p-ncxt=hcad;head=p;b.在W之后插入新表元(W不为NU1.1.):p-next=w-next;w-next=p;C.在末尾添加新表元:先从头指针开