1、C程序设计复习程序设计复习吉林大学珠海学院吉林大学珠海学院目录目录u1.1.基本要求基本要求u2.2.基本内容基本内容1.1.基本要求基本要求u熟练掌握熟练掌握C C 语言的基本知识语言的基本知识u具备基本的具备基本的C C程序设计能力,能熟练地程序设计能力,能熟练地阅读、理解和编制简短的阅读、理解和编制简短的C C程序。程序。2.2.基本内容基本内容u2.1 2.1 数据的定义数据的定义u2.2 2.2 运算及流程控制运算及流程控制u2.3 2.3 程序结构和函数程序结构和函数u2.4 2.4 数据的输入和输出数据的输入和输出u2.5 2.5 命令行参数和编译预处理命令行参数和编译预处理u2
2、.6 2.6 常用算法常用算法2.1 数据的定义数据的定义包括数据类型和存储类别数据的定义包括数据类型和存储类别1、基本类型、基本类型基本类型指整型、实型和字符型(主要是基本类型指整型、实型和字符型(主要是int,float,double,char;还包括还包括long,unsigned,short)(1)常量常量熟练掌握各种表示形式的整数、实数、和熟练掌握各种表示形式的整数、实数、和字符字符(串串)常量,符号常量的定义和使用。常量,符号常量的定义和使用。包括整数的十进制、八进制和十六进制的包括整数的十进制、八进制和十六进制的表示形式、长整型常量的表示形式,实数表示形式、长整型常量的表示形式,
3、实数的浮点表示法和科学记数法,字符的转义的浮点表示法和科学记数法,字符的转义序列,常用符号常量的含义(如序列,常用符号常量的含义(如NULL、EOF等)等)(2)变量变量熟练掌握变量的定义和初始化熟练掌握变量的定义和初始化printf(”%x,%o“,16,10);printf(%d,%o,%x,0 x12,12,012);2、构造类型、构造类型构造类型包括数组和构造类型包括数组和结构体结构体(1)数组数组熟练掌握一维和二维数组的定义和初始化,熟练掌握一维和二维数组的定义和初始化,数组元素的引用。数组元素的引用。包括一维字符数组和字符串,二维字符数组包括一维字符数组和字符串,二维字符数组和字符
4、串数组和字符串数组数组定义为数组定义为 int a32=1,2,3,4,5,6,数组数组元素元素 a21 的值为的值为6。不正确的赋值或赋初值的方式是不正确的赋值或赋初值的方式是_。A、char str=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 int a34=1,2,3,4,5,6,7,8,9,10,11,12;void
5、main()int s,k;for(s=0,k=0;k3;k+)s+=akk;printf(%d-,s);for(s=0,k=0;k3;k+)s+=ak3-k;printf(%d-,s);for(s=0,k=0;k4;k+)s+=*(a1+k);printf(%dn,s);将输入的将输入的 n 个字符串连接成个字符串连接成1个字符串后输出个字符串后输出.#include#include void main()char str1020,string200;int k,n;scanf(%d,&n);for(k=0;kn;k+)gets(strk);strcpy(string,str0);for(k
6、=1;kn;k+)strcat(string,strk);puts(string);(2)结构体结构体熟练掌握结构体类型的定义,结构体变量的熟练掌握结构体类型的定义,结构体变量的定义和初始化,结构体变量成员的引用。定义和初始化,结构体变量成员的引用。3、指针、指针(1)熟练掌握指针和地址的概念熟练掌握指针和地址的概念(2)熟练掌握指针变量的定义和初始化熟练掌握指针变量的定义和初始化(3)熟练掌握通过指针引用指向实体熟练掌握通过指针引用指向实体9aint *pa,a;pa=&a;printf(%d,%d,*pa,a);printf(%x,%x,pa,&a);pa若变量已正确定义并且指针若变量已正
7、确定义并且指针p已经指向某个变已经指向某个变量量x,则则(*p)+相当于相当于_。A、p+B、x+C、*(p+)D、&x+若若p1、p2都是整型指针,都是整型指针,p1已经指向变量已经指向变量x,要使要使p2也指向也指向x,_是正确的。是正确的。A、p2=p1;B、p2=*p1;C、p2=&p1;D、p2=*p1;下列语句定义下列语句定义pf为指向为指向float类型变量类型变量f的指针,的指针,_是正确的。是正确的。A、float f,*pf=f;B、float f,*pf=&f;C、float *pf=&f,f;D、float f,pf=f;对于如下说明,语法和语义都正确的赋值是对于如下说
8、明,语法和语义都正确的赋值是_。int c,*s,a=1,3,5;A、c=*s;B、s0=a0;C、s=&a1;D、c=a;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
9、;printf(%sn,*(st+3)+1);(3)熟练掌握结构体数组熟练掌握结构体数组输入某班输入某班50位学生的姓名及数学、英语成绩,位学生的姓名及数学、英语成绩,计算每位学生的平均分;然后输出平均分最高计算每位学生的平均分;然后输出平均分最高的学生的姓名及其数学和英语成绩。的学生的姓名及其数学和英语成绩。#include#define SIZE 50 struct student char name10;int math,eng;float aver;void main()struct student sSIZE;int k,sub=0;for(k=0;kSIZE;k+)scanf(%s
10、%d%d,sk.name,&sk.math,&sk.eng);sk.aver=(sk.math+sk.eng)/2.0 for(k=1;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、指针str上 B、指针p上 C、str指的内容上 D、以上均不是main
11、()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);5、空类型、空类型 void掌握空类型的定义和使用掌握空类型的定义和使用6、变量的存储类别、作用域和生存期、变量的存储类别、作用域和生存期(1)掌握变量的存储类别掌握变量的存储类别auto 自动型、自动型、static 静态型、静态型、register 寄存寄存器型、器型、extern 外部参照型。外部参照型。(2)掌握全局变量和局部变量掌握全局变量和局部变量注意区分:
12、自动局部变量和静态局部变量、全注意区分:自动局部变量和静态局部变量、全局变量和静态全局变量、外部变量局变量和静态全局变量、外部变量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、基本运算、基本运算熟练掌握运算符的功能熟练掌握运算符的功能熟练掌握运算符的优先级、结合性和目数熟练掌握运算符的优先级、结合性和目数熟练掌握隐式类型转换和强制类
13、型转换熟练掌握隐式类型转换和强制类型转换2、表达式、表达式熟练掌握各类表达式的组成规则和计算过熟练掌握各类表达式的组成规则和计算过程程()-.从左向右从左向右!+-(类型名类型名)*&sizeof 从右向左从右向左*/%+-=!=从左向右从左向右&(按位与按位与)(按位异或按位异或)|(按位或按位或)&|?:从右向左从右向左 =+=-=*=/=%=&=|=右右,从左向右从左向右若变量已正确定义且若变量已正确定义且 k 的值是的值是 4,计算表达,计算表达式式(j=k-)后,后,j和和k的的值分别是值分别是_4,3_。已知字符已知字符 a 的的ASCII码为码为 97,执行下列,执行下列语句的输
14、出是语句的输出是_98,a_。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/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);(1,0.5)
15、表达式表达式 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下列运算符中,优先级最低的是下列运算符中,优先级最低的是_。A、*B、!、!=C、+D、=算术运算符、赋值运算符和关系运算符的运算术运算符、赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为算优先级按从高到低的顺序依次为_。A、算术运算、赋值运算、关系运算算术运算、赋值运算、关系运算 B、关系运算、赋值
16、运算、算术运算关系运算、赋值运算、算术运算C、算术运算、关系运算、赋值运算算术运算、关系运算、赋值运算D、关系运算、算术运算、赋值运算关系运算、算术运算、赋值运算3、语句、语句(1)熟练掌握表达式语句、空语句、复合语句;熟练掌握表达式语句、空语句、复合语句;(2)熟练掌握简单控制语句熟练掌握简单控制语句 break、continue、return(3)熟练掌握选择控制语句熟练掌握选择控制语句 if、switch(4)熟练掌握重复控制语句熟练掌握重复控制语句 for、while、dowhileC 语言程序的三种基本结构是顺序结构、选语言程序的三种基本结构是顺序结构、选择结构和择结构和_结构。结构
17、。A、循环循环 B、递归递归 C、转移转移 D、嵌套嵌套写出下列程序段的输出结果写出下列程序段的输出结果。char c,k;c=b;k=4;switch(c)case a:k=1;case b:k=2;case c:k=3;printf(%dn,k);3写出下列程序段的输出结果。写出下列程序段的输出结果。int k,x;for(k=0,x=0;k=9&x!=10;k+)x+=2;printf(%d,%d,k,x);5,10输入输入12345#后,写出下列程序的输出结果。后,写出下列程序的输出结果。void main()char c;for(c=getchar();getchar()!=#;c=
18、getchar()putchar(c);13int k;char*s=“ABC”;for(k=10;k!=0;k-);printf(%d,k);while(*s+)putchar(*s);2.3 2.3 程序结构和函数程序结构和函数1、程序结构、程序结构熟练掌握熟练掌握main函数与其他函数之间的关系函数与其他函数之间的关系包括标准库函数和自定义函数包括标准库函数和自定义函数2、函数的定义、函数的定义(1)熟练掌握函数定义的熟练掌握函数定义的ANSI C格式格式(2)熟练掌握函数的参数(形式参数和实在参熟练掌握函数的参数(形式参数和实在参数)及参数传递,包括指针作为函数的参数数)及参数传递,包
19、括指针作为函数的参数(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
20、=9;p(&x,y);printf(%d,%d,%d#,x,y,z);3、函数的调用、函数的调用(1)函数调用的一般格式函数调用的一般格式熟练掌握通过函数名调用函数,了解通过函熟练掌握通过函数名调用函数,了解通过函数指针调用函数数指针调用函数(2)掌握函数的嵌套调用和递归调用掌握函数的嵌套调用和递归调用 int f(int k)return(k0)?1:f(k-2)+2);(3)熟练掌握标准库函数的调用熟练掌握标准库函数的调用常用数学函数:常用数学函数:cos、sqrt、pow、exp、fabs、log、log10等等常用字符函数:常用字符函数:isalnum、isalpha、isdigit、
21、islower、toupper等等常用字符串函数:常用字符串函数:strcpy、strcmp、strcat、strlen等等输入输入m和和n(mn0)后,计算下列表达式后,计算下列表达式的值并输出。的值并输出。m!n!(m-n)!要求将计算阶乘的运算写成函数要求将计算阶乘的运算写成函数fact(n),函数返回值的类型为函数返回值的类型为float。#include float fact(int k);void main()int m,n;scanf(%d%d,&m,&n);printf(%fn,fact(m)/fact(n)/fact(m-n);float fact(int k)float y
22、=1;int i;for(i=2;i=k;i+)y*=i;return y;2.4 2.4 数据的输入和输出数据的输入和输出1、文件、文件熟练掌握文件的基本概念熟练掌握文件的基本概念2、标准文件的输入和输出、标准文件的输入和输出熟练掌握常用输入输出函数:熟练掌握常用输入输出函数:scanf、printf、getchar、putchar、gets、puts等等3、缓冲文件系统(文本文件)(1)熟练掌握文件的打开和关闭常用函数:fopen和fclose(2)熟练掌握文件的基本读写操作常用函数:fscanf、fprintf、fgetc、fputc、fgets、fputs等(3)熟练掌握文件的状态检测
23、常用函数: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(
24、ch=fgetc(fp1)!=EOF)if(ch=$)count+;fprintf(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 2.7 常用算法常用算法以下算法针对本大纲中列出的各种数据结构以下算法针对本大纲中列出的各种数据结构1、分类(排序)算法、分类(排序)算法冒泡、选择、插入冒泡、选择、插入2、检索(查找)算法、检索(查找)算法(1)无序数据序列的查找(见遍历算法)无序数据序列的查找(见遍历算法)(2)有序数据序列的查找:二分法有序数据序列的查找:二分法3、遍历算法、遍历算法(1)一维数组和二维数组的遍历一维数组和二维数组的遍历(2)文件的遍历文件的遍历4、其它基本算法、其它基本算法