您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 2012-2013.2期末知识点【C语言】
2012-2013【2】c语言期末复习知识要点一、基本概念的基础知识(p5)构成c的基本单位是函数main函数是c语言中的一个函数,c语言写的程序,可以有多个函数构成,c程序中有且只有一个main函数,c程序的执行总是从main函数开始,在main函数中结束。c程序中注释可以出现在任何空格可以出现的地方o注释的作用:帮助理解和备忘程序的功能o注释方法两种:///**/o注释书写位置:可以写在任何空格可以出现的地方,原则上,写在代码后面,不影响程序的可读性c语句都要用分号;结束函数由函数的首部和函数体构成函数可以嵌套调用,但是不可以嵌套定义函数之间的书写位置没有固定的要求其他函数,只有被调用的时候,main调用了它,它才会被执行。二、变量和常量(p22)(一)常量是不可以改变的量常量分为整型、实型、字符型整型常量分为:十进制:125;八进制:0125;十六进制:0x12(后面加l的是长整型常量)实型常量分为:3.14(小数),1.23e+3(科学计数)o3.14,可以省略小数点前的整数:.13可以省略小数点后的小数:5.omEn,科学计数法,e前必须有数字,e后必须是整数字符型常量分为:字符常量‘a’,字符串常量“abcd”,转义字符(p29)o字符型:'a'字符常量,它可以存在一个字符变量中,它存储的是该字符的ascii码值,其实是一个整数,一个ascii码在内存中占用一个字节oafjdslkgjfk:字符串常量,它不可以存入一个字符变量中。那如果要表示或者存储一个字符串,怎么办?字符数组来办o转义字符:\ddd:代表1-3位八进制数为ascii码值的那个字符。如\7表示ascii码值为7的字符;\25表示ascii码值为21(十进制)的字符;\101表示ascii码值为65(十进制)的字符。\xhh:代表1-2位十六进制数为ascii码值的那个字符。如\x41表示ascii码值为65(十进制,4*16+1)的字符;\\输出一个\,\双引号输出双引号。o字符串长度判定:“abc\\d\n\123”长度为7;“abcd\n\183”长度为8算法的5个特性(二)变量是在程序执行过程中其值可以改变的量变量要先定义,后使用变量要分类型:类型决定变量存储在哪个区,占几个字节,可以参加什么运算变量有地址:&x变量的值的获得(赋值,从键盘接收)(三)符号常量:宏(四)标识符命名规则:变量命名,函数命名等都是标识符:数字,字母,下划线构成,其中数字不能开头。关键字不可以用来作为用户的标识符。下面标识符中完全合法的标识符是:a)max_234m44xb)32ak-uintgfkc)minprintfk3hj(printf是函数名不是关键字,语法上,可以用来作标识符,但是强烈建议不要使用库函数名作为标识符,容易使代码混乱)三、运算符(p31)(一)算术运算符:+、-*、/、%(除法运算:两个数都是整数,结果取整5/9;求余运算:参加运算的两个数必须都是整数)(二)++,--:变量的值自增1或者自减1++运算符:是使得变量的值+1--运算符:使得变量的值-1++,--:只能用于变量的运算,不可以用于常量,5++,x++++,--:参加运算的操作数是几个?1个,单目运算符c=a++;里面有两个运算符,=和++:如果++在变量的后面,先取变量的值付给c,在将变量a+1;c=++a;先将变量a+1,再将计算后,a的值给变量cwhile(y--){}for(;x--4;)(三)赋值运算符:=,左边必须是变量,右边可以是变量、常量、表达式。复合的赋值运算(+=、-=、*=、/=、%=、&=、|=、^=、《=、》=)特例:赋值运算左右类型不匹配时,如何执行?整给实:直接在整数后面加小数点和若干0;实给整:舍弃小数,不执行四舍五入字符型给整型:原样赋值,数据由原来的一个字节变成了4个字节整给字符:取地址最小的一个字节给字符型变量(四)关系运算符:,,=,=,==,!=y=0;if(y=12)printf();elseprintf();(五)逻辑运算符:&&,||,!逻辑与运算:如果左边的表达式,值为假,则运算结果必然是假,右边表达式将不被判断和执行;逻辑或运算:如果左边的表达式,值为真,则运算结果必然是真,右边表达式将不被判断和执行;(六)条件运算符:?:(七)自动类型转换:intx=1;floaty=3.5;x+y-2.0结果是double型:当不同数据类型做混合运算时,字节少的类型要自动转换成字节多的类型参加运算,结果为字节多的类型(八)强制类型转换:(类型)intx=1;floaty=3.5;x+(int)y-2.0(九)运算符的优先级别(p31)要会比较(十)sizeof(x):测量某量在内存中占用的字节数。x可以是变量,常量,数据类型(十一)输出函数:printf(p37)能处理任何类型的数据。printf函数的两种使用形式:一、原样输出字符串printf(djhskhgf);二、按照某种格式来输出一个数据intc=30;printf(%d,c);printf(c=%d,c);%d十进制整数%o八进制整数%x十六进制整数printf输出的时候,可以人为的控制小数的位数,和数据输出所占的屏幕宽度%10d实际数据的宽度,补空格实际数据宽度,原样输出=原样输出(十二)输入函数:scanf(p39)能处理任何类型的数据(十三)字符输出函数:putchar,只能处理字符类型的数据,并且处理的是单个字符(p41)1.作用:输出一个字符2.它的参数c,可以是:字符型变量,字符型常量,整形变量,整形常量,表达式intx=108;charc='k';putchar(c);//字符型变量putchar('\n');//字符型常量putchar(x);//整形的变量putchar(100);//整形的常量putchar(x+1);//表达式(十四)字符输入函数:getchar,只能处理字符类型的数据,并且处理的是单个字符1.从键盘接收一个字符型的数据2.函数的参数为空3.函数的返回值通常需要存储给另外一个变量例如:c=getchar();四、程序设计的基本结构(一)顺序结构定义:有几个变量?都是什么类型?输入:已知条件是什么?有几个?如何输入计算:程序要计算的量是什么?如何计算?输出:输出什么?(二)选择结构(p58)单个分支的选择结构两个分支的选择结构:绝对值问题三个分支的选择结构:一元二次方程求根问题多个分支的选择结构:分数等级问题if的嵌套:出租车计费问题switch语句switch后面括号中的表达式必须是整型或字符型数据case后面的常量不能重复case后面的常量:可以是整型、字符常量如:case8或case‘a’一个case分支,可以有多条语句,要括起来构成复合语句case和default语句的顺序没有要求,但要注意break的使用default是可以省略不写break是用来结束switch语句的if-else配对原则:else总是和离它最近的、未配对的if配成一对(三)循环结构,三种循环结构的比较whiledo…whilefor①循环变量赋初值;while(②循环条件){④循环体语句③循环变量增值}①循环变量赋初值;do{④循环体语句③循环变量增值}while(②循环条件);for(①循环变量赋初值;②循环条件;③循环变量增值)④循环体语句n=1;while(n=100){s+=n;n++;}n=1;do{s+=n;n++;}while(n=100);for(n=1;n=100;n++)s+=n;初始条件为假,循环一次也不做初始条件为假,循环体执行一次初始条件为假,循环一次也不做“循环条件”为0,即是假;非0,即是真。因此若有语句:for(n=1;1;n++)s+=n;循环为死循环。(四)break和continue:结束循环,提速循环五、数组(一)一维数组:存储一组数据类型相同的数。1.使用这些数据的话,就要引用数组元素,a[i]2.数组名除了作为一个名字存在,还是数组的首地址,也就是第一个元素的地址,a等价于&a[0],输出地址,使用的格式控制符号是:%x,%p(十六进制表示)3.数组中所有的元素地址是连续的(二)定义数据类型数组名[元素的个数]inta[10];[]中,不可以是变量,必须是常量或常量表达式,可以是符号常量:#defineM10voidmain(){inta[M];可以intx=5;intb[x];不可以}元素就有a[0],a[1]......a[9],但是在这个数组中,没有a[10]这个元素(三)初始化1.全部元素初始化:inta[10]={1,2,3,4,5,6,7,8,9,10};2.当你定义一个数组,对全部元素都初始化的时候,可以在定义的时候省略数组的长度:inta[]={1,2,3,4,5};3.部分初始化:inta[10]={1,2,3};4.完全不进行初始化(数组元素的值是不确定):inta[10];(static,全局的:0)(四)接收for(i=0;i10;i++)scanf(%d,&a[i]);(五)冒泡排序算法分析:k表示趟数i表示数组元素的下标if(a[i]a[i+1]){jiaohuan}k=1i=0,.....8n-1-kk=2i=0,.....7k=3i=0-6k=4i=0-5k=5for(k=1;k10;k++)for(i=0;i=n-1-k;i++)if(a[i]a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}#includestdio.hvoidmain(){inti,j,t;inta[10];for(i=0;i10;i++)scanf(%d,&a[i]);for(j=1;j10;j++)for(i=0;i10-j;i++)if(a[i]a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}for(i=0;i10;i++)printf(%4d,a[i]);}(六)一维数组的地址关系a&a[0]a+1&a[1]a+2&a[2]a+3&a[3]…………a+i&a[i](七)二维数组的地址关系一:按行讨论inta[10][10];//初始化了,行号可以省略,但列号绝对不可以省略a[0]是第一行的数组名,是第一行的地址,是&a[0][0]。a[0]+3是第一行,第四个元素的地址,即&a[0][3]结论:a[0]+i等价于&a[0][i]a[2]+2等价于&a[2][2]关系二:按列来讨论inta[3][4];数组名是a,是数组的首地址,是数组的第一个元素的地址首地址是a等价&a[0]、a+1等价于&a[1]、a+i等价于&a[i]inta[]={1,2,3,4};intb[][3]={1,2,3,5,8,9};intc[][2][3]={1,2,3,4,5,6,7,8,9}(八)字符数组定义(一维)charc[20];chark[100];初始化charc[10]={'a','b','c','d','e','f','g','h','i','j'};charc[]={hello};charc[]=hello;(字符数组长度:字符串的个数+1)不可以的初始化:charc[10];c=hello;(数组名是常量,不可以写在赋值左边)从键盘接收1.scanf()%c格式:逐个处理字符数组元素,要使用循环2.scanf()%s格式:用数组名处理字符数组(不做边界检查)scanf(%s,f);//不需要使用循环,直接使用数组名f就可以用%s的格式来输入整个字符串1)系统会在接收的字符串的末尾加上字符串结束的标志字(\0)2)至于输入字符串的长
本文标题:2012-2013.2期末知识点【C语言】
链接地址:https://www.777doc.com/doc-3024101 .html