还剩32页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
语言最重要的知识点复习资料!C总体上必须清晰的)程序构造是三种次序构造,循环构造(三个循环构造),选择构造(和)1if switch)读程序都要从入口,然后从最上面次序往下读(碰到循环做循环,碰到选择做选择)2main)计算机的数据在电脑中保留是以二进制的形式.数据寄存的位置就是它的地址.3)是位,是指为或者是指字节,一种字节二八个位.4bit0l byteo)一定要记住二进制怎样划成十进制5概念常考到的、编译预处理不是语言的一部分,不再运行时间,占编译时间语言编译的程序称为源程1C C序,它以数值寄存在文本文献中ASCH、每个语言程序中函数是有且只有一种2C main、在函数中不可以再定义函数
3、算法的是一定要有输出的,他可以没有输入
4、可用于循环构造和语句,只用于循环5break switchcontinue、逗号运算符的级别最低6第
一、二章语言基础及简朴程序设计C语言由什么构成;(函数:一种语言程序由一种至多种函数构成,)
1.c C是主函数,该函数既是入口又是出口(一种入口,一种出口)
2.main数据类型:基本数据类型(整型,字符,实型,枚举型),占用内存的字节数,表达范围
3.常量:(没有和)
4.123,010189,0x41,T,-
2.30,-
1.2E+5在一种字节内,字符通整型,整型通字符
5.合法的顾客标识符考察
6.合法的规定是由字母,数字,下划线构成,并且第一种必须为字母或则是下划线关键字不可以作为顾客标识符号都不是关键字困惑你的地方main definescanf printfIf是可以做为顾客标识符由于中的第一种字母大写了,因此不是关键字If实型数据的合法形式考试口诀前后必有数,后必为整数.
7.e ee就是合法的,且数据是
2.333e-l
2.333x10-1字符和字符串数据的合法形式:
8.是字符占一种字节,是字符串占两个字节(具有一种结束符号)T1的数值表达为的数值是的数值是101ASCII48,a ASCII97,A ASCII65转义字符的考察():转义符等
9.p28ri,\0,\ddd,\xdd{static int a=3;{int k=2m=l n;f fa+=x;n=fun3k;return a;n=fun3m;%printf d\rT,n;A.3B.4C.6D.9宏定义标识符字符串,宏一定要先替代后计算
14.#define分带参和无参宏定义无参宏定义〃表达碰到时用替代5n#define Px*x Px*x带参宏定义如#€^加〃表达碰到时用替代6Px x*x Pxx*x[无参宏定义]举例若有定义:则体现式的值为#defineN3+2N*2B1A.5B.7C.10D.0解释:[带参宏定义]举例N*2=3+2*2=3+4=7o如下程序运行后输出成果是B#define MINmn mnm:nfmain{int a=3b=5c;f fc=2*MINa b;fprintf%d c;fA.3B.5C.6D.10解释:c=2*MINa b=2*aba:b^2*353:5f o第六章数组一维数组的定义格式为类型阐明符数组名[常量体现式];例如
1.int a
[10];常量体现式可以是整型常量或字符常量或枚举值或符号常量体现式注意不能包括变量.例如,下面这样定义数组是不行的:举例•
①int n;scanf%d,n;int a[n];
②/*不能用变量阐明数组大小*/int k,M=5,a[k]b[M];f
③数组大小为没故意义float a
[0];/*V
④/*不能使用圆括号int b2;V数组元素下标可以是整型常量.变量.变量或整型体现式语言规定,下标的最小值是,最大值则是数组大小减C01中,表达数组有个元素,下标从开始一直到这个数组元素分别是eg:m
[8]m
8078、、、、、,注意没有皿m
[0]m[l]m
[2]m
[3]m
[4]m
[5]m
[6]m
[7]Jrx x对一维数组的初始化赋值⑴可以只给部分元素赋初值没有赋值的元素对于数值型数组,自动赋初值为;对0字符型数组,自动赋初值为空字符只能给元素逐一赋值,不能给数组整体赋值{}2int m
[5]=2,2,2,2,2;不能写成int m
[5]=2;⑶假如给所有元素赋值,则在数组阐明中,可以不给出数组元素的个数,其长度等于初二维数组元素的引用形式数组名[下标[下标1]2];值表中数组元素的个数口={}int m123,4,5;二维数组元素的初始化分行初始化存储类型符数据类型数组变量名[行常量体现式][列常量体现式]=1{{第行初值表},{第行初值表},……,{最终行初值表}};011若有定义:对则$[的值为Eg:5
[3]
[4]={{1,2},{0},{3,4,5}};2]
[1]B\A.3B.4C.0D.1省略一维大小存储类型符数据类型数组变量名[行常量体现式][列常量体现式]2={初值表;A.2B.3C.6D.7%Eg:int a[]
[4]={123,4,5,6,7,8,9,10,11,12};printf d\n”,a[l]
[2];字符数组的定义格式数组名[常量体现式];
7.char.在语言中,没有专门的字符串变量,一般是用一种字符数组来寄存一种字符串,由于8c字符串总是以作为串的结束标志,因此当把一种字符串存入一种数组时,也把结束符、‘\0’存入数组,并以此作为该字符串结束的标志0语言容许用字符串的方式对数组做初始化赋值有两种方式:
9.C⑴按单个字符的方式赋初值,其中必须有一种字符是字符串的结束标识(但字符数组可以不包括‘如口={\0o chars2230};()直接在初值表中写一种字符串常量如〃};{何以省略
10.2chars□={123chars□={T2/3/\0r};=char s[]={};=char s[]=f/123z/;A.19B.16C.18D.14设已定义则字符串所占的字节数是(
11.char s[]=i,\Name\\Address\023\n;,B\.字符串的常用串函数12
①函数一测试字符串长度strlen格式(字符数组);•strlen功能测试指定字符串的实际长度(不含字符串结束标志),并返回字符串的长度•‘\0’其中,函数的参数可以是字符型数组名或字符串常数,函数的返回值是字符串的长度得到的是有效字符的个数(不包括)得到的是整个数组的长度(包括)strlen sizeof30
②函数——字符串连接函数.strcat格式(字符数组,字符数组)strcat12;功能把字符数组中的字符串连接到字符数组中字符串的背面,同步删去字符串211的串标志,构成新的字符串该函数返回值是字符数组的首地址’\0’1
③函数一字符串比较函数.strcmp格式(字符串,字符串)strcmp12;功能字符串和字符串可以是字符型数组名或字符串常量按照码次序比12ASCII较两个数组中的字符串,并由函数返回值返回比较成果函数一字符串拷贝函数strcpy格式(字符数组字符数组)strcpy1,2;功能把字符数组中的字符串拷贝到字符数组中字符串结束标志也一同21‘\0’拷贝字符数组也可以是一种字符串常量,这时相称于把一种字符串赋予一种2字符数组注意:字符数组必须定义的足够大,以便能容纳被复制的字符串,字符数组的长度不11应当不不小于字符串的长度;2字符数组必须写成数组名形式,字符数组可以是字符数组名,也可以是一种字符串12常量;有时只需要复制字符数组中前面若干个字符,这些用函数也能实现2strcpy如表达将前面个字符复制到中,从而取代中最前面的:strcpyml,m23m23ml ml3f个字符冒泡排序、直接排序、互换排序
13.杨辉三角、矩阵转置矩阵转置只要循环二分之一就可以
14.X一维数组倒序寄存、矩阵转置只要循环二分之一就可以
15.第七章指针■本章重要内容指针的概念、定义和引用、指针与函数、指针与数组、指针与字符串、指针数据类型小结指针变量的本质是用来放地址,而一般的变量是放数值的
1.中的差异int*p*p^n p可以当做变量来用;*的作用是取背面地址指向的数值,是当作地址来使用*p p p和++的之间的差异改错题目中很重要*p++*p是地址会变化;是数值会要变化*p++*p++指针变量的定义一般形式为类型符*指针变量名;如
2.int*p;指针变量的引用两种基本的指针运算
3.□:取变量的地址□*:指针运算符或称“间接访问”运算符指针变量作函数参数
4.[例]用函数实现两个变量的互换
7.3void s*p1,int*p2{int*t;t=*p1;*p1=*p2;*p2=t;main;{int a=5,b=9;SMprintfCa=%d,b=%d\n,a,b;指针函数函数的返回值为指针
5.一般定义为类型符*函数名参数表{……}[例把两个数中的最大值设为
7.410int*maxint*q1Jnt*q2{return*q1*q2q1:q2;}main{int x=5,y=9,*p;p=maxx,y;*p=0;n Hprintfx=%d,y=%d\n xy;55函数指针用一种指针变量存储一种函数入口地址,即指向函数,这样的指针称函数指针
6.
①.定义形式为类型符*函数指针变量;如int*p;
②.使函数指针指向一种函数,一般的格式为函数指针变量二函数名;如p=max;
③.调用函数一般格式为*函数指针实参表如[例通过函数指针调用函数c=*pa,b;
7.5]int maxint xjnt y{return xyx:y;}int minint xjnt y{return xyx:y;}main{int a=5b=9c d;///〃定义函数指针〃指向函数p=max;〃调用函数c=*pa b;fp=min;d=*pa b;fnprintf Max=%d,Min=%d\n qd;指针与数组的关系
7.一种变量有地址,一种数组包括若干个数组元素,每个数组元素都在内存中占用存储单元,它们均有对应的地址,这个地址就可以用指针来实现存储如有inta
[5],*pjq;p=a[O];q=a
[2];则和值分别为和*p=5;*q=8;a
[0]a
[2]58语言规定数组名代表数组的首地址,也就是第一种元素的地址
8.C a
[0]因此a o a
[0]o若/*或写成p=a;p=a[O];*/贝:p+1oa[l]*p+l0a[l]p+i0a[i]*p+i3a[i]引用一种数组元素,可以用下标法或指针法
9.口通过数组的起始地址计算数组元素的地址,即或形式*a+i*p+i口用指针变量处理数组元素,即形式p++main{int a
[5]={3,8,9,2,6},i,*p;p=a;fori=0;i5;i++u M{printf%d,*p;p++;}【例指针运算符与增运算符〃++〃同步作用于一种指针变量的状况
7.5]1main int i,a[]={11,22,33,44,55,66,*p=a;printf%3d,,*p++;11printf%3dj,*p++;12printf%3dj,*++p;33printf%3d\n,++*p;34forp=a;pa+6;p++printf%3d,,*p;122234445566printf\n;getch;、通过指针引用二维数组元素2二维数组和数组元素的地址1int a
[3]
[4]={{1,2,3,4},{6,7,8,9},{11,12,13,14}a
[0]a[l]a
[2]贝!l a=a
[0],a+1=a[l],a+2=a
[2]对于一维数组名为则a
[0],a
[0]=a
[0]
[0],a
[0]+l=a
[0][l].因此第行第列的地址表达为01a
[0]+l.因此是第行第列元素的地址又等价于a[i]+j ij a[i][j],a[i]*a+i因此在二维数组里和都表达地址*a+i+j a[i]+j通过地址访问二维数组2假设有如下定义int a
[3]
[5],i,j;则二维数组中的任一元素,可以用下述体现式之一来引用表达a.*却]由上述知是第行第列元素的地址,因此与等价1+j a[i]+j ij*a[i]+j也是第行第列元素的地址,因此与疝用等价
2.**a+i+j,*a+i+j ij**a+i+j相称于先取地址,再取其内的值,因此与等价
3.*a+i[j],*a+i+j⑼⑼由于每行个元素,⑼⑼就是第行第列元素的地址,因此
4.*a+5*i+j5a+5*i+j ij*a
[0]也与等价
[0]+5*i+j a[i][j]*a
[0]
[0]+5*i+j=*a
[0]+5*i+j=**a+5*i+j=a[i][j]通过指向元素指针访问二维数组3如;或或int a
[3]
[5],i,j,*p p=a[O][O];p=*a;p=a[O];则等价于等价于a[i][j]*p+i*5+j p[i*5+j]数组名作函数参数的指针解释
10.[例对形参数组改为指针
7.7]int array_maxint x[]jnt n{int i,m=x
[0];fori=l;in;i++ifm x[i]m=x[i];return m;main{int a[]={8,7,55,23,49},max;max=array_maxa,5;〃printf Max=%d\n”,m;.指针数组11一般阐明形式为类型符*数组名[数组大小];如int*p
[5];指针数组的简朴使用EHZ3Lmain{int a
[5]={1,3,5,7,9;int*num
[5],i;fori=0;i5;i++num[i]=a[i];fori=0;i5;i++M aprintf%d,*num[i];多级指针
12.有若使则是就指向指针变量的指针变量,称为二级指针int a,*p=a;q=p;q q二级指针定义的一般形式为类型符**指针变量名;如int**q;贝或*或**成果相似I:a=5;p=5;q=5;同样可以有三级、四级指针等等,我们把二级及二级以上的指针称为多级指针[例数组的输出
7.9]main{int a
[5]={1,3,5,7,9};⑸int*b,fori=0;i5;i++p=b;fori=0;i5;i++M Mprintf%d,**p++;指针与字符串
13.字符串的表达形式字符数组名[数组元素个数]char如有:char str
[80]=China,*p=str;printf%s,str;printf%s,p;printf%s China;用%输入/输出字符串时,只需要懂得字符串的开始地址即可S使指向字符串的开始地址,可写成p char*p=China”;字符指针作函数参数
14.[例将例改用函数完毕
7.11]
7.10int StrLenchar*s{int n=0;while*s++n++;return n;mainH{char str[]=abc,*p;int len;p=str;len=StrLenp;的长度为%printf%s1\11,p,len;运行成果的长度为a be3返回字符串的函数
15.[例改写字符串复制函数
7.13]char*StrCopychar*strl,char*str2{char*p=strl;,while*strl=*str2!=\0{strl++;str2++;}return p;mainQ{charsl
[80],s2[]=abc;复制之后的字符串,fprintf%s\n StrCopysl,s2;,复制之后的字符串abc字符指针数组
16.[例将若干字符串输出
7.14]main{char*str{Word ExcelOutlook;inti;4,Mfori=0;i3;i++printf%s\n,str[i];幽坦使用多级指针完毕若干字符串输出main11{char*str[]={Word ExcelOutlook};char**p;forp=str;pstr+3;p++4,Mprintf%s\n,*p;输出:WordExcelOutlook字符指针与字符数组的讨论
17.■占用的内存空间不一样char str
[80];char*p;■初始化的概念不一样char str
[80]=abc;强制类型转换:
10.一定是()不是()注意类型上一定有括号的int aint a,注意(注)()和()的区别前是把转型,后是把转型再加.自加、a+b int a+b a+b ab110自减体现式假设(是为)(为)a=5,++a6,a++5;运行的机理是先把变量的数值加上然后把得到的数值放到变量中,然后再用这个++a1,a+体现式的数值为,而是先用该体现式的数值为,然后再把的数值加上为,再+a6a++5a16放到变量中进行了和后在下面的程序中再用到的话都是变量中的了a++a a++a a6考试口诀++在前先加后用,++在后先用后加逗号体现式优先级别最低本现式的数值逗号最右边的那个体现式的数值如()的体
12.2,3,4现式的数值就是
4.位运算的考察口诀先转二进制再运算13总的处理措施(先把十进制变成二进制再变成十进制工例1:char a=6,b;这种题目的计算是先要把的十进制化成二进制,再做位运算b=a2;a6例在没有舍去数据的时候,〈左移一位表达乘以右移一位表达除以2:2;20符号两边规定是整数不是整数就错了
14.%变量变量的命名规则满足标识符的命名规则,辨别大小写,关键字()除外,变量的定义
15.p7一般都要放在函数或程序的开头位置(即先定义后使用)分号表达一种语句结束
16.变量的定义类型名变量名列表;(不一样的类型要写成两句),定义的时候给值成为变量
17.的初始化,初始化的时候不能连等(如是错的!是对的|工int a=b=c=l;int a,b,c;a=b=c=l;.变量的赋值变量名=体现式或变量名复合赋值运算符体现式(复合赋值运算符+=,*=,18如:行吗?不行(赋值体现式左边只能是变量)!赋值的时候可以连等xyz+2=c.输入一种字符:()()有这两个函数及时一定要加上〃19x=getchar,putchar x,FILE*include stdio.h原则输入输出的头文献包括()表达暂停程序运行,可直接查当作果,否则运行完后不显示成果(需按
20.getch,ALT+F5X()或(格式控制符,变量列表);变量列表不加
21.printf xxxxxxxxxxxxxxx;printf〃char*p=abc;■数组名是常量,字符指针是变量str=str+2;/*Error*/p=str+2;/*Ok*/■字符数组有一块确定的、持续的内存单元;而指针只有一种字的内存单元因此:char str
[80],*p;u,,u,,scanf%s,str;/*Ok*/scanf%s,p;/*error*/指针数据类型小结
18.■多种指针定义小结整型变量intx;x整型指针int*p;p是一种整型数组,有个元素int a[n];a n是一种整型指针数组,有个元素int*p[n];p n是一种函数,返回一种整型值int f;f是一种函数,返回一种整型变量的地址int*p;p为一种指针,它可以指向一种整型函数int*p;p为一种二级指针,它存储另一种指针的地址int**p;p■指针运算小结、指针变量加、减一种整数,指的是移到向上观向下一种单位的地址1例如、、、、
二、二等p++p-・p+i p-i p+i p-i、指针变量赋值2如有:贝」/*取变量的地址,使指向int a,*pL*p2,array
[10],max,*p3;I pl=a;a pl a*/p2=array;指向数组的起始地址*//*p2array指向元素*/指向函数*/pl=array
[4];/*pl array
[4]p3=max;/*p3max的指向与的指向相似*/;类型不一样*/p2=pl;/*p2pl pl=/*error,类型不一样*/a=p2;/*error,,三名主义考试的重点19数组名表达第一种元素的地址数组名不可以自加自减,它是地址常量名函数名表达该函数的入口地址字符串常量名表达第一种字符的地址一维数组的重要概念
20.对矶这个数组的讨论10]、表达数组名,是第一种元素的地址,也就是元素的地址1a a
[0]、是地址常量,因此只要出现,或者是赋值的都是错误的2a a++a=a+
2、是一维数组名,因此它是列指针,也就是说是跳一列3a a+1对的讨论a
[3]
[3]、表达数组名,是第一种元素的地址,也就是元素⑼的地址1a a
[0]、是地址常量,因此只要出现,或者是赋值的都是错误的2a a++a=a+
2、是二维数组名,因此它是行指针,也就是说是跳一行3a a+
1、也都是地址常量,不可以对它进行赋值操作,同步它们都是列指针4a
[0],a[l],a
[2]a
[0]+l,a[l]都是跳一列+l,a
[2]+l、注意和、是不一样的,它们的基类型是不一样的前者是一行元素,后三5a a
[0]a[l]a
[2]x者是一列元素二维数组做题目的技巧
21.环节一把他们写成第一列第二列第三列假如有这样的题目a
[3]
[3]={1,234,5,678,9}->第一行a
[0]123—>第二行a[l]a
[2]环节二:这样作题目间很简456->第二行朴789()我们就懂得是第一行的第一种元素往背面跳一列,那么这里就是元素,因此是工*a[O]+l)我们就懂得是第二行的第一种元素往背面跳二列那么这里就是元素,因此是+26一定记住只要是二维数组的题目,一定是写成如上的格式,再去做题目,这样会比较简朴数组的初始化,一维和二维的,一维可以不写,二维第二个一定要写合法合法但非法int a[]={l,2}inta[]
[4]={2,3,4}inta
[4][]={2,3,4}二维数组中的行指针
16.inta[l]
[2];其中目前就是一种行指针,跳一行数组元素搭配(*)指针a a+1p
[2]矶⑴目前就是一种列指针跳一种数组元素搭配*指针数组使0],a a
[0]+l p
[2]尚有记住脱衣服法则变成*变成再可以变成**这个思想很重要!a
[2]a+2a
[2]
[3]*a+2
[3]a+2+3不能对字符数组整体赋值,而字符指针容许整体赋值
17.指针可以后移或前移或而数组名只能用,注意一维数组和二维数组
18.pp++p-p+i,a a+i的区别两个地址指针可以比较大小,背面大前面小;可以相减表达差几种元素
19.对字符数组或字符串的操作一般用
20.或或while*s whiles[i]forp=a;pa+n;p++{s++}{...;i++}注意新生成的字符串与否有结束符\
0.字符串打印:10char sl
[10],s2
[6]
[5];workerchar name
[10];Sochar sex;workerstruct60So{int year;队后嗡q版目既6int month;int day;}birthday;float wages
[2];叩}worker woriers
[100]*p=workei;f第八章构造体,共用体和枚举结构体的声明•同类型结构体变量间的整体赋值,及变量的初始化声明结构体类型的一般形式「合法标识符stu1={1019,
87.5,“Da可省:无名结Struct student{intJ§如取速体num;1=2;/类型标识符(夜员名;[乎能省略.char name
[20];初始化类型标识符成员名;char sex;struct studentstua={101lot age;struct student“Wan LinVM,,19,
87.5{int num;float score;“DaLian”};char name
[20];char addr
[30];char sex;成员类型可以是即舁「F u2={111JTomM/9,60USA”};int age;[基本型或构造型;J()定义结构体变置礴^a[]律定义的结构体无结构体名则只能直接定蝠构体变量,不能间接定义stiuct staffa,b;通过指针访问构造体变量的组员
3.X
①构造变量名.组员名(名字引用);
②构造指针-组员名(指针引用);
③(*构造指针).组员名(将指针转化为名字引用);.『构造变量占用内存状况』构造变量的各个组员分量在内存中占用持续存储区域,所占4内存大小为构造中每个组员的占用内存的长度之和联合类型()
7.类型定义语[已经有数据类型」[顾客定义的类型名」-----------------Xeg:typedef intX Y
[10]*Z;z zXa;Y b;z c;其中各代表什么?a,b,c整型变量整型数组整型指针变量a,b
[10],c第九章文献操作与位运算个位运算符位左移<<、位右移>>、按位取反~、位与、位或|、位异或L
63.位运算题目计算是先要把十进制化成二进制,再做位运算2在没有舍去数据的时候,<<左移一位表达乘以>>右移一位表达除以2;
2.所谓“文献一般指存储在外部介质上数据的集合3按文献中数据的组织形式来分,可分为文本文献(即码文献)和二进制文献ASCII.文献操作的过程对磁盘文献的操作必须“先打开,后读写,最终关闭”
4.文献的打开方式5打开方式含义及阐明以只读方式打开一种文本文献,只容许读数据“r”以只写方式打开或建立一种文本文献,只容许写数据w以追加方式打开一种文本文献,并在文献末尾写数据a,r+以读写方式打开一种文本文献,容许读和写w+以读写方式打开或建立一种文本文献,容许读写以读写方式打开一种文本文献,容许读,或在文献末追加数据a+以只读方式打开一种二进制文献,只容许读数据rb以只写方式打开或建立一种二进制文献,只容许写数据wb以追加方式打开一种二进制文献,并在文献末尾写数据ab,,rb+M以读写方式打开一种二进制文献,容许读和写以读写方式打开或建立一种二进制文献,容许读和写“wb+”ab+1以读写方式打开一种二进制文献,容许读,或在文献末追加数据.常用文献操作函数6函数名功能调用举例返回值文献指针名FILE*fp;打开文献(文献名,使用fp=fopenc:\\tc\\sourfopen=fopen文献方式);ce.datJT;(文献指针变fclose fclose成功关闭返回值为,假0关闭文献fclosefp;量);如关闭出错为())E0F-lo(文献指针变()ferror ferrorferror fp;返回,表达未出错;返0出错检测量);/*默认初值为零*/回非,表达出错0(文献指针变量);feof指针与否到尾feof feoffp;若到文献末尾,函数值为返回位置指针目i=ftellfp;返值成功,返回目前位置前位置(用相对ifi==-lLftell ftellFILE*fp文献开头的位移指针位置;失败,返回-1Lprintf eirorn;量表达)()fseek fp,100L,0;(文献指针,位移fseek/*将位置指针移到离文献量,起始点);起始点头个字节处*/表达从何处开始计算100用来移动文献位移量.起始点表达措施fseek内部位置指针位移量以起始点为基文献首SEEK_SET0点,向前移动的字节目前位置SEEK_CUR1数一般规定为long文献末尾SEEK_END2型把文献内部的rewind(文献指针);位置指针移到文rewind rewindfp;献首()ch=fgetc fp;读取成功返回文献目前从指定的文献字符变量=(文fgetc/*从打开的文献中读取位置的一种字符;读错误fgetc fp中读一种字符献指针);一种字符并送入中*/ch时返回EOF]将字符(的值)ch输出到所指向若写操作成功,则返回一种fpfputc的文献中去fputcch fp;fputcch,fp;向文献所输出字符的值;否f则返回(其值为EOF-11()fgets str,n,fp;从指定的文献中函数返回时,表明操作成0/*从指向的文献输入读一种字符串到(字符数组名,,fpfgets nfgets功;返回非时,表明写操0个字符到,在最终字符数组文献指针);n-1str作失败中加一种‘\0V(字符数组名,文fputs函数返回时,表明操作成献指针);0将指定的字符fputs fputsCChinafp;功;返回非时,表明写操/*第一种参数可以是f0串写到文献中作失败字符串常量、字符数组名或字符型指针*/有定义float a
[5];freada,45fp;ff读数据块fread freadbuffer,size,count,fp;/*从所指的文献中,每次fp读个字节(一种实数)送入4实数组中持续读次,即a5读个实数到中*/5a有定义:float b
[5];fwrite()a,4,5,fp;fwritebuffer,size,/*从所指的文献中,每次fp写数据块fwritecount,fp;从实数组中输出个字节,b4持续输出次,即从中输出5b个实数*/5函数的返回值为,表EOF%(文献指针,格fscanf fscanffp,d%F,i,格式化读数据明读错误;否则读数据成fscanf式字符串,输入表列)x;功%(文献指针,格式fprintf fprintffp,d%F,i,格式化写数据fprintf字符串,输入表列)x;判断文献与否结文献结束,返回真(非);0feof feofFILE*fp feoffp束函数文献未结束,返回
0.文献输入输出小结7分类函数名功能打开文献fopen打开文献关闭文献关闭文献fclose变化文献位置指针的位置fseek文献定位使文献位置指针重新至于文献开头rewind返回文献位置指针的目前值ftell若到文献末尾,函数值为真feof文献状态若对文献操作出错,函数值为真使ferror和函数值置零clearerr terrorfeof getc从指定文献获得一种字符把fgetc putc文献读写字符输出到指定文献从指定文献读fputc取字符串把字符串输出到指定文献fgets从指定文献读取一种字型把fputs int一种字输出到指定文献从指定文献getw中读取数据项把数据项写到指定文putw献中从指定文献按格式输入数据按freadfwrite指定格式将数据写到指定文献中fscanffprintfQ(格式控制符,地址列表),地址列表可为数组名、指针变量名及一般变量名(一
22.scanf般变量名前要加加1()
23.printf%m.nf,
32.6789的格式控制符中,除了逗号,一般不加其他字符;一定要记住,有逗号时输入要加逗号,
24.scanf否则数据用空格隔开,字符连着输入;没有“的写法,只有“的写法,%mf”型用%型用%用%float f,double lf,long double‘Lf不一样类型的数值型数据进行混合运算
25.不一样类型的数值型数据进行混合运算时,先要把低数据类型向高数据类型转换,成为同一类型后才进行运算高平long double横向箭头表达必须进行的转换tdouble-float逗号运算符是最低的运算符t常量不能++、--;long例()b=a=la++a++///t又例()()又例()b=a=2+a=3,a=l;b=++aunsigned()t+++a低二与二二的区别(赋值和等号)hit-chai\short在语言中,对于逻辑运算,非零的数(不管实数还是整数)都认为是真的,真的就是
26.C,假的就是;10关系运算的成果是逻辑值(真为假为
27.10X运算符:
28.运算符的优先序():成单算移有关,异或逻条赋逗p246运算符的结合性():条件.单目,赋值运算符(输出也是自右而左运算)p246printf『所有运算符』组员运算构造体组员.单目运算取值*,取址,位取反算术运算*/%级别高于+,-〜位移运算,关系运算,=,,=级别高于仁二,!二位与运算位异或运算八位或运算|逻辑运算级别高于||条件运算?,,A赋值算二,+=…VV=,=,=1=,=struct st{int n;float x;例如}*.p如;下程序的运行成果是void main{struct starr
[3]={{
105.6}{
127.1}{14,
6.7}};,/,,p=arr;/z,zprintf%d\n,++p-n;〃%printf d,%.2f\rT,p-n,p-x;A12B11C11D1212,
7.1010,
5.6012,
7.1014,
6.70第
三、四章选择和循环构造程序一般采用自顶向下的编写格式,模块化函数
1.C程序构造有三种次序,选择分支,循环
2.C{}:用在函数,或复合语句
3.分支构造或选择构造构造和构造]
4.[if switch
①分支构造.if单分支体现式语句;或体现式{语句组}if if双分支体现式语句;if1语句else2;多分支体现式语句;if:if11体现式语句else if22;•••体现式语句else ifn-1n-1;语句else n;多分支
2.switch:switchx语句{case xl:1;[break;]•••语句case xn:n;[break;]语句;default:[break;]例main{int c;whilec=getchar!=\n{switchc-2{case0:case1putcharc+4;case2:putcharc+4;break;case3:putcharc+3;case4:putcharc+2;break;当输入〈回车〉,程序的输出成果是(\247A689B6689C66778D66887总结switch其语义是先计算出体现式的值,用此值与哪个后的常量体现式的值相•case一致,则执行那个后的语句组,假如语句组后有语句则直接退出case break switch构造,如语句组执行后没有语句则继续执行后续后的语句组,直到碰到break case语句退出构造,如没有语句则会执行后续所有或break switchbreak casedefault后的语句组再退出构造switch若计算出体现式的值与后的所有常量体现式的值都不一样则只执行•case及之后的语句组一直执行到最终(若遇则终止退出构造),如default breakswitch循环语句:
5.没有语句则直接退出构造default switch⑴(体现式体现式体现式)或(体现式体现式体现式)for1;2;3for1;2;3(循环体语句组;循环体语句;用于结束当层循环,跳到当层循环背面的语句*/[break;]/*用于结束当次循环,跳过当次循环背面的语句,进入下次循环*/[continue;]/*体现式(体现式)2while while(循环体语句组;循环体语句;[break;][continue;]⑶do循环体语句组;•••[break;]•••[continue;](体现式);}whilefor i=l;i=10;i++for i=l;i=10;i++二二if i%20continue;if i%2==0break;〃%〃,printf di;〃%〃,printf di;例循环嵌套从外循环进来,内循环结束后,再到外循环,如此反复,直到外循环结束)
6.或x=0;x=0;fori=l;i=2;i++fori=l;i=2;i++forj=l;j=i;j++x+{j=l;whilej=i=i*j;{x+=i*j;j++;}可用于和循环语句,一种只退出一层;而只对循环有效
7.breakswitchbreak continue记住质数的判断,斐波那契数列,辗转相除法,求数列的和(有正符号怎样处理?置
8.标志位)循环与循环类似,属于先判断后执行;属于先执行后判断•for whiledo while,语句中有三个体现式体现式一般用来给循环变量赋初值;体现式一般是循•for12环条件;体现式用来更新循环变量的值3语句中的各个体现式都可以省略,但要注意分号分隔符不能省略•for假如省略体现式和体现式需要在循环体内设法结束循环,否则会导致死循环•23语句用在循环中时,可以直接终止目前循环,将控制转向循环背面的语句break•continue语句的作用是跳过循环体中剩余的语句而执行下一次循环嵌套循环时,必须将被嵌套的循环语句完整地包括在外层循环的循环体内•第五章函数系统函数数学类函数,输入输出函数,字符串类函数
1.math.hstdio.hstring.h自定义函数格式
2.类型名函数名形式参数列表函数体不写函数类型名默认为整型
3..假如函数类型名为表达无返回值函数不写4void return函数中或调用函数之前应当先申明,怎样申明?假如调用函数写在被调函数之前,且被调函数类型名不是整型或字符型,则在调用列表;函数名形式参数函数的递归直接或者间接调用自身如阶乘
6.全局变量在函数外定义的变量,假如定义时没给值,默认为
7.0局部变量在函数内定义的变量、形式参数、复合语句中定义的变量,假如没给详细
8.的值,该值不确定对于全局变量和局部变量重要观测在函数中与否被重新定义,若全局变量和局部变量
9.同名,则自动屏蔽掉全局变量函数调用时,实参向形参传递
10.按值传递形参的变化不会变化实参的变化1若有返回值将值带回,否则带回控制流,函数的返回值类型与函数类型一致;按地址传递形参的变化就会有也许变化实参的变化2数组传递,一般就把数组名及数组元素传过去3假如一种函数名为严禁出现,不管递归与否满足标识符命
11.funx,funx=…名或;不要写成
12.return y;returnyreturn yly2;z静态变量⑴没给值,默认为一直占用内存,其值会保留下来即赋值一
13.static intx;0;2次,不再重新赋值,保留上次运行成果[静态变量]举例:如下程序的运行成果是eg CXfun3intxmain。
个人认证
优秀文档
获得点赞 0