11第1讲课程复习1概述(1)知识点:C语言的基本知识(执行步骤)main函数的基本知识C程序的结构组成C程序书写的规则1概述(2)1.1C程序的执行步骤编辑链接编译执行程序代码的录入,生成源程序*.c语法分析查错,翻译生成目标程序*.obj与其它目标程序或库链接装配,生成可执行程序*.exe1概述(3)1.2main函数的基本知识main()函数的位置C程序总是从main()函数开始执行一个C程序可以包含一个主函数,即main()函数;也可以包含一个main()函数和若干其他函数。2概述(4)1.3C程序的结构函数与主函数程序由一个或多个函数组成必须有且只能有一个主函数main()程序执行从main开始,在main中结束,其它函数通过嵌套调用得以执行。1概述(5)1.3C程序的结构(续)程序语句C程序由语句组成用“;”作为语句终止符注释//,/**/为注释,不能嵌套不产生编译代码1概述(6)1.4C程序书写的规则习惯用小写字母,大小写敏感不使用行号,无程序行概念;通常一个语句占一行可使用空行和空格常用锯齿形书写格式;同一层次结构的语句上下对齐。2基本数据类型与运算(1)知识点:C程序的数据类型标识符定义的规则基本运算与表达式混合运算时数据类型的转换2基本数据类型与运算(2)2.1C程序的数据类型数据类型基本类型整型字符型浮点型构造类型指针类型空类型数组类型结构体类型单精度型双精度型变量占用的存储空间注意基本类型赋初值的方式2基本数据类型与运算(3)2.1C程序的数据类型—基本数据类型的表示形式整型数据实型数据字符型数据十进制:以非0数字开头,如:123,-9,0八进制:以0数字开头,如:0123,067十六进制:以0x开头,如:0x123,0xff十进制:必须带小数点,如:123.0,-9.0指数形式:如:1.23E3,0.9e-2,5e2普通字符:如:’a’,’2’,’H’,’#’转义字符:如:’\n’,’\167’,’\xlf’,’\\’2基本数据类型与运算(4)2.1C程序的数据类型—基本数据类型的存储长度类型关键字字节数位数数的表示范围整型int432-2147483648—2147483647short216-32768—32767long432-2147483648—2147483647实型float4323.4e-38—3.4e38double8641.7e-308—1.7e308字符型char18-128--1272基本数据类型与运算(5)2.2标识符命名的规则C语言标识符命名规则:①标识符由数字、字母、下划线组成②标识符的首字符必须为字母和下划线③标识符不能为C语言的保留字(关键字)autoexternsizeoffloatstaticcaseforstructchargotoswitchcontinueintypedefconstifuniondefaultlongunsigneddoregistervoiddoublereturnelseshortwhileenumsigned2基本数据类型与运算(6)2.3基本运算与表达式算术运算符+-*/%关系运算符====!=逻辑运算符!&&||位运算符~|∧&赋值运算符=及其扩展赋值运算符条件运算符?:逗号运算符,指针运算符*&求字节数运算符sizeof强制类型转换运算符(类型)分量运算符.-下标运算符[]其他如函数调用运算符()2基本数据类型与运算(7)2.3基本运算和表达式—运算符的优先级小于=小于或等于大于=大于或等于==等于!=不等于优先级相同(高)优先级相同(低)低高赋值运算符关系运算符算术运算符单目运算符2基本数据类型与运算(8)2.3基本运算和表达式—运算符的优先级(续)优先级运算符含义要求运算对象的个数结合方向++自增运算符1(单目运算符)自右至左2--自减运算符(类型)类型转换运算符3*乘法运算符2(双目运算符)自左至右/除法运算符%求余运算符4+加法运算符2(双目运算符)自左至右-减法运算符2基本数据类型与运算(9)2.3基本运算和表达式关系表达式和逻辑表达式(ab)&&(xy)(a==b)||(x==y)!a||(ab)在C中逻辑运算结果:1代表“真”,0代表“假”;判断一个表达式是否真:0代表“假”,非0代表“真”条件表达式表达式1?表达式2:表达式3k=56?1:0逗号表达式2基本数据类型与运算(10)2.4混合运算的数据类型转换①整型变量与实型变量之间的转换②不同精度实型变量之间的转换③不同精度整型变量之间的转换3顺序结构程序设计(1)知识点:C语句的分类格式输入函数scanf格式输出函数printf其他输入输出函数3顺序结构程序设计(2)3.1C语句的分类C语句简单语句复合语句流程控制语句表达式语句空语句选择语句(if,switch)循环语句(while,do…while,for)转移语句(break,continue,return,goto)表达式+分号只有分号的语句用花括号将若干语句括起来3顺序结构程序设计(3)3.2格式输入函数scanf一般形式:scanf(“格式控制字符串”,地址表列);使用scanf函数时,需注意:格式字符的个数必须与输入项的个数相同数据类型必须一一对应,非格式字符串(说明性的)要原封不动的输入。输入实型数据时,可以不带小数点,即按整型数据输入数值型数据与字符或字符串混合输入时,需要注意输入方式。3顺序结构程序设计(4)3.3格式输出函数printfprintf(“格式控制字符串”,输出表列);指定输出格式,由格式字符串和非格式字符串两种组成,非格式字符串照原样输出。%[标志][输出最小宽度][.精度][长度]类型%f,%d,%c,%s输出项3顺序结构程序设计(5)3.4其他输入输出函数putchargetcharputsgets4选择结构程序设计(1)if选择结构单分支双分支多分支if(表达式)语句表达式语句0非0if(表达式)语句1else语句2表达式语句10非0语句2if(表达式1)语句1elseif(表达式2)语句2…elseif(表达式m)语句melse语句n4选择结构程序设计(2)switch(表达式){case常量表达式1:语句1;break;case常量表达式2:语句2;break;…case常量表达式m:语句m;break;default:语句n;break;}5循环结构程序设计(1)while(表达式)语句for(循环变量赋初值;循环条件;循环变量增量)语句循环三要素:①初始条件②终止条件③在初始条件和终止条件间重复做某件事情(循环体)do语句while(表达式);5循环结构程序设计(2)break语句continue语句不能用于循环语句和switch语句之外的任何其他语句跳过循环体中剩余的语句而强行执行下一次循环6数组(1)6.1一维数组的定义和使用main(){inti,a[10];for(i=0;i=9;i++)a[i]=i;for(i=9;i=0;i--)printf(%d,a[i]);}数组元素的赋值数组元素的使用注意下标问题特别需要注意循环的初值,终止条件6数组(2)6.2二维数组的定义和使用二维数组的初始化例如:inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};inta[][4]={1,2,3,4,5,6,7,8,9,10,11,12};inta[][4]={{1,2,3,4},{5},{9,10,11,12}};例如:inta[3][3]={{1},{2},{3}};是对每一行的第一列元素赋值,未赋值的元素取06数组(3)6.3字符数组和字符串字符串用字符数组来处理,结束标志符‘\0’如:charc[]={“Iamhappy”};charc[]={‘I’,‘’,‘a’,‘m’,‘’,‘h’,‘a’,‘p’,‘p’,‘y’,‘\0’};用字符串常量使字符数组初始化7函数(1)知识点:函数的定义和调用局部变量和全局变量变量的存储类别7函数(2)7.1函数的定义和调用类型标识符函数名(形式参数表列){声明部分语句}例如:intmax(intx,inty){intz;z=xy?x:y;return(z);}7函数(3)7.2局部变量和全局变量floatf1(inta){intb,c;……}charf2(intx,inty){inti,j;……}main(){intm,n;……}a,b,c有效x,y,i,j有效m,n有效省略的标识符为auto7函数(4)7.2局部变量和全局变量(续)intp=1,q=5;/*外部变量*/floatf1(inta)/*定义函数f1*/{intb,c;…..}charc1,c2;/*外部变量*/charf2(intx,inty)/*定义函数f2*/{inti,j;…….}main()/*主函数*/{intm,n;….}全局变量c1、c2的作用范围全局变量p和q的作用范围7函数(5)7.3变量的存储类别局部变量的存储类别自动变量(auto)局部静态变量(static)寄存器变量(register)7函数(6)7.3变量的存储类别(续)全局变量的存储类别自动变量(auto)外部变量(extern)全局静态变量(static)7函数(8)数组作为函数参数编程分析下面程序的功能:#includestdio.hintsum_array(inta[],intn){inti,total;for(i=0,total=0;in;i++)total+=a[i];returntotal;}voidmain(){intx[]={1,2,3,4,5},i,j;i=sum_array(x,5);j=sum_array(&x[2],3);printf(i=%d,j=%d\n,i,j);}8指针(1)知识点:地址和指针的概念指针变量和变量的地址指针和一维数组指针与字符串指针变量作为函数参数8指针(2)…...…...2000200420062005整型变量i变量i_pointer200120022003inti;int*i_point;1020008.1地址和指针的概念8指针(3)8.2指针变量和变量的地址操作符:*操作符:&8指针(4)8.3指针和一维数组a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]a数组若有定义inta[10];int*p=a;分析下面表达式的含义:a[i],&a[i],*(a+i),a+i,*(p+i),p+ia[i]*(a+i)*(p+i)&a[i]a+ip+i8指针(5)8.4指针与字符串main(){char*string=IloveChina!;printf(%s\n,string);}main(){charstring[]=IloveChina!;printf(%s\n,string);}8指针(6)8.5指针变量作为函数参数9结构体(1)知识点:结构体类型和变量的定义结构体变量的引用结构体数组9结构体(2)9.1结构体类型和变量的定义struct结构体名{成员列表};structstudent{charstuNO[8];charname[20];charsex;intage;floatscore;charaddr[30];};9结构体(3)9.1结构体类型和变量的定义(续)structstudent{charstuNO[8];charname[20];charsex;intage;floatscore;charaddr[30];};structstudentstu1,sut2;9结构体(4)9.2结构体变量的引用一般形式为:结构体变量名.成员名9结构体(5)9.3结构体数组结构体数组结构体数组元素.成员名指向结构体的指针变量(*p).成员名p-成员名10文件(1)函数原型:FILE*fopen(char*name,ch