您的当前位置:首页正文

0第0讲 知识点回顾(基础)

2020-05-28 来源:客趣旅游网
常用知识点回顾

一、输入输出(可以没有输入,但必须有输出)

1.单字符输入/出:getchar()、putchar(字符变量)。 2.字符串输入/出:gets(字符数组名)、puts(数组名)。

3..格式化输入: scanf(“格式控制符”,变量地址列表);

格式控制符:%c、 %d 、 %o、 %x、 %s、 %f

 若输入long型、double型应加l,如%ld、 %lo、 %lf

 格式%s输入字符串不包含空格,且对应地址表列是字符数组名。  默认分隔符:空格、回车、Tab键(也可按域宽截取)

 格式控制符间不宜加其它字符,如加入其它字符,输入时应原样输入;

scanf(“%d, %d”,&a,&b); 输入数据时两数据间要有逗号;

scanf(“%d %d”,&a,&b); %d间有两个空格,则输入数据时至少有两个空格。

 输入函数中%f格式不能带小数。

 scanf(“%10.5d %s\\n”,&a,&b);(是否有错?)/n 在scanf 格式串中不表

示等待换行符, 而是读取并放弃所有的空白字符

 %c格式输入单字符,空格字符和转义字符都作为有效字符接收。  %*d表示跳过它对应的输入数据。

4..格式化输出:printf(“格式控制符”,输出列表);

 格式控制符部分可加入其它字符,原样输出,使输出结果清楚显示。  输出列表:可以是变量、常量、表达式、函数调用等。  注意:输出 long 、double型数据,用%ld、%lf  可设定输出宽度,m和n,如:%5d、%6.2f、%.2f  负号表示域内向左对齐,如:%-12d

二、常量,变量及运算符 1.常量:  整型常量

 实型常量:小数形式、指数形式。

 字符常量:用单引号,如‘c’(注意转义字符)。

 字符串常量:用双引号,如“hglhg”、“a”,内存占用为实际长度加1。  符号常量:无参宏(#define)。 2.变量:

 标识符命名规则:4条。  各种类型变量的长度。

 数据类型转换:自动、强制。

 注:强制类型转换只得到所需类型的结果值,原变量或表达式的类型仍为

原类型。如(float)(x+y)

3.各种运算符运算规则及其优先级。 4.特别强调---逻辑表达式的优化运算:

 &&运算:只要算出第一个表达式为0,第二个表达式不再运算。  ||运算:只要算出第一个表达式为1,第二个表达式不再运算。 如:int i=0,j=0,a=6;

if ((++i>0)||(++j>0)) a++; printf(%d%d%d”,i,j,a); 结果i,j,a为( )。

答案:1 0 7

5.其它运算符:条件运算、逗号运算、长度运算符(形式:sizeof 表达式 或sizeof (数据类型))(常用) strlen If (x>y?X:y) 三、结构化程序设计

1.if、while、for中的表达式,一般是逻辑或关系表达式,也可以是任意类型表达式。如while(a=5)„.

2.如果有多条语句,必须用大括号括起,构成复合语句。

3.switch语句中case后面只能是常量值;若执行完某case后的语句没遇到break,则继续执行下一个case语句。

4.循环程序:注意循环变量的初值、修正值、循环条件等,以及循环中用到的某些变量赋初值,如求累加和变量。

5.一般是先判断条件,再执行循环体;但do—while语句是先执行一遍循环体,再判断条件。

6.break、continue语句。

7.C语言由函数组成,有且仅有一个main函数。 8.一条复杂语句分行书写,用反斜杠(\\)续行。 9.注释用/*„„*/

四、函数

1.函数定义:int func(int a,int y);如定义时没指明函数类型,如:fun(int a);默认是int型,返回值不确定。

2.声明:在主函数之前定义,可以直接使用;否则应该先声明后使用。

函数声明后加分号,而函数定义后没有分号。

3.函数调用:函数名(实参表);

 实参与形参个数、类型、位置一致。

 形参与实参占据不同的存储单元;形参只在函数调用时才为其分配存储单元,函数调

用结束后释放。

 实参与形参之间是传值调用,单向传递关系,形参值改变,不会影响实参值。  补充:函数可嵌套调用,不可嵌套定义。

 嵌套调用:一个函数内部又调用另外一个函数。

 递归调用:一个函数调用它自身。(如典型的求阶层 n!等) 4.数组作为函数参数:void func(int a[],int n);

 传递的是实参数组的首地址。调用时实参是数组名,如func(a,10);

5.多维数组: void func(int a[][5],int n);(可省略第一维,但不能省略其它高维)。 6.从作用域角度,变量分为:全局变量、局部变量。

 局部变量:在函数内部定义,只能在该函数中使用,包括函数的形参和复合语句中定

义的变量,main函数中定义的变量也是局部变量,不能被其它函数使用。  不同函数内定义的同名变量,互不影响,因其作用域不同,内存空间独立。

 全局变量:在函数外部定义,作用域从定义开始到本文件结束。其间的所有函数都可

以使用它,可在各函数间传递值,但容易带来副作用,降低模块独立性。(不提倡) 7.变量的存储类别:auto、static、register、extern。 8.局部变量的存储类别: auto、static、register。

 auto型的生存周期时函数被调期间,两次调用之间不保留值。  static型的生存期是整个程序运行期间,保留上一次调用

void func(int n) 后的值,且只赋一次初值(在程序运行前初始化,默认初

{ static int a=1; 值为0)。如:

a+=n; 9.全局变量的存储类别: static、extern。

printf(“%d,”,a);  全局变量总是存放在静态存储区间,生存期是整个程序运

行期间,只赋一次初值,在程序运行前初始化,默认初值} 为0。 main()  用extern对全局变量加以声明,可以将其作用域扩充到整

{ int b=2; 个文件或其它文件。

func(b);  定义全局变量时加上static,可将其作用域限制在本文件

func(b); 中,不能被其它文件使用。

} 程序运行结果为3,5, 10.函数的作用域是全局的,可被其它函数调用。

 函数存储类别:static、extern。默认为extern型。

 如:static int func(int a);则函数不被其它文件使用,所以两文件中的同名静

态函数,互不干扰。

函数的参数,可以是值传递: 不改变变量的值 也可以是地址传递(数组,指针): 可以改变变量的值

五、预处理

1. 预处理命令以“#”开头,末尾不加分号。在程序编译之前处理。 2、 文件包含:#include <文件名> 搜索系统标准目录

#include “文件名” 先搜索当前目录, 找不到再搜索系统标准目录

3.宏替换:将函数中出现宏名的地方用宏体进行替换。

 宏体可以是数字、也可以是组成C表达式或语句的其它字符,还可以引用已定义的其

它宏名。

 宏的作用域:定义宏之后到本源文件结束,可用#undef提前结束。  无参宏(符号常量):#define PI 3.14

注意:函数中双引号内的宏名不能替换,如 printf(“PI”);

 有参宏:#define 宏名(形参表) 宏体  引用:宏名(实参表)

 注意有参宏如果宏体和参数没用括号括起,可能有副作用。且中间不能有空格。  分析有参宏的程序时,必须先将宏替换后的表达式写到纸上,再分析结果。

#define SQR(x) x*x main( ) { int a,k=3; a=++SQR(k+1)++k+1*k+1 printf(\"%d\\n\; } 替换后的表达是为a=++k+1*k+1 ;

因篇幅问题不能全部显示,请点此查看更多更全内容