《2022年程序设计基础复习知识 .pdf》由会员分享,可在线阅读,更多相关《2022年程序设计基础复习知识 .pdf(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、程序设计基础复习知识点知识点:1、C 语言程序的结构a)一个程序由一个或多个源程序文件组成。在一个源程序文件中可以包括3 个部分:预处理指令、全局声明、函数定义;b)C 是函数式语言,C 的基本单位是函数,函数是C 程序的主要组成部分。一个C语言程序是由一个或多个函数组成,其中必须包含且只能有一个main 函数;c)一个函数由两部分组成:int max (int x, int y) 声明部分 ; 执行部分 ; d)C 程序总是从main 函数开始执行的,在 main 中结束, 与 main 函数的位置无关。e)每个语句和数据声明的最后必须有一个分号。f)C 语言中用于结构化程序设计的三种基本结
2、构是顺序结构 、选择结构 、循环结构2、标识符、变量和常量a)在 C 语言中,标识符只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线b)在程序运行过程中,其值不能被改变的量称为常量,常量类型分为:i.直接常量:整型常量(如100,125) 、实型常量(如3.14,1.24e3) 、字符常量(如 a 、 3 、 n ) 、字符串常量(如” boy” 、” 123” )ii.符号常量:用 #define 指令,指定一个标识符代表一个常量c)变量代表内存中具有特定属性的一个存储单元,在程序运行期间, 变量的值是可以改变的。 注意: 变量必须先定义,后使用,C 语言的关键字不能用作变量名。
3、3、C 的基本数据类型:整型((unsigned)int, (unsigned)short, (unsigned)long, ) 、浮点型(float,double) 、字符型 (char) a)常量的表示方法b)变量的定义方法以及如何进行正确赋值c)数据类型的取值范围4、常用的 C 运算符及优先级顺序a)赋值运算符: = b)算术运算符: +、 -、*、/、%,其中特别要注意/和%的用法i./的右边不能为0,且当 /的两端都是整数时做整除运算,否则执行实数除法ii.%为模运算符,要求%的两端都必须是整数c)关系运算符: 、 、=、=、!=d)逻辑运算符: !、& 、|,!的优先级比 & 和|
4、高e)自增、自减运算符:+、i.+i 是先将 i 的值加 1 后,再使用i 的值函数体(由最外层的一对 括起来的部分)函数的首部名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 7 页 - - - - - - - - - ii.i+ 是先使用 i 的值,再将i 的值加 1 f)强制类型转换符:( 类型说明符) (表达式 ),如g)sizeof 运算符:获得变量或数据类型所占内存的大小(以字节为单位) , 如 sizeof(int) 、sizeof(a) h)复合运算符,如s
5、um+=i 等价于 sum=sum+i i)逗号运算符,例如:a+3, b=4, b+ 。逗号表达式的求值顺序是从左向右依此计算用逗号分隔的各表达式的值,而最后一个表达式的值就是整个逗号表达式的值。j)上述运算符的优先级顺序:强制类型转换符、sizeof 运算符 自增、自减运算符算术运算符 关系运算符(,=,逻辑运算符 (!高于 &,|) 复合运算符、赋值运算符逗号运算符5、数据的输入输出a)头文件 stdio.h,程序中的使用方法:#include b)格式化输出函数:printf(“常规字符 /格式控制符” , 表达式 1,.,表达式 n) i.表达式的个数应与格式控制符的个数一致,若格式
6、控制符的个数更多时,多出的格式控制符输出的内容是不确定的,若表达式的个数更多时,多出的表达式将不输出ii.常用的格式控制符:int型( %d 、%u 、%o 、%x ) 、short型(如 %hd ) 、long 型(如 %ld) 、 char 型 (%c ) 、 字符串(%s) 、 float型/double型 (%f、 %e , 其中 %m.nf,表示输出数据的宽度为m个字符宽度,并保留小数点后n 位)iii.根据表达式的类型选择正确的格式控制符,否则将导致后面的数据输出出错c)格式化输入函数:scanf( “格式控制字符串”, 变量 1 的地址 ,.,变量 n 的地址 ) i.如何正确输
7、入数据?看格式控制字符串。若相邻两个格式控制符之间没有指定数据分隔符,则默认两个输入数据用一个空格或回车分隔,若格式控制字符串中出现常规字符,务必原样输入。ii.格式控制符的个数必须与后面的变量地址个数一致iii.常用的格式控制符:int 型(%d、%ld、%hd、%u) 、short 型(如 %hd) 、 long型(如 %ld) 、字符型( %c) 、字符串( %s) 、float 型(%f ) 、double 型( %lf )iv.根据变量类型选择正确的格式控制符,否则将导致输入的变量值出错或内存溢出的错误d)字符型数据的非格式化输入getchar( )、输出 putchar( ) i.
8、getchar( )函数的功能是从终端输入一个字符,如while(getchar()!=n ) ; 上述语句常用在两次scanf( )间清空输入的缓冲ii.putchar( ) 函数的功能是向终端输出一个字符,如putchar(n ) 语句的功能是输出一个换行符6、用 if 语句实现选择结构a)基本格式:if (expr) 语句 1;else 语句 2;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 7 页 - - - - - - - - - b)if 语句后面的expr
9、 必须用括号 括起来;c)expr 非零时表示条件为真,表达式为零时表示条件为假;d)语句 1、语句 2 为多个语句时,必须把这一组语句用 括起来 ,且在 之后不能再加分号;若为单条语句时, 可省略e)在 if的嵌套语句中,else 总是与 之前最近且尚未配对的if配对7、条件运算符和条件表达式a)基本格式: expr1?expr2:expr3b)含义:若 expr1 为真,那么执行expr2,否则执行expr3举例:请写出“若ch 是大写字母则将其转换成对应的小写字母”的条件表达式ch=(ch= A & ch= Z )?(ch+32):ch;8、用 switch语句实现多分支选择结构a)基本
10、格式:switch ( 表达式 ) case E1:语句组1;break; case E2:语句组2;break; ,. case En:语句组n;break; default: 语句组;break; b)switch 后面的“表达式” ,只可以是int、char 和枚举型中的一种。c)每个 case后面“常量表达式”的值,必须各不相同d)每个 case后面的表达式中不能包含变量e)每个 case部分内容结束后必须加上break语句,以便结束switch 语句f)多个 case子句,可共用同一语句(组)举例: 用 switch 语句编写下列程序:给出一百分制成绩,要求输出成绩等级 A 、 B
11、、 C 、D 、 E ,90 分以上为 A ,8089 分为 B ,7079 分为 C ,6069 分为 D , 60分以下为 E 。9、用 while 语句实现循环a)基本格式:while ( 表达式 ) 循环体语句;b)含义:当表达式为真时,执行循环体;循环的终止条件是当表达式为假时c)while 后面的括号()不能省d)循环体若由多条语句组成,应用 括起来,且 后面不要加;号10、用 do.while 语句实现循环a)基本格式:do 循环体语句;while(表达式 );b)含义:先执行循环体,然后再判断表达式,若表达式是否为真,则再执行循环体;名师资料总结 - - -精品资料欢迎下载 -
12、 - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 7 页 - - - - - - - - - 循环的终止条件是当表达式为假时c)与 while 语句不同,如果do-while 后的表达式的值一开始就为假,循环体还是要执行一次。11、用 for语句实现循环a)基本格式:for ( 表达式 1;表达式 2;表达式 3) 循环体语句;b)for 后面的括号()不能省。c)表达式 1:给循环变量设置初值,只执行一次。d)表达式 2:是循环条件表达式,用来判定是否继续循环。e)表达式 3:增加或减少循环变量的值,是在执行完循环
13、体后才进行的。f)表达式之间用分号分隔。语句部分称为循环体,当需要执行多条语句时,应用 括起来,且 后不加;号。12、break 语句:用于提前终止循环a)功能:在循环语句和switch 语句中 ,终止并跳出循环体或开关体b)break 不能用于循环语句和switch 语句之外的任何其它语句之中。c)break 只能终止并跳出最近一层的结构。13、continue 语句:用于提前结束本次循环a)功能: 结束本次循环, 跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断。b)仅用于循环语句中c)在嵌套循环的情况下,continue 语句只对包含它的最内层的循环体语句起作用。14、一维数组
14、的定义:数据类型符数组变量名 整型常量表达式;a)数组定义时, 必须指定数组的大小,数组大小必须是整型常量表达式,不能是变量或变量表达式b)数组定义后, 系统将给其分配一定大小的内存单元,其所占内存单元的大小与数组元素的类型和数组的长度有关。15、一维数组的引用:数组变量名下标 a)下标可以是整型常量、整型变量或整型表达式。C 语言规定, 只能逐个引用数组元素,不能一次引用整个数组b)数组引用要注意越界问题。数组下标的最小值是0,最大值则是数组大小减1 。16、一维数组的赋值a)初始化赋值:数据类型符数组变量名 常量表达式 = 表达式 1,表达式 2, , ,表达式n ;i.“=”后面的表达式
15、列表一定要用 括起来, 被括起来的表达式列表被称为初值列表,表达式之间用“,”分隔;ii.表达式的个数不能超过数组变量的大小;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 7 页 - - - - - - - - - iii.如果表达式的个数小于数组的大小,则未指定值的数组元素被赋值为0;b)在程序中赋值: 除了在定义数组变量时用初值列表对数组整体赋值以外,无法再对数组变量进行整体赋值,只能通过 C 语句对数组中的数组元素逐一赋值。17、字符串与字符数组a)字符串是一种以
16、“0 ”结尾的字符数组b)字符数组赋值: 在用字符数组来存放某个字符串常量时,如果要指定字符数组的大小,那么其大小至少要比字符串的长度大1(多定义一个单元用于存放0) 。c)字符串的输入函数:i.gets 函数:从键盘输入一以回车结束的字符串放入字符数组中,并自动加 0 ii.scanf 函数:从键盘输入一以空格或回车结束的字符串放入字符数组中,并自动加 0 d)字符串的输出函数:i.puts 函数:向显示器输出字符串(输出完,换行)ii.printf函数:依次输出字符串中的每个字符直到遇到字符0 e)字符串的长度函数:f)strlen函数:返回字符串实际长度, 不包括 0在内,应包含的 .h
17、 文件为 string.h g)strcpy函数:应包含的.h 文件为 string.h i.基本格式: strcpy (字符数组 1, 字符串 2) ii.功能:将字符串2 拷贝到字符数组1 中去iii.注意:不能使用赋值语句为一个字符数组赋值h)strcmp 函数:应包含的.h 文件为 string.h i.基本格式: strcmp (字符串 1, 字符串 2) ii.功能:对两串从左向右逐个字符比较(ASCII 码) ,直到遇到不同字符或0为止 a. 若字符串 1 字符串 2, 返回正整数 c. 若字符串 1= 字符串 2, 返回零iii.注意:字符串比较不能用“=” ,必须用strcm
18、p i)strcat函数:应包含的.h 文件为 string.h i.格式: strcat (字符数组 1, 字符数组 2) ii.功能:把字符数组2 连到字符数组1 后面18、函数的概念:a)函数其实就是一段可以重复调用的、功能相对独立完整的程序段b)C是函数式语言 。c)C程序必须 有且只有一个主函数main, C程序的执行总是从main 函数开始,在 main中结束。如果在main 函数中调用其他函数,在调用后流程返回到main 函数,在main 函数中结束整个程序的运行d)函数不能嵌套定义,但可以嵌套调用,但不能调用main 函数, main 函数是由操作系统调用的e)函数直接或间接的
19、调用自身叫函数的递归调用。例如,函数 funA 调用了函数 funB,函数 funB 又调用了函数funA,则称为函数的间接递归调用名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 7 页 - - - - - - - - - 19、函数的分类:20、函数的定义和调用方法21、函数的参数传递:a)值传递方式i.方式:函数调用时 ,为形参分配单元, 并将实参的值复制到形参中;调用结束,形参单元被释放,实参单元仍保留并维持原值。ii.特点: 形参与实参占用不同的内存单元 单向传递
20、b)地址传递方式: (用数组和指针变量)i.方式:函数调用时,将数据的存储地址作为参数传递给形参ii.特点: 形参与实参占用同样的存储单元 双向传递 实参和形参必须是地址常量或变量22、局部变量和全局变量的作用域和生存期23、指针和指针变量a)指针:一个变量的地址b)指针变量:专门存放变量地址的变量c)指针运算符: & 取变量的地址,* 取指针所指向变量的内容,两者互为逆运算例如, int *p=&a;那么以下关系成立:p = &i = &(*p) a = *p = *(&a) d)指针变量的定义:基类型 *指针变量名;e)指针变量必须初始化后才能使用,否则, 严重时会造成系统区破坏而死机。指
21、针变量赋值有两种方式:用变量的地址为指针变量赋值,赋值后指针变量就指向该变量;用 malloc 动态分配内存,并将分配内存的起始地址赋给指针变量f)指针变量 p n (n0) 表示 p 所指的数据存储单元之后( 之前 ) 的第 n 个数据存储单元:p n 的值 = p n * sizeof(p 所指内存单元存储数据的类型)24、指向一维数组的指针变量a)数组的指针:数组在内存中的起始地址,即数组名,这是一个常量,它可以参与运算但不能改变它的值,例如,int a10; a+是错误的b)数组元素的指针:数组元素的指针就是数组元素在内存中的起始地址c)指向一维数组的指针变量:如果将数组的起始地址赋给
22、某个指针变量,那么该指针变量就是指向数组的指针变量。例如,若有int a10, *p = a;,则下列关系式等价的:a+i = p+i = &ai = &pi *(a+i) = *(p+i) = ai = pi 注意: p+i 指向数组中单元下标为i 的数组单元,而不是简单地使指针变量p 的值 +i 。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 7 页 - - - - - - - - - 其实际变化为p+i*size(size为一个元素占用的字节数) 25、指向字符串
23、的指针变量a)用字符数组实现字符串b)用字符指针实现字符串c)注意两者实现上有一点区别d)字符指针初始化: 把字符串首地址赋给string 用字符数组存储字符串“I love China! ” char string14=”I love China!”(正确的,注意这里至少需要14 个单元) char string=”I love China! ”(正确的,由后面的字符串确定所需的单元个数) char string14; string = “I love China! ”(错误的, string是数组名, 不能用常量字符串“I love China! ”的起始地址对其进行赋值) char *string=“ I love China! ”; (正确的,用常量字符串的起始地址对指针变量进行初始化,string指向该常量字符串) char *string; string = “I love China!”; (正确的,这里的string是指针变量,其值是可以改变的,赋值结果是使得string指向常量字符串“I love China!” )名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 7 页 - - - - - - - - -