1C语言章节复习第一章:C语言概述1、C语言的特点1)任何一个C程序有且有一个main()函数。2)任何一个C程序文件有且有一个main()函数,一个C程序总是从main()函数开始执行。3)C程序的基本单位是函数。4)C函数的基本单位是语句。5)C程序的每个语句必须以;结束。6)C程序的以/**/作注释的开始和结尾。7)C程序的每个语句可以写多行。8)C程序的每行可以写多个语句如:a=10;printf(“%d\n”,a);9)C语言区分大小写。_10)C语言没有输入输出语句,由函数代替。11)“#”为编译以预处理,“include”包含语句。12)在C只能识别半角语言字符,不能用全角。如果想输出汉字,必须在函数内用“”括起来。第二、三章:数据类型、运算符和表达式及标准输入输出1、C程序的标识符只能由字母、数字、下划线组成、并且第1个字符必须为字母和下划线____。2、常量整型:三种表示形式:a)十进制整数,例:12;b)八进制整数,例:012;c)十六进制整数,如0、258、-3875、0357、0x35b、-6945L实型:两种表示形式:a)十进制小数形式,例:123.456;b)指数形式,例:1e3,2.3e-3。13.6795、-0.58、-.45、100.、0.5e5、-12.4e-10、12.5E-2注意:1)E后的指数部分必须为整数2)在字母E或e的前后必须有数据3)在字母E或e的前后及数字之间不能有空格字符型:用‘’括号括起来的单个字符1)普通字符:’a’、’B’、’;’、’%’、’#’、’:’2)转义字符:’\n’、’\t’、’\r’、’\b’、’\\’、’\’’、’\”’3)用”\”加上1~3位八进制表示一个字符(范围0~377),如’\54’、’\127’、’\07’用”\x”加上1~2位16进制表示一个字符,如’\x54’、’\xa7’、’\xaf’字符串型:用””括号括起来的多个字符,c语言自动在后面加上’\0’。如”Thisisamap!”、“bdWQ\\hm\bab\’89\”4A\tOU”符号常量:#definePI3.14#defineEOF(-1)3、一个变量包含五个要素类型、名称、内容、地址、存储类型。4、填写下表2类型表示占用字节数(视系统而定)表数范围/有效位数输出格式整型Int2-32768--+32767%d%o%x无符号整型unsigned20~65535%u%o%x长整型Long4-2147483648+2147483647%ld%lo%lx单精度浮点型Float4%f%e%g双精度浮点型Double8%lf%f%e字符型Char10~255%c字符串型charNn%s5、不同类型的数据进行混合运算时,数据的转换方式有两种:自动转换和强制类型转换,其中前一种转换方式的规则是:低类型转换成高类型、赋值号右边的类型转换成左边的类型6、printf(“格式控制”,输出列表)1)格式控制包括:原样输出字符、格式符、转义字符、格式符包括(d、o、x或X、u、f、e或E、g或G、c、s、p)2)输出列表可以是常量、变量、表达式,都是输出它们的值,各项之间用”,”分隔。3)格式控制与输出列表类型和项数相同4)指定宽度m或m.nA)m表示输出的总宽度。实际宽度m时左边补0,实际宽度m时则按实际位数输出。如printf(“%6d,%3d\n”,3587,3587);B)n表示按四舍五入输出的小数位数,或表示只取字符串左端n个字符。如printf(“%7.3f,%5.4s”,590.5327,”abcderf”);5)加L或l:用于输出long型和double型6)加减号-:左对齐7)加0:左边补07、scanf((“格式控制”,输入的地址列表)1)格式控制包括:格式符、原样输入字符2)地址列表一定是地址:普通变量地址、字符串数组名(首地址)3)输入的各项之间用空格、Tab键、回车分隔。4)格式符前加l,表示输入长整型数据(可用%ld、%lo、%lx、%lu)及double数据(可用%lf、%le)。5)格式符前加数字m,用来指定输入数据的宽度,但不能指定精度m.n。如:scanf(“%3d%4d”,&a,&b);6)%后加*m,表示跳过(丢掉)m列。如:scanf(“%4d%*3d%4d”,&a,&b);(分别输入1234567和123456789)7)scanf()输入字符串时,遇空格则输入结束。如8、算术运算(+、-、*、/、%、++、--)1)两个整数相除”/”,结果为整数,两个实数相除”/”,结果为double实数。如:50/8值:__6_____,50./8值:___6.125____printf(“%d,%f\n”,50/8,50./8);结果_______2)取余运算%只适用于整数,且余数的符号与被除数的符号相同。如:50%8值:_______,-50%8值:_______50%-8值:_______,-50%-8值:_______33)自增自减运算A)++i、--i:变量的值先加1或减1,然后以新值进行其他运算。B)i++、i--:变量先以原值参与其他运算,然后其值再加1或减1,新值在下一个表达式或语句生效。如:main(){inti=3,j,k;j=i++,k=i;i++;printf(“%d,%d,%d\n”,i,j,k);}执行i=3;j=(i++)+(i++)+(i++);后i的值是___6____、j的值是___9____执行i=3;j=(++i)+(++i)+(++i);后i的值是___6____、j的值是___18____C)++、--运算只能用于变量,不能用于常量和表达式。D)注意区别普通变量的自增、数组指针变量和结构数组指针变量的自增自减的意义。如:inta=3,b[5],*p=b;则a++、p++的意义是4)算术运算的优先级++--、*/%、+-9、赋值运算(=、+=、-=、*=、/=、%=、…)a)赋值号左边必须是变量,右边可以是常量、变量、表达式。b)赋值后变量的值变为新赋的值,原值被冲掉且无法恢复。c)赋值运算的结合性为“自右至左“。如:执行a=10;a+=a-=a*a;后a的值:________a=5,则执行a+=a*=a-3后,a的值是__________4)区别a-10、与a=a-10,~a,a210、关系运算(、、=、=、==、!=)a)关系运算的结果为:0或1b)关系运算把非零数都看成为了1c)、、=、=的优先级高于==、!=11、逻辑运算(与&&、或||、非!)a)与&&:两数都为”1’结果为”1”。b)或||:两数都为”0’结果为”0”。c)非!:”0”的非是”1”,”1”的非是”0”。d)优先级:!最高、&&居中、||最低。e)注意短路现象。12、条件运算(式1?式2:式3)1)条件运算的优先级仅高于赋值运算和逗号运算。2)如:x=4,y=6,z=xy?x+y:x-y,z的值是________x=4,y=6,z=x+5y?x+y:x-y,z的值是________x=4,y=6,z=5,z+=x+5y+3?x+y:x-y,z的值是________13、逗号运算(式1,式2,…,式n);1)依次计算各表达式的值,最后一个表达式的值作为整个逗号表达式的值。2)逗号运算的优先级最低如:表达式(x=(a=2,a+7),b=5))的值是________a=5;执行语句x=a+7,b=5;后x=;3)一个逗号表达式可以与另一个表达式构成新的逗号表达式。4如:表达式(x=2*5,x*5),x+5的值是4)并不是所有出现“,”的地方都作逗号运算符。(int、printf、scanf)如:printf(“%d,%d\n”,(x,y,z),z);14、sizeof()运算符1)计算各类数据所占存储空间的字节数。2)括号可以是常量、变量、类型说明符等若inta,b[20];char*p=”abcdefghi”;如sizeof(5)、sizeof(5.2)、sizeof(‘a’)、sizeof(“abcde”)、sizeof(a)、sizeof(b)、sizeof(p)sizeof(char)、sizeof(double)、sizeof(strucustudent)15、所有运算的优先级。1级、()、[]、.、-2级、单目运算~、!、*、&、++、--从右向左3、4级算术运算:*、/、%、+、-5级、移位运算:每左移一位,等于该数*2,每右移一位,等于该数/2取整。6、7级关系运算:、、=、=、==、!=8、9、10级位运算:&位与、^(异或)、|位或先化二进制,再进行位运算。其中异或算法是两位相同则为0,两位相异则为111、12级逻辑运算:&&、||13级、条件运算:式1?式2:式3;从右向左14级、赋值运算:=、+=、*=、/=、%=,结合性从右向左。15级、逗号运算:式1,式2,…式n;第四章:选择结构特别要注意:C语言中是用非0表示逻辑真的,用0表示逻辑假的。C语言有构造类型,没有逻辑类型。关系运算符号:注意=的写法,==和=的区别!(考试重点)if只管后面一个语句,要管多个,请用大括号!If(a),if(!a)表示什么意思1、单分支:if(表达式)语句;功能:先计算表达式的值,若为“1”,则执行“语句”,然后再执行后续语句;若为“0”,直接执行后续语句;2、双分支:if(表达式)语句1;else语句2;功能:先计算表达式的值,若为“1”,则执行“语句1”,然后再执行后续语句;若为“0”,则执行“语句2”,然后执行后续语句;5说明:1)应把if语句看成一条语句,分为两部分,写两行,并后缩。2)语句包含多个条时,用{}括起来组成复合语句。3)多分支由双分支构成。4)else总是与最靠近的if结合。5)多分支的形式有多种,构成if…else嵌套。6)任何多分支都可用多个单分支完成。7)”条件表达式”中若为与运算&&,若&&前面的式子值为0,则不再运算&&后面的式子。如:main(){inta,b,k;if(++a0&&b--=b--+1)printf(“%d,%d\n”,a,b);elseprintf(“%d,%d\n”,b,a);printf(“%d,%d\n”,a,b);}3、多分支:if(表达式1)语句1;elseif(表达式2)语句2;elseif(表达式3)语句3;else语句4;4、多分支:switch(表达式){case常量表达式1:语句1;break;case常量表达式2:语句2;break;……case常量表达式n:语句n;break;default:语句n+1;}1)功能:先计算表达式的值,与case后的常量表达式相同时,则进入,若都不相同则从default中进入。进入后顺序执行,遇break则退出switch语句。2)default语句可有可无,位置可先可后。3)表达式的结果只能是整型值或字符值,case后面一定要只能是整型常量或字符常量表达式,如0、4、-5、3+2、50、‘A’、‘b‘等,不能i+3、“abcd”等。例:main(){inta;scanf(%d,&a);switch(a-3){case1:a+=1;ab结果-1550-454-3-40-3-16case2:a+=2;case3:a+=3;case4:a+=4;case5:a+=5;default:a+=10;}printf(a=%d,a);}4)写出下列程序的结果main(){intx,y;scanf(“%d”,&x);y=1;if(x=0)if(x=0)y=0;elsey=-1;printf(“%d\n”,y);}第五章:循环结构1、while循环while(表达式)循环体;2、do…while循环do{循环体;}while(表达式);3、for循环for(表达式1;表达式2;表达3)循环体;4、说明1)理解三种循环的执行过程条件为“1”,执行循环体;条件为“0”,退出循环,执行后续语句。2)