《浙江大学C语言程序设计复习课件.ppt》由会员分享,可在线阅读,更多相关《浙江大学C语言程序设计复习课件.ppt(57页珍藏版)》请在三一办公上搜索。
1、程序设计基础复习,1.基本要求2.基本内容,1.基本要求,熟练掌握C 语言的基本知识具备基本的C程序设计能力,能熟练地阅读、理解和编制简短的C程序。,2.基本内容,2.1 数据的定义2.2 运算及流程控制2.3 程序结构和函数2.4 数据的输入和输出2.5 命令行参数和编译预处理2.6 常用算法,2.1 数据的定义,数据的定义包括数据类型和存储类别1、基本类型基本类型指整型、实型和字符型(主要是int,float,double,char;还包括long,unsigned,short),(1)常量熟练掌握各种表示形式的整数、实数、和字符(串)常量,符号常量的定义和使用。包括整数的十进制、八进制和
2、十六进制的表示形式、长整型常量的表示形式,实数的浮点表示法和科学记数法,字符的转义序列,常用符号常量的含义(如NULL、EOF等),(2)变量熟练掌握变量的定义和初始化printf(”%x,%o“,16,10);printf(%d,%o,%x,0 x12,12,012);printf(%d,%dn,NULL,EOF);,2、构造类型构造类型包括数组和结构(1)数组熟练掌握一维和二维数组的定义和初始化,数组元素的引用。包括一维字符数组和字符串,二维字符数组和字符串数组,数组定义为 int a32=1,2,3,4,5,6,数组元素 a21 的值为6。不正确的赋值或赋初值的方式是_。A、char s
3、tr=string;B、char str7=s,t,r,i,n,g;C、char str10;str=string;D、char str7=s,t,r,i,n,g,0;表达式strcmp(“box”,“boss”)的值是一个_.A、正数 B、负数 C、0 D、不确定的数,#include void main()int s,k;int a34=1,2,3,4,5,6,7,8,9,10,11,12;for(s=0,k=0;k3;k+)s+=akk;printf(%d-,s);for(s=0,k=0;k3;k+)s+=ak3-k;printf(%dn,s);,将输入的 n 个字符串连接成1个字符串后
4、输出.#include#include void main()char str1020,string200;int k,n;scanf(%d,(2)结构熟练掌握结构类型的定义,结构变量的定义和初始化,结构变量成员的引用。,3、指针(1)熟练掌握指针和地址的概念(2)熟练掌握指针变量的定义和初始化(3)熟练掌握通过指针引用指向实体,9,a,int*pa,a;pa=,pa,若变量已正确定义并且指针p已经指向某个变量x,则(*p)+相当于_。A、p+B、x+C、*(p+)D、,下列语句定义pf为指向float类型变量f的指针,_是正确的。A、float f,*pf=f;B、float f,*pf=,
5、4、构造类型和指针类型的混合定义及应用(1)熟练掌握指针、数组和地址间的关系int c=1,3,5;int*k=c+1;printf(%d,*+k);char str=hellotworldn;printf(%d,%cn,sizeof(str),*(str+10);,(2)熟练掌握指针数组写出下列程序段的输出结果。char*st=one,two,three,four;printf(%sn,*(st+3)+1);,(3)熟练掌握结构数组输入某班50位学生的姓名及数学、英语成绩,计算每位学生的平均分;然后输出平均分最高的学生的姓名及其数学和英语成绩。#include#define SIZE 50
6、struct student char name10;int math,eng;float aver;,void main()struct student sSIZE;int k,sub=0;for(k=0;kssub.aver)sub=k;printf(%10s%3d%3dn,ssub.name,ssub.math,ssub.eng);,(4)熟练掌握结构指针(5)掌握结构中含指针或数组(6)掌握嵌套结构(7)掌握指向指针的指针(二级)(8)单向链表掌握单向链表的建立和遍历了解插入和删除单向链表中的一个节点,+p-str中的+加在_。struct int len;char*str;*p;A、
7、指针str上 B、指针p上 C、str指的内容上 D、以上均不是,main()struct st int x,y;a4=10,20,30,40,50,60,70,80;struct st*p=a;printf(%d,p+-x);printf(%d,+p-y);printf(%dn,(a+3)-x);,struct node int num;struct node*next;,printf(%dn,fun(head);,int fun(struct node*h)int k=0;struct node*p=h;*q=NULL;while(p)if(q!=NULL),5、空类型 void掌握空类型
8、的定义和使用,6、变量的存储类别、作用域和生存期(1)掌握变量的存储类别auto 自动型、static 静态型、extern 外部参照型(2)掌握全局变量和局部变量注意区分:自动局部变量和静态局部变量、全局变量和静态全局变量、外部变量,C语言中,形参的缺省的存储类说明是_。A、auto B、static C、register D、extern,对于以下函数f,计算f(f(2)的值。int f(int x)static int k=0;x+=k+;return x;,2.2 运算及流程控制,1、基本运算熟练掌握运算符的功能熟练掌握运算符的优先级、结合性和目数熟练掌握隐式类型转换和强制类型转换2、
9、表达式熟练掌握各类表达式的组成规则和计算过程,()-.!+-(类型名)*&sizeof 从右向左*/%+-=!=&(按位与)(按位异或)|(按位或)&|,?:右=+=-=*=/=%=&=|=右,若变量已正确定义且 k 的值是 4,计算表达式(j=k-)后,j和k的值分别是_。已知字符 a 的ASCII码为 97,执行下列语句的输出是_。printf(%d,%c,b,b-1);,判断i和j至少有一个值为非0的表达式是_。A、i!=0&j!=0 B、i|j C、!(i=0|j=0)D、i&j表达式!x 等价于_。A、x=0 B、x=1 C、x!=0 D、x!=1,若x是单精度实型变量,表达式(x=
10、10/4)的值是_。A、2.5 B、2.0 C、3 D、2写出下列程序段的输出结果。float x1,x2;x1=3/2;x2=x1/2;printf(%d,%.1f,(int)x1,x2);,表达式 sizeof(“key”)的值是_。A、1 B、2 C、3 D、4static char s=student;printf(%d,%cn,sizeof(s),*(s+2);若a是整型变量,表达式(a a)等价于_。A、a B、1 C、0 D、2表达式(722)的值是_。,下列运算符中,优先级最低的是_。A、*B、!=C、+D、=算术运算符、赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为
11、_。A、算术运算、赋值运算、关系运算 B、关系运算、赋值运算、算术运算C、算术运算、关系运算、赋值运算D、关系运算、算术运算、赋值运算,3、语句(1)熟练掌握表达式语句、空语句、复合语句;(2)熟练掌握简单控制语句 break、continue、return(3)熟练掌握选择控制语句 if、switch(4)熟练掌握重复控制语句 for、while、dowhile,C 语言程序的三种基本结构是顺序结构、选择结构和_结构。A、循环 B、递归 C、转移 D、嵌套,写出下列程序段的输出结果。char c,k;c=b;k=4;switch(c)case a:k=1;case b:k=2;case c:
12、k=3;printf(%dn,k);,写出下列程序段的输出结果。int k,x;for(k=0,x=0;k=9,输入12345#后,写出下列程序的输出结果。void main()char c;for(c=getchar();getchar()!=#;c=getchar()putchar(c);int k;char*s=“ABC”;for(k=10;k!=0;k-);printf(%d,k);while(*s+)putchar(*s);,2.3 程序结构和函数,1、程序结构熟练掌握main函数与其他函数之间的关系包括标准库函数和自定义函数,2、函数的定义(1)熟练掌握函数定义的ANSI C格式(
13、2)熟练掌握函数的参数(形式参数和实在参数)及参数传递,包括指针作为函数的参数(3)熟练掌握函数的返回值,包括指针作为函数的返回值,要调用数学函数时,在#include命令行中应包含_。A、”stdio.h”B、”string.h”C、”math.h”D、”ctype.h”在C语言程序中,若对函数类型未加显式说明,则函数的隐含类型是int.,int z;void p(int*x,int y)+*x;y-;z=*x+y+z;printf(%d,%d,%d#,*x,y,z);,void main()int x=1,y=5,z=9;p(,3、函数的调用(1)函数调用的一般格式熟练掌握通过函数名调用函
14、数,了解通过函数指针调用函数(2)掌握函数的嵌套调用和递归调用,int f(int k)return(k0)?1:f(k-2)+2);,(3)熟练掌握标准库函数的调用常用数学函数:cos、sqrt、pow、exp、fabs、log、log10等常用字符函数:isalnum、isalpha、isdigit、islower、toupper等常用字符串函数:strcpy、strcmp、strcat、strlen等,输入m和n(mn0)后,计算下列表达式的值并输出。m!n!(m-n)!要求将计算阶乘的运算写成函数fact(n),函数返回值的类型为float。,#include float fact(i
15、nt k);void main()int m,n;scanf(%d%d,float fact(int k)float y=1;int i;for(i=2;i=k;i+)y*=i;return y;,2.4 数据的输入和输出,1、文件熟练掌握文件的基本概念2、标准文件的输入和输出熟练掌握常用输入输出函数:scanf、printf、getchar、putchar、gets、puts等,3、缓冲文件系统(文本文件)(1)熟练掌握文件的打开和关闭常用函数:fopen和fclose(2)熟练掌握文件的基本读写操作常用函数:fscanf、fprintf、fgetc、fputc、fgets、fputs等(3
16、)熟练掌握文件的状态检测常用函数:feof等,统计当前目录下文本文件data.txt中字符$出现的次数,并将统计结果写入当前目录下的文本文件res.txt。#include void main()FILE*fp1,*fp2;char ch;int count=0;if(fp1=fopen(data.txt,r)=NULL)printf(不能打开文件data.txt!n);exit(0);,if(fp1=fopen(res.txt,w)=NULL)printf(不能打开文件res.txt!n);exit(0);while(ch=fgetc(fp1)!=EOF)if(ch=$)count+;fpr
17、intf(fp2,%d,count);fclose(fp1);fclose(fp2);,2.5 命令行参数和编译预处理,1、命令行参数(argc、argv)的说明、含义和使用。执行程序find nx ould text.txt时,*+argv1的值是_。,2、熟练掌握编译预处理的基本概念3、掌握宏定义4、掌握文件包含写出下列程序段的输出结果。#define T 16#define S(T+10)-7 printf(%dn,S*2);,2.7 常用算法,以下算法针对本大纲中列出的各种数据结构1、分类(排序)算法冒泡、选择、插入2、检索(查找)算法(1)无序数据序列的查找(见遍历算法)(2)有序数据序列的查找:二分法,3、遍历算法(1)一维数组和二维数组的遍历(2)单向链表的遍历(3)文件的遍历4、其它基本算法,