C语言程序设计复习大纲
目录
- C语言程序设计复习大纲
- 1. C语言程序的结构(P10)
- 2. 结构化程序的三种基本结构
- 3. 运行C程序的步骤与方法,源程序,目标程序,可执行程序的后缀名(P12)
- 4. C语言的注释方法
- 5. 转义字符及其作用(P40)
- 6. 符号常量与常变量的区别与作用,宏替换的执行过程(P42)
- 7. 标识符的组成(P42)
- 8. 常见的数据类型(P43)
- 9. 运算符的运算规则及各表达式的正确书写与求解(赋值表达式,自增自减表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式(自学))(P52)
- 10. C语句的作用及5类语句的功能。P57
- 11. printf函数与scanf函数的正确使用。掌握各格式字符的P74,P76
- 12. 字符数据的输入输出函数的使用(P78)
- 13. 顺序结构、选择结构、循环结构的程序的执行过程,根据程序求结果。(for循环,while循环,do…whlie循环的书写格式)。break语句与continue语句的区别 .P131案例 P140第4题
- 14. 一维、二维数组(数值型数组和字符数组)的定义、初始化和元素的引用
- 15. 数值型数组与字符数组的区别?
- 16. 字符串和字符串结束标志,掌握字符串的处理方式,字符串的有效长度和实际长度,字符数组的输入输出的两种方式:P159
- 17. scanf函数与gets函数各自的优缺点(能否正常接收空格字符)
- 18. 学会常见的字符串处理函数的使用(如何判断两个字符串相等?)P163
- 19. 了解函数的作用,学会定义函数、调用函数、声明函数的方法,掌握函数调用时的数据传递,掌握函数调用的过程,函数返回值的获得:return语句。(函数不可嵌套定义,但可嵌套调用,递归调用(P187例7.7),掌握普通变量、数组元素做函数参数及数组名做函数参数(P194例7.10)的区别与优缺点(传值与传地址)
- 20. 局部变量与全局变量的定义及各自的作用范围P203
- 21. 变量的存储方式和生存期 P205
- 22. 内部函数与外部函数的区别
- 23. 指针和指针变量的概念及本质(指针:地址;指针变量:存放地址的变量),指针变量的定义,初始化和使用。学会通过指针引用 普通变量、结构体变量、数组元素、函数。掌握数组指针(P252例8.14,实验12第1题)和指针数组的区别与定义。掌握指针函数(P269例8.23)和函数指针的区别与定义。(P289表8.4)
- 24. 掌握指针变量做函数参数的用法(P226)
- 25. 掌握结构体类型的定义和结构体变量的定义,初始化和使用,掌握结构体数组的定义、初始化和使用,掌握结构体数组做函数参数的用法(实验11 第3题),掌握指向结构体变量的指针的用法P303,掌握结构体与共用体的区别
- 26. 文件的基本用法:P338
- 27. 位运算的基本用法(按位与,按位或,按位异或)
(C程序设计(第四版)谭浩强 编著)
1. C语言程序的结构(P10)
2. 结构化程序的三种基本结构
顺序;条件;循环
3. 运行C程序的步骤与方法,源程序,目标程序,可执行程序的后缀名(P12)
4. C语言的注释方法
//(注释部分)
/* (注释部分)*/
5. 转义字符及其作用(P40)
6. 符号常量与常变量的区别与作用,宏替换的执行过程(P42)
7. 标识符的组成(P42)
字母;数字;下划线(第一个字符必须是字母或下划线,不能是关键字)
8. 常见的数据类型(P43)
9. 运算符的运算规则及各表达式的正确书写与求解(赋值表达式,自增自减表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式(自学))(P52)
https://blog.csdn.net/JeeCai/article/details/107282954
10. C语句的作用及5类语句的功能。P57
11. printf函数与scanf函数的正确使用。掌握各格式字符的P74,P76
int a;
scanf("%d",&a);
printf("%d",a);
12. 字符数据的输入输出函数的使用(P78)
getchar()
putchar()
13. 顺序结构、选择结构、循环结构的程序的执行过程,根据程序求结果。(for循环,while循环,do…whlie循环的书写格式)。break语句与continue语句的区别 .P131案例 P140第4题
#include <stdio.h>
int main()
{
char c;
int letters=0,space=0,digit=0,other=0;
printf("请输入一行字符:
");
while((c=getchar())!='
')
{
if (c>='a' && c<='z' || c>='A' && c<='Z')
letters++;
else if (c==' ')
space++;
else if (c>='0' && c<='9')
digit++;
else
other++;
}
printf("字母数:%d
空格数:%d
数字数:%d
其它字符数:%d
",letters,space,digit,other);
return 0;
}
continue和break的区别
continue 语句和 break 语句的区别是,continue 语句只结束本次循环,而不是终止整个循环。break 语句则是结束整个循环过程,不再判断执行循环的条件是否成立。而且,continue 只能在循环语句中使用,即只能在 for、while 和 do…while 中使用,除此之外 continue 不能在任何语句中使用。
所以,再次强调:continue 不能在 switch 中使用,除非 switch 在循环体中。此时 continue 表示的也是结束循环体的本次循环,跟 switch 也没有关系。
例如,下面为使用switch模拟电梯运行的代码:
# include <stdio.h>
int main(void)
{
int val; //variable的缩写, “变量”的意思
printf("请输入您想去的楼层:");
while (1)
{
scanf("%d", &val);
switch (val)
{
case 1:
printf("1层开!
");
break; //跳出switch
case 2:
printf("2层开!
");
break; //跳出switch
case 3:
printf("3层开!
");
break; //跳出switch
default:
printf("该层不存在, 请重新输入:");
continue; //结束本次while循环
}
break; //跳出while
}
return 0;
}
输出结果是:
请输入您想去的楼层:4
该层不存在, 请重新输入:3
3层开!
14. 一维、二维数组(数值型数组和字符数组)的定义、初始化和元素的引用
15. 数值型数组与字符数组的区别?
数值型数组所有元素的输出可利用循环的方式一个元素一个元素的输出完成,字符数组的输出可利用%s 和 数组名 的形式整体输出
16. 字符串和字符串结束标志,掌握字符串的处理方式,字符串的有效长度和实际长度,字符数组的输入输出的两种方式:P159
17. scanf函数与gets函数各自的优缺点(能否正常接收空格字符)
gets()吸收字符串时,会吸收空字符串(只有一个回车的字符串),并且吸收完字符串后将回车符号吸收变为’ ’,不在输入缓存区内留下该回车符号。
scanf()吸收字符串时,会自动掠过开头的空白符,直至遇见第一个非空白符才开始吸收,并且吸收完字符串后,会自动在吸收的字符串后加上’ ’。将遇见的结束标志(空白符)还留在输入缓存区内。
18. 学会常见的字符串处理函数的使用(如何判断两个字符串相等?)P163
19. 了解函数的作用,学会定义函数、调用函数、声明函数的方法,掌握函数调用时的数据传递,掌握函数调用的过程,函数返回值的获得:return语句。(函数不可嵌套定义,但可嵌套调用,递归调用(P187例7.7),掌握普通变量、数组元素做函数参数及数组名做函数参数(P194例7.10)的区别与优缺点(传值与传地址)
代码如下:
20. 局部变量与全局变量的定义及各自的作用范围P203
21. 变量的存储方式和生存期 P205
22. 内部函数与外部函数的区别
内部函数:如果一个函数只能被本文件中其它函数所调用,它称为内部函数。在定义内部函数时,在函数名和函数类型的前面加static。内部函数又称静态函数。使用内部函数,可以使函数只局限于所在文件,如果在不同的文件中有同名的内部函数,互不干扰。这样不同的人可以分别编写不同的函数,而不必担心所用函数是否会与其它文件中函数同名。
外部函数:
(1)在定义函数时,如果在函数首部的最左端冠以关键字extern, 则表示此函数是外部函数,可供其它文件调用。
如函数首部可以写为
extern int fun (int a, int b)
这样,函数fun就可以为其它文件调用。C语言规定,如果在定义函数时省略extern,则隐含为外部函数。
(2)在需要调用此函数的文件中,用extern声明所用的函数是外部函数。
23. 指针和指针变量的概念及本质(指针:地址;指针变量:存放地址的变量),指针变量的定义,初始化和使用。学会通过指针引用 普通变量、结构体变量、数组元素、函数。掌握数组指针(P252例8.14,实验12第1题)和指针数组的区别与定义。掌握指针函数(P269例8.23)和函数指针的区别与定义。(P289表8.4)
实验12第1题
#include <stdio.h>
int main()
{
char ch1='I',ch2='Q';
int n1=1, n2=6;
double d1=1.25,d2=20.5;
//定义两个指针变量pch_1、pch_2分别指向ch1、ch2
char *pch_1=&ch1, *pch_2=&ch2;
//定义两个指针变量pn_1、pn_2分别指向n1、n2
int *pn_1=&n1, *pn_2=&n2;
//定义两个指针变量pd_1、pd_2分别指向d1、d2
double *pd_1=&d1,*pd_2=&d2;
//分别输出上述ch1、ch2、n1、n2、d1、d2六个变量的地址(即六个指针变量的值)
printf("%p %p
",&ch1,&ch2);
printf("%p %p
",&n1,&n2);
printf("%p %p
",pd_1,pd_2);
//用间接存取方式输出ch1、ch2、n1、n2、d1、d2六个变量的值
printf("%c %c
",*pch_1,*pch_2);
printf("%d %d
",*pn_1,*pn_2);
printf("%lf %lf
",*pd_1,*pd_2);
//用间接存取方式修改六个变量的值:char型大写变小写,int型减5,double型加10.0
*pch_1+=32;*pch_2+=32;
*pn_1-=5;*pn_2-=5;
*pd_1+=10.0;*pd_2+=10.0;
//再次用间接存取方式输出ch1、ch2、n1、n2、d1、d2六个变量的新值
printf("%c %c
",*pch_1,*pch_2);
printf("%d %d
",*pn_1,*pn_2);
printf("%lf %lf
",*pd_1,*pd_2);
return 0;
}
P269例8.23
24. 掌握指针变量做函数参数的用法(P226)
25. 掌握结构体类型的定义和结构体变量的定义,初始化和使用,掌握结构体数组的定义、初始化和使用,掌握结构体数组做函数参数的用法(实验11 第3题),掌握指向结构体变量的指针的用法P303,掌握结构体与共用体的区别
实验11 第3题 请按下列要求编程:
(1)先定义一个结构体Date,它包含三个成员:年(year,int)、月(month,int)、日(day,int);
(2)再定义一个结构体,它包含三个成员:姓名(name,char[10])、性别(sex,char类型,’m’为男,’f’为女)、出生时间(birthday,Date类型)、身份证号(ID,char[19])、电子邮箱(email,char[60]),并用typedef将该结构体命名为Person类型;
(3)然后在主函数中定义一个Person类型的变量me,通过键盘输入自己的信息,然后输出me的各成员值。
程序执行如下图所示:
程序代码:
#include <stdio.h>
struct Date{
int year;
int month;
int day;
};
typedef struct{
char name[10];
char sex;
struct Date birthday;
char ID[19];
char email[60];
}Person;
int main()
{
Person me;
printf("请输入个人信息:
");
printf("姓名:");
scanf("%s",me.name);
printf("
性别('m'or'f'):");
getchar();
scanf("%c",&me.sex);
printf("
出生年月:");
scanf("%d %d %d",&me.birthday.year,&me.birthday.month,&me.birthday.day);
printf("
身份证号:");
scanf("%s",me.ID);
printf("
电子邮件:");
scanf("%s",me.email);
printf("
------------------
");
printf("
个人信息如下:
");
printf("姓名:%s
性别:%c
出生年月:%d年%d月%d日
",me.name,me.sex,me.birthday.year,me.birthday.month,me.birthday.day);
printf("身份证号:%s
电子邮件:%s
",me.ID,me.email);
return 0;
}
26. 文件的基本用法:P338
27. 位运算的基本用法(按位与,按位或,按位异或)
位运算符:&(按位与)、|(按位或)、~(按位取反)、^(按位异或)
!注意:如果两个长度不同的数据(假如long和int)进行位运算(i&j)时,系统会将二者按右端补齐,如果j为正数,则左侧16位补满0;如果j为负数,则左侧16位补满1;如果j为无符号整数,则左侧16位也补满0。
移位运算符:整型变量<<表达式 或 整型变量>>表达式
左移:右边空出的位补0,左边溢出的位丢弃
右移:无符号数,则左边空出来的填充0;正数时,左侧用0填充;负数时,可能补1也可能补0,看编译系统。
点击这里:C 语言位运算详解