版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、,C语言期末复习大纲,考试的主要题型和分数分布: 1 单项选择题(10小题,每题2分,共20分) 2 填空题(每空1分,共10分) 3 阅读程序(每题2分,共10分) 4 程序填空(每空2分,共40分) 5 编写程序(2小题,每题10分,共20分),第一章,C语言概述,第1章 C语言概述 本章包含4项目重点内容: 1 简单的C语言程序 #include void main() printf (This is a C program.n); ,2 VC+ 6.0 环境: 编辑C语言源程序 后缀是 .c 或 .cpp 经过编译产生目标文件,后缀是 .obj 再经过连接成为可执行文件,后缀 是 .e
2、xe 3 C语言是结构化程序,有三种结构 (1)顺序结构; (2)选择结构; (3)循环结构;,4 C语言是由函数组成的,其中必须有一个并且只有一个主函数 main,程序的执行从main 函数开始,到main 函数结束.,第二章,数据类型、运算符与表达式,C的数据类型,C语言提供了以下一些数据类型。,数据类型,构造类型,指针类型,空类型(无值类型) void,常量与变量,常量和符号常量 在程序运行过程中,其值不能被改变的量称为常量 常量区分为不同的类型:,整型 100,125,-100,0 实型 3.14 , 0.125,-3.1e3 字符型 a,057,x3c 字符串 “a”, “ab”,”
3、1232” 定义字符常量: #define PI 3.1415926 #define N 20,变量命名的规定: 语言规定标识符: 1 只能由字母、数字和下划线三种字符组成; (注意不要混淆下划线_和杠号(减号)-) 2 第一个字符必须为字母或下划线; 3 不能使用关键字. 例:sum,_123 , m123, Student_name1 12a,Jo-hn, ¥123,a#b, int,整型常量的表示方法 整型常量即整常数。在语言中,整常数 可用以下三种形式表示: (1)十进制整数。 如:123, -456 (2)八进制整数。以0开头的数是八进制数。 如:0123表示八进制数123,等于十进
4、制数83 0129 非法(每位0-7合法) (3)十六进制整数。以0 x开头的数是16进制数。 如:0 x123,代表16进制数123,等于十进制数291 而 0 x12g 非法(每位0-f合法),字符型数据,字符常量 (1)用单引号包含的单个字符 (2)用单引号包含的由开始的转义字符,例,a,A, 1,037,x2d abc,“a”,082,x5g,字符串常量 字符串常量是一对双引号括起来的字符序列. 合法的字符串常量: “How do you do.”, “CHINA”, “a” , “$123.45” 可以输出一个字符串,如 printf(“How do you do.”);,运算符简介
5、 的运算符有以下几类: (1)算术运算符 (+ - * / %) (2)关系运算符 ( !) (3)逻辑运算符 (! |) (4)位运算符 ( | ) (5)赋值运算符 (及其扩展赋值运算符) (6)条件运算符 (?:),算术运算符和算术表达式 基本的算术运算符: (加法运算符或正值运算符如:、) (减法运算符或负值运算符,如:、) * (乘法运算符。如:*) (除法运算符,实数相除结果是双精度实数,整数相除结果是整数;两数同号结果是正数,两数异号结果是负数,且舍入得方向不固定,Vc+是“向0取整) (求余运算符,两侧必须为整型数据,结果与被除数一致。),自增、自减运算符 作用是使变量的值增或
6、减 如: ,(在使用之前,使+1 或-1) ,(在使用之后,使+1 或-1) 就是使用 i 的原值执行本条语句, 而在执行下条语句前将 i+1 或-1 int m=5,n=10; printf(%d,%dn,m+,-n); 显示5,9 若再有: printf(“%dn”,m); 显示6,赋值运算符 赋值符号“”就是赋值运算符,它的作用是 将一个数据赋给一个变量,如a=5;(单等号) 而 a=5 是判断 a是否等于 5; (双等号) 如 int a=3; if(a=2) 为假, 而 if(a=5) 为真。,第三章,最简单的c程序设计-顺序程序设计,C语句概述,C语句概述,控制语句 完成一定的控制
7、功能 1 if() else 条件语句 6 break 间断语句 2 for() 循环语句 7 switch() 开关语句 3 while()循环语句 8 goto 转向语句 4 do while();循环语句 9 return 返回语句 5 continue 继续语句,格式输入与输出,(一).格式输出函数 函数作用:向终端(或系统隐含指定的输出设备)输出若干个任意类型的数据。 一般格式:printf(格式控制,输出表列),%d:以带符号的十进制形式输出整数 %o:以八进制无符号形式输出整数 %x:以十六进制无符号形式输出整数,格式输入与输出,%u:以无符号十进制形式输出整数 %c:以字符形式
8、输出,只输出一个字符 %s:输出字符串 %f:以小数形式输出单,双精度数,隐含输出六位小数 %e:以指数形式输出实数 %g:选用%f或%e格式中输出宽度较短的一种格式,不输 出无意义的0,格式输入与输出,用printf 和scanf函数输出和输入数据。#includeint main()int a,b,c;scanf(“%d,%d,%d”,表示a在内存中的地址 其中, if(ab) a=b;b=c;c=a; 第1个,因为ab,所以a=b;b=c;c=a;都执行, 第2个,因为a不大于b,所以不执行a=b; 只执行 b=c;c=a;,那么a,b,c 是 4,5,4,那么a,b,c 是 3,5,3
9、,条件运算符 格式: 表达式?表达式表达式 功能: 判断表达式1的值,如果成立就执行表 达式2,否则就执行表达式3 max=(ab)?a:b; min=(ab)?a:b;,if语句,例: 输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。 #include void main ( ) char ch; scanf(“%c”, /注意:不能用 A=ch=Z,它永远为真,如果字符变量ch的值为大写字母,则条件表达式的值为(),即相应的小写字母。如果ch的值不是大写字母,则条件表达式的值为,即不进行转换。,几个典型的判断: 判断大写字母: if(
10、A=c break; case 8: grade=B;break; case 7: grade=C;break; case 6: grade=D;break; default: grade=E; ,第五章,循环结构程序设计,用while语句实现循环,while语句用来实现“当型”循环结构。 一般形式: while (表达式) 语句 当表达式为非0值时,执行while语句中的内嵌语句。其特点是:先判断表达式,后执行语句。,求正整数m和n的最大公约数和最小公倍数:#include void main() int p,r,n,m; printf(请输入两个正整数n,m:); scanf(%d,%d,
11、其中用下面的辗转相除法求出最大公约数n while(m!=0) r=n%m; n=m; m=r; 把它独立出来就是一个函数 int hcf(int m,int n) int r; while(m!=0)r=n%m; n=m; m=r; return (n); 用 p/n 得到最小公倍数,用do-while语句实现循环,do-while语句的特点:先执行循环体,然后判断循环条件是否成立。 一般形式: do 循环体语句 while (表达式);,执行过程:先执行一次指定的循环体语句,然后判别表达式,当表达式的值为非零(“真”) 时,返回重新执行循环体语句,如此反复,直到表达式的值等于0为止,此时循
12、环结束。,例如:为了保证输入成绩的正确,可以使用语句: printf(请输入学生成绩a(0-100):); scanf(%d, ,我们更简洁地用do-while语句 do printf(“请输入成绩 a(0-100):”); scanf(“%d”,号,用do-while语句计算 10! i=1;s=1; do s=s*i;i+;while(i=10); 不是: i=1;s=0; do s=s*i;i+;while(i=10); 也不是: doi=1;s=1; s=s*i;i+;while(i=10); doi=1;s=0; s=s*i;i+;while(i=10);,while语句和用do-w
13、hile语句的比较: while 是先判断条件,再决定是否执行,所以可能一次也不执行; do-while 是先执行再判断条件,决定是否还执行,所以至少执行一次.,用for 语句实现循环,C语言中的for语句使用最为灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况,它完全可以代替while语句。 一般形式: for(表达式1;表达式2;表达式3) 语句,注意: for中用两个分号隔开,不能省略; for只对其后第一个语句有效,如果要求对多条语句有效,必须用花括号括之成为复合语; for( )后通常没有分号,有分号将不执行任何语句,只执行自己的循环;,
14、下面是用for语句显示数组a中的最小值的程序 #include void main( ) int a5=4,2,8,9,5,i,min; min=a0; for(i=1;iai) min=ai; printf(%dn,min); ,break语句和continue语句,break语句 break语句可以用来从循环体内跳出循环体, 即提前结束循环. 一般形式: break; 注意: break语句只能用于循环语句或switch语句中。,continue语句 作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次循环的判定. 一般形式: continue;,例 把100200之间的不
15、能被3整除的数输出。 #include void main() int n; for (n=100;n=200;n+) if (n%3=0) continue; printf(%d,n); 注意是把能被3整除的跳过.不能用 n%3!=0,判断m是否素数。 #include #include void main() int m,i,k; scanf(%d,,也可以是:#include #include void main() int m,I,k,flag=1; scanf(%d,,第六章,数组,一维数组,所谓数组就是一组具有相同数据类型的数据的有序集合。,一维数组的定义格式为: 例如: int
16、a10; 或者是:#define N 10; int aN; (方括号中必须是常数) 注意: 1 此数组有10个元素.分别是a0-a9 注意:从0开始编号,没有数组元素a10 2 元素个数必须是常量. 所以不可以: int n=10,an; /这里n是变量 不可以用圆括号: int a(n); 也不可是:int n,an;scanf(“%d”,字符数组的定义,例如: char c10 =I,a,m,h,a,p,p,y; c0=I;c1= ;c2=a; c3=m;c4= ;c5=h;c6=a; c7=p;c8=p;c9=y;,对字符串初始化,最好的方法是: 例如: Char c=“I am a
17、boy”;,字符串的初始化,字符串和字符串结束标志,为了测定字符串的实际长度,C语言规定了一个“字符串结束标志”0。,字符数组的输入输出,字符数组的输入输出可以有两种方法: 逐个字符输入输出。用格式符“%c”输入或输出一个字符。 将整个字符串一次输入或输出。用“%s”格式符,意思是对字符串的输入输出。,如果利用一个scanf函数输入给多个字符串,则在输入时以空格分隔。 例如: char strl5,str25,str35; scanf(%s %s %s,str1,str2,str3); 输入数据: How are you? 数组中未被赋值的元素的值自动置0。,1. puts函数 其一般形式为:
18、 puts(str);,字符串处理函数,2. gets函数 其一般形式为: gets(str);,说明: 用scanf(“%s”,str);只能输入单词(不包含空格), 而gets(str); 可以输入句子(即可以包含空格); 注意不是 gets(“%s”,str); 也不是 gets(,3. strcat函数 其一般形式为:strcat(字符数组1,字符数组2) Strcat的作用是连接两个字符数组中的字符串,把字符串2接到字符串1的后面,4. strcpy函数 其一般形式为:strcpy(字符数组1,字符串2) strcpy是“字符串复制函数”。作用是将字符串2复制到字符数组1中去。例如:
19、 char str110,str2=China; strcpy(str1,str2);,关于strcpy函数的几点说明,(1)字符数组1必须定义得足够大,以便容纳被复制的字符串。字符数组1的长度不应小于字符串2的长度。,(2)“字符数组1”必须写成数组名形式(如str1),“字符串2”可以是字符数组名,也可以是一个字符串常量。 如strcpy(str1,China);,(3)复制时连同字符串后面的0一起复制到字符数组1中。,(4)不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。如: str1=China; 不合法 str1=str2; 不合法 用strcpy函数只能将一个字符串复制
20、到另一个字符数组中去。 用赋值语句只能将一个字符赋给一个字符型变量,5. strcmp函数 其一般形式为:strcmp(字符串1,字符串2) 例如:strcmp(str1,str2); strcmp(China,Korea); strcmp(str1,Beijing);,比较的结果由函数值返回 (1) 如果字符串1=字符串2,函数值为0。 (2) 如果字符串1字符串2,函数值为1。 (3) 如果字符串1str2) 只能用 if(strcmp(str1,str2)0),6. strlen函数 其一般形式为:strlen (字符数组) strlen是测试字符串长度的函数。函数的值为字符串中的实际长
21、度(不包括0在内)。 例如:char str10=China; printf(%d,strlen(str); 输出结果不是10,也不是6,而是5,即有效字符数.,strlwr (字符串) strlwr函数7. strlwr函数 其一般形式为:的作用是将字符串中大写字母换成小写字母。,8. strupr函数 其一般形式为:strupr (字符串) strupr函数的作用是将字符串中小写字母换成大写字母。,使用字符串函数时,必须包括字符串函数库: #include ,我们可以不使用字符串函数编写程序: 例如: 不使用strcat 连接两个字符串; 不使用strcpy 拷贝字符串; 不使用strcm
22、p 比较字符串;,不使用strcpy 拷贝字符串: 1 用数组: For(i=0;i=strlen(s2);i+) S1i=s2i; 2 用指针:p1=s1;p2=s2; while(*p1+=*p2+); 寻找字符串尾:while(s1i) i+; i 就是字符串尾的下标,再拷贝就是连接。,第七章,函数,简单的C语言函数,#include /*文件包含*/ void main( ) /*主函数 */ /*函数体开始*/ printf (“This is a C program.n”);/*函数体语句*/ /*函数体结束*/,说明: main是主函数名,void 是函数类型 每个C程序是由若干
23、函数组成的,其中必有一个并且只能有一个主函数 main( ) 每个C程序从main函数开始执行,到main函数结束,即执行的是主函数的函数体,与主函数main在程序中的位置无关;, 是函数开始和结束的标志,不可省略; 每个C语句以分号结束; 在主函数中直接或间接调用其他函数; 使用标准输入出库函数时应写: #include 使用数学库函数和字符串函数时应写: #include #include ,一个函数由两部分组成: 函数的首部:例1.3中的max函数首部 int max(int x,int y ) 函数体:花括号内的部分。若一个函数有多个花括号,则最外层的一对花括号为函数体的范围。,函数定
24、义的一般形式,类型标识符函数名(形式参数表列) 声明部分 语句部分 其中类型标识符是函数返回值的数据类型,如:int,char float,double 等,也可以是无返回值,写为void. 也可以没有形式参数表列,称为无参函数.,例如: int max(int ,int ) int ; /*函数体中声明部分* ?; / *函数体中语句部分* return(); /*返回值 */ ,函数参数和函数的值 形式参数和实际参数,形式参数:函数名后面括弧中的变量名称为 “形式参数”(简称“形参”); 实际参数:主调函数中调用一个函数时,函数名后面括弧中的参数(可以是一个表达式)称为“实际参数”(简称“
25、实参”); 函数返回值:return后面的括弧中的值作为函数带回的值(称函数返回值)。,说明: 1.函数的返回值是通过函数中的return语句获得的。 一个函数中可以有一个以上的return语句,执行到哪一个return语句,哪一个语句起作用。,函数的调用 对被调用函数的声明和函数原型,在一个函数中调用另一函数(即被调用函数)需要具备哪些条件呢 ?,1.首先被调用的函数必须是已经存在的函数(是库函数或用户自己定义的函数)。,3.如果使用用户自己定义的函数,而该函数的位置在调用它的函数(即主调函数)的后面,应该在主调函数中对被调用的函数作声明,即写上函数的原型。 用函数首部加上 ;号表示函数声明
26、.,2.如果使用库函数,还应该在本文件开头用#include 命令将调用有关库函数时所需用到的信息“包含”到本文件中来。 如 #include #include #include ,函数调用的实例(求两整数的最大公约数): #include void main() int hcf(int u,int v); /函数声明 int u,v,h; scanf(%d,%d, ,局部变量和全局变量 局部变量,在一个函数内部定义的变量是内部变量,它只在本函数范围内有效,也就是说只有在本函数内才能使用它们,在此函数以外是不能使用这些变量的。这称为“局部变量”。,全局变量,在函内定义的变量是局部变量,而在函数
27、外定义的变量称为外部变量,也称全局变量. 静态局部变量是函数中保持最近值不释放的变量 在函数中用下面方式定义: static int c=7;,考察静态局部变量的值 #include void main() int (int a); ,; (;) ( ,(); int (int ) int ; ; 3; 2; (); 3次调用函数f 后,c 的值是 9,第八章,指针,地址和指针的概念,内存区的每一个字节有一个编号,这就是“地址”。 如果在程序中定义了一个变量,在对程序进行编译时,系统就会给这个变量分配内存单元。,一个变量的地址称为该变量的“指针”。 例如,地址2000是变量的指针。如果有一个变
28、量专门用来存放另一变量的地址(即指针),则它称为“指针变量”。,指针和指针变量的定义:,指针变量的引用,注意:指针变量中只能存放地址(指针), 不要将一个整数(或任何其他非地址类型的数据) 赋给一个指针变量。,例 通过指针变量访问整型变量,#include voidmain ( ) int ; int *p; ; p; /*把变量的地址赋给 p */ printf(“%d,%dn”,a,*p); ,对“”和“*”运算符说明: 如果已执行了语句 p 那么: 那么 a 和 *p 是相同的值 所以,如果 a=3; Printf(“%d,%d”,a,*p); 显示是 3,3 所以,如果 *p=6; P
29、rintf(“%d,%d”,a,*p); 显示是 6,6,指针变量作为函数参数,例10 . 3 对输入的两个整数按大小顺序输出,#include void main() void swap(int *,int *); int ,; int *p,*p; scanf(,); p ; p2 ; if() swap( p , p2 ); printf(,); ,void swap(int *,int *) int temp; temp*1; *; *temp; ,下面的函数: void swap(int a,int b) int temp; tempa; a=b; b=temp; /* 只在函数中交
30、换了局部变量 */ 同样不可用函数: void swap(int *p,int b) 或 void swap(int a,int *p) 只能用函数 void swap(int *p1,int *p2) 处理主调用函数中的变量,定义一个指向数组元素的指针变量的方法 例如:int a10,*p; p=a; (a是数组的首地址,注意a前没有地址符) 或 p= 而p是指针变量,是可以改变的. 所以 a+是错误的,而p+是正确的.,指向数组元素的指针,10.通过指针引用数组元素,如果 int a6,*p=a; 引用一个数组元素,可以用: () 下标法,如ai形式; () 地址或指针法,如*(a+i)或
31、*(p+i) 注意: a0-a5合法,a6非法; *(a)-*(a+5)合法,*(a+6)非法; *(p)-*(p+5)合法,*(p+6)非法;,字符串与指针,字符串的表示形式,例 定义一个字符数组,对它初始化, 然后输出该字符串,#include void main() char *sabcdefg; printf(%n,s); 输出 abcdefg,(1) 用字符数组存放一个字符串,然后输出该字符串。,输出 cdefg 的语句是: printf(%n,s+2); s+2 是指针 输出 efg 的语句是: printf(%n,s+4); s+4是指针 输出字符 f 的语句是: printf(
32、%cn,*(s+5)); *(s+5)是字符 注意:输出字符串用%s 和指针; 输出字符用%c 和*(指针),指针运算与数据: #include void main( ) int a5=2,4,6,8,10,*p; p=a; printf(%d,*(p+2); printf(%d,*+p); printf(%d,*p+); printf(%dn,*+p); 显示 6,4,4,8 注意 1 p+2 没有改变p 的值; 注意 2 +p,和 p+的区别.,调用函数实现数组的相反顺序存放: #include void main() void inv(int x ,int n); /函数声明 int i
33、,a10=3,7,9,11,0,6,7,5,4,2; printf(The original array:n); for(i=0;i10;i+) printf(%d ,ai); printf(n); inv(a,10); /调用函数 printf(The array has been inverted:n); for(i=0;i10;i+) printf(%d ,ai); printf(n); ,/ 用数组元素: void inv(int x ,int n) int temp,i,j,m=(n-1)/2; for(i=0;i=m;i+) j=n-1-i; temp=xi;xi=xj;xj=te
34、mp; ,/或用指针: void inv(int *x,int n) int *p,temp,*i,*j,m=(n-1)/2; i=x;j=x+n-1;p=x+m; for(;i=p;i+,j-) temp=*i;*i=*j;*j=temp; 这时函数声明要改成: void inv(int *x,int n);,用选择法实现数组从大到小排序的函数: void sort(int x ,int n) int i,j,k,t; for(i=0;ixk) k=j; if(k!=i) t=xi;xi=xk;xk=t; ,第九章,用户建立的数据类型-结构体,问题定义: 有时需要将不同类型的数据组合成一个有
35、机 的整体,以便于引用。如: 一个学生有学号/姓名/性别/年龄/地址等 int num; char name20; char sex; int age; char addr30;,声明一个结构体类型的一般形式为: struct 结构体名 成员表列; 如:struct student int num;char name20;char sex; int age;float score;char addr30; ,结构体名,类型名,成员名,定义结构体类型变量的方法,可以采取以下3种方法定义结构体类型变量: 先声明结构体类型再定义变量名 例如:struct student student1, stud
36、ent2; | | | 结构体类型名 结构体变量名 定义了student1和student2为struct student类型的变量,即它们具有struct student类型的结构.,引用结构体变量中成员的方式为 结构体变量名.成员名 例如, student1.num 表示student1变量中的num成员,即student1的num(学号)项。可以对变量的成员赋值和运算 student1.num=10010,但不能用以下语句整体读入结构体变量, 例如: scanf(%d,s,c,d,f,s,student1); 结构体变量的地址主要用作函数参数,传递结构体变量的地址。,对结构体变量初始化.#include void main()struct student long int num; char name20; char sex; char addr20; a=10101,LiLin,M,123 Beijing Road; /* 对结构体变量a赋初值*/printf(No.:%ldnname:%snsex:%cnaddress:%sn,a.num,,a.sex,a.addr); ,结构体数组,一个结构体变量中可以存放一组数据(如一个学生的学号、姓名、成绩等数据)。如果有个学生
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新疆乌鲁木齐市第八十七中学2026年中考适应性考试(二)数学试题试卷含解析
- 工程设计与施工质量保证承诺书3篇
- 2026年四川达州新世纪学校初三5月质量检测试题(A卷)语文试题理试题含解析
- 职业培训教育质量保障承诺书5篇
- 2026年工程机械:振动筛筛网张紧与防堵结构设计研究
- 2026年医院搬迁期间医疗服务连续性保障方案
- 2026年手持式分析仪在食品安全快检
- 餐饮服务双语·第二版课件 项目五 点餐服务
- 我敬佩的一个人作文
- 无偿销售协议书范本
- 掐丝珐琅制作工艺
- 中移铁通招聘笔试试题
- 2023公路旋挖钻孔灌注桩施工标准
- 2024 年福建省中学生生物学竞赛初赛试题(解析版)
- 2024年教育改革下的《高等数学2》教案创新
- 物联网数据处理
- 团队建设与管理 课件 第7章 团队认同与凝聚力
- 2024历年高考数学试题汇编:排列组合
- 小水电安全生产事故应急专项预案
- 胃癌MDT讨论课件
- 不良品管理规范操作
评论
0/150
提交评论