
c语言序设计期末复习概要.ppt
58页C语言序设计,期末复习 申时全 教授,第1章 程序设计和C语言,(1)认识C语言的特点; (2)掌握C程序的基本构成、主函数(main())的作用和结构★; (3)熟悉掌握编写、编译、连接运行C程序的步骤★,C语言程序结构,C语言的两个重要预编译指令 #include 指令 例如 #include #include #include #include #define 指令 #define N 10 #define MAX_INT 0x7FFFFFFF,C语言程序结构,main( )函数 main( )函数是C语言程序的主函数,程序从该函数开始执行,从而调用其他函数实现整个程序功能 在一个程序中只能有一个main()函数 main()有两种原型 int main(void); int main(int argc,char *argv[]);,C语言程序结构,main()函数的正确结构 int main(void) { ……… return 0; },C语言程序结构,有预编译指令的程序结构 #include #define PI 3.14159 int main(void){ ……… printf(……); …… return 0; },C语言程序结构,具有多个的C语言程序结构 #include int max(int,int); int main(void){ int a,b; printf(“输入2个整数:”); scanf(“%d%d”, },int max(int x, int y){ return xy?x:y; },不可能把一个大程序全写到main()一个函数中,需要分模块,第2章 算法——程序的灵魂,(1)了解算法的定义和特点; (2)理解算法的几种表示方法,掌握流程图的几种符号; (3)掌握利用流程图描述算法★; (4)理解结构化程序设计的方法。
算法的定义和特点,算法:为解决一个问题而采取的方法和步骤,就称为“算法” 算法的特性: 有穷性:有限操作步骤 确定性:每个步骤的确定性 有零个输入或多个输入 有一个或多个输出 有效性:每个步骤能有效执行,算法的表示,自然语言表示 流程图表示:主要的表示符号:起止框、输入输出框、判断框、处理框、流程线 三种基本结构流程图 N-S图 伪代码 程序设计语言表示算法,结构化程序设计方法,自顶向下,逐步求精 使用三种基本结构 模块化,第3章 最简单的C程序设计——顺序程序设计,(1)理解顺序程序设计; (2)掌握C语言的数据类型划分;掌握常用数据类型(整型int、实型float double、字符型char)的表示形式★; (3)掌握标识符的命名规则★; (4)掌握C语言运算符的种类及含义、运算优先级、结合的方向性★; (5)熟练掌握C语言表达式类型(赋值表达式、算术表达式)及其运算规则★ (6)掌握表达式和语句区别; (7)了解数据的输入/输出格式,知道一些常见的数据格式的设置,会使用输入/输出函数例如scanf与printf函数的一般形式,及输入数据的方式与输出的显示结果★ (8)掌握实现2个数的交换算法★,C语言的数据信息,将基本数据分为几种类型,主要是为了运算处理和存储管理方面原因 变量定义、标识符书写规则 数的表示 整型 int 单精度浮点型 float 双精度浮点型 double 文字信息表示 字符类型 char,各种数据类型输入输出,整型(int 、long、unsigned) 分别用%d、%ld、%u进行输入输出格式转换 int a; long b; unsigned c; scanf(“%d%ld%u”,,C语言中计算的表达,算术运算符号:+ - * / % 逻辑运算符: ! xw 是多少? 特别注意算符的优先级和结合性 自增(++)和自减(--)分前缀和后缀。
前缀具有高优先级,后缀优先级低于其他运算符,是向右结合的特殊的表达式,表达式?表达式1:表达式2 int a=3,b=5,y; y=ab? a:b; ab?printf(“最大值:%d”,a): printf(“最大值:%d”,b) 逗号表达式与赋值表达式 for (i=0,s=0;iN; s+=i,i++); 如果将条件表达式与其他运算放到一起,则应将条件表达式用括号括起两个数交换的算法,以交换两个int类型数为例: int main(void) { int first=10, second=20,temp; printf(“原始:first=%d second=%d\n”,first,second); temp=first; first=second; second=temp; printf(“交换后:first=%d second=%d\n”,first,second); return 0; },第4章 选择结构程序设计,(1)熟练掌握C语言表达式类型(关系表达式、逻辑表达式、条件表达式)及其运算规则★ (2)熟练掌握if语句的语法结构并能灵活运用★ (3)熟练掌握switch语句表示的多分支选择结构并能灵活运用★。
(4)掌握选择结构的嵌套★选择程序结构,if( ) 语句; 一般形式: if (表达式){ 语句 } if( ) 语句1 else 语句2 一般形式 If (表达式){ 语句1 } else{ 语句2 },表达式,语句1,0,非0,语句2,多分支选择结构,switch(表达式){ case 常数1:语句组1 break; case 常数2:语句组2 break; …… case 常数n:语句组n break; default: 其他语句 },第5章 循环结构程序设计,(1)熟练掌握while和do…while和for循环语句的语法结构,并能灵活运用★ (2)熟练掌握continue语句、break语句并能灵活运用★ (3)掌握选择结构的嵌套,最多考核到3层嵌套即可★ (4)熟练掌握迭代法、穷举法的程序设计方法 (5)求素数法、斐布拉契数列的算法求解★循环结构,while 循环 while(表达式){ 语句组 } do-while循环 do{ 语句组 }while(表达式); for循环,for(表达式1;表达式2;表达式3){ 语句组 },while循环的流程图,表达式,非0,0,循环体语句,do-while循环的流程图,表达式,非0,0,循环体语句,for循环的流程图,表达式2,非0,0,循环体语句,表达式1,表达式3,具有双重循环的for语句流程图,for (i=0;in-1;i++){ for (k=i,j=i+1; jn; j++) if (a[k]a[j]) k=j; 交换a[k]与a[i]; },jn,1,0,k=j,k=i,j=i+1,j=j+1,i=0,in-1,a[k]a[j],1,交换a[k]和a[i],0,i=i+1,F,T,,第6章 利用数组处理批量数据,(1)理解并熟练掌握一维和二维数组的定义、数组元素的初始化和引用方式★。
(2)掌握利用数组求解斐布拉契数列、起泡排序算法、选择排序算法★ (3)熟练掌握字符数组的定义、初始化和引用方式★; (4)掌握字符数组存储字符串表示形式★ 难点:字符数组存储字符串的表示形式批量数据处理,数组是有序数据的集合、用数组名和下标确定数据元素、每个数据元素具有同样类型 一维数组定义: int a[20]; float x[20]={0.0}; 二维数组是元素为一维数组的数组,可看成每个元素是一个一维数组(叫一行),一个数据元素需要两个下标(行下标和列下标) 二维数组定义 int array[10][5]; float score[5][6]={{55,76,87,90,98}, {67,77,88,87,60}, {77,67,87,98,65}, {75,65,78,88,99}, {65,78,63,90,83}};,一维数组程序设计,一般,若是对一维数组各元素访问一遍: #define N 10 …… int a[N] int main(void){ int i; …… for (i=0;iN;i++){ 处理元素a[i]; } …… },一维数组程序设计,多次访问数组元素-如排序 #include #define N 20 int main(void){ …… for (i=0;iN-1;i++){ ……… for (j=i+1;jN;j++){ 处理a[j]; } 其他处理; } …… },用数组求解斐布拉契数列的程序,#include #define N 20 int main(void){ int fib[N]={1,1}; int i; for (i=2;iN;i++) fib[i]=fib[i-1]+fib[i-2]; for (i=0;iN;i++){ if (i %5==0) putchar('\n'); printf(“%d\t“,fib[i]); } putchar('\n'); return 0; },用选择排序法进行排序的程序,#include #define N 10 int main(void){ int arr[N]={23,33,31,42,25,77,65,34,90,87}; int i,j,max,temp; for (i=0;iN-1;i++){ for (max=i,j=i+1;jN;j++) if (arr[max]arr[j]) max=j; if (max !=i) temp=arr[i],arr[i]=arr[max],arr[max]=temp; } for (i=0;iN;i++) printf(“%d “,arr[i]); putchar('\n'); return 0; },用冒泡排序法进行排序的程序,#include #define N 10 int main(void){ int arr[N]={23,33,31,42,22,77,65,34,90,87}; int i,k,temp; for (i=0;iN-1;i++) for (k=0;kN-i-1;k++) if (arr[k]arr[k+1]) temp=arr[k],arr[k]=arr[k+1],arr[k+1]=temp; for (i=0;iN;i++) printf(“%d “,arr[i]); putchar('\n'); return 0; },,,,二维数组程序设计,遍访二维数组元素(包括输入、输出) #define N 10 #define M 5 int a[N][M],i,j; for (i=0;iN;i++){ …… for(j=0;jM;j++){ 处理a[i][j]; } …. },数组程序实例,编写程序从键盘输入10个浮点数存入一维数组a中,求这10个数的最大值、平均值,然后输出这10个数以及最大值、平均值,要求用函数aver( )实现平均值计算,用max( )求最大值,数组和元素个数作为参数传递。
include #define N 10 float aver(float [ ],int); float max(float [ ],int); int main() { int i; float arr[N] ; printf(“please enter %d float Numbers:“,N); for (i=0;iN;i++) scanf(“%f“, },float aver(float a[],int n) { float ave; int i; for (ave=a[0], i=1; in; ave+=a[i],i++) ; return ave/N; } float max(float a[],int n) { float maxv; int i; for (maxv=a[0],i=1;in; 。
