C语言复习提纲

更新时间:2023-09-28 12:46:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

知识点要求

? 第1章 C语言概述

1、 理解C语言的结构和C语言程序的特点(P6中(1)至(7));

? 第3章 数据类型、运算符与表达式

1、 记住常量的定义方法(#define 名称 值)及其特点;

2、 理解C语言标识符的要求(只能由数学、英文字母、下划线组成及规则);

3、 理解计算机存储整数的方法(以补码存储),掌握怎样编程实现显示一个整数存储编码(以

十六进制);

4、 理解掌握(unsigned)char、(unsigned)(short)int、(unsigned)long、float、double常量的表达

方法、范围,以及在printf中输出的对应格式控制符;(注意char也可以当作整数使用,理解大小写的转换方法、数字字符与数字的转换方法)

5、 理解转义字符的含义,掌握常见转义字符:\\0、\\n、\\t、\\\\、\\’、\\”、\\ddd、\\xhh;

6、 记住常量字符串的表示方法(注意与常量字符表示方法区别),理解字符串在C语言中的

存储方式及特点,由此掌握字符串在C语言中的访问方式。 7、 理解C语言中的不同类型数据在同一个表达中的运算规则,能手动计算简单表达式; 8、 理解C语言的运算符,掌握++、--运算符的简单使用(前置与后置的区别); 9、 理解强制类型转换的含义及使用场合;

10、 理解赋值规则(P60~61:(1)~(8));理解复合赋值;(注意赋值号左边必须是一个单元,

常常就是一个变量) 11、 理解逗号到处符和三元运算符;

? 第4章 最简单的C程序设计—顺序程序设计

1、 理解并掌握C语言的语句分类及各自的特点;(P69~71,注意复合语句可以声明变量,

但作用范围只在这一个复合语句的范围) 2、 理解什么是头文件,记住怎样包含头文件;

3、 记住并能熟练使用putchar和getchar两个函数(P73~74)

4、 记住并能熟练使用scanf和printf两个函数,其中scanf只要求掌握简单的使用,特别注

意scanf读取字符串的方法及特点,能区分与gets函数读取字符串的区别;特别注意在printf中输出宽度控制对不同类型的控制特点(如整数、浮点数、字符串等)

? 第5章 选择结构程序设计

1、 记住C语言中的关系运算符与逻辑运算符(注意==与!=);理解C语言对逻辑值的判断方式;

2、 熟练掌握if语句的使用,注意{}的使用;

? 第6章 循环控制

1、 理解C语言中的常用的三种循环,特别注意for循环的表达方式及循环流程; 2、 掌握for循环的掌见使用方法(P118~121); 3、 理解break、continue的含义及使用特点。

? 第7章 数组

1、 掌握一维数组和二维数组的声明方式与初始化方法(特别注意初始化元素不足的情形); 2、 掌握一维数组和二维数组的遍历方法;在给出元素的下标情形下,要求能计算出该元素的地址;(注意二维数组在C语言中是按行存储的)

3、 掌握C语言字符数组与字符串的关系,能对字符串进行遍历; 4、 掌握gets、puts、strlen、strcmp、strcat、strcpy的使用。

? 第8章 函数

1、 掌握函数声明的格式,理解形参与实参的含义与之间的传递规则(理解形参变量内容的改

变不会影响实参变元内容),理解函数最多能返回一上值及返回方式; 2、 注意几类函数的区别:库函数、main函数、用户自定义函数; 3、 理解函数可以嵌套调用,它的特殊情形是递归调用;

4、 理解并能熟练使用数组作为形参的声明方式(如int a[]和int* a、int a[][5]和int (*a)[5])及

对应实参的传递方式;(注意理解:数组作为参数传递过去的是数组的首地址,在函数中可以通过该地址访问数组的元素,从而实现改变元素的目的,但这不是改变实参) 5、 理解全局变量、局部变量的声明方式、使用特点(理解P185~187中的(1)(2)(3)); 6、 理解静态变量(static)、寄存器变量(register)变量特点,特别注意理解static(P189~191)。

? 第10章 指针

1、 理解指针(即地址)、指针变量(存储指针的变量)、指向的含义;掌握指针变量的声明方式

和使用(怎样得到地址、怎样取到内容);注意指针变量有存储单元,用来存储指针,而其它简单类型变量也有存储单元,但是只用来存储内容);注意指针与数的加法含义,比如P+1、P++分别表示什么。

2、 理解指针作为参数传递的方法及意义(可以通过传递的指针即地址找到主调函数中变量,从而改变其内容) – 把地址传递及函数称为传址调用,把内容传递入函数称为传值调用; 3、 掌握指针与数组的关系,并能利用指针访问数组(P230~231中的(1)(2)(3)、P232~235中

的①②③④) 4、 理解行指针与列指针(了解之间的转化关系),能计算两类指针加上一个数的结果,知道

行指针的定义(如int (*p)[4]),能利用二维数组首地址计算某行某列元素的地址; 5、 理解字符指针,注意字符指针赋常量字符串初值与字符数组赋常量字符串初值的区别; 6、 掌握函数指针的定义方式,了解函数指针的赋值,与作为参数传递的方式; 7、 注意指针作为返回类型时,不要返回在函数中声明的局部变量的地址。注意理解为什么。 8、 掌握malloc函数的free函数的使用格式,以及它们的标准使用方法(动态内存声明成功后,通常可以作为一维数组使用,也可模拟为二维数组,但最后一定要用free函数释放) 9、 了解指针数组和指向指针的指针,了解能接收命令行参数的main函数的声明方式。

? 第11章 结构体与共用体

1、 理解结构体与数组的区别与联系(从其成员元素的类型理解);

2、 掌握结构体的声明方式与使用结构体声明结构体变量的方式,掌握怎样使用结构体成员变量。

3、 掌握结构体作为整体使用的两种情形:两个同类型的结构体变量进行赋值运算时和当结构体变量作为函数的参数进行传递时;

4、 掌握结构体数组的使用(实质与一般数组的使用方法相同);

5、 掌握结构体指针的声明方式(注意结构体指针+一个数的含义);掌握利用结构体指针访问

结构体成员的方法(两种);记住运算符优先级为1级的4个运算符:()、[]、->、.。(分

析:p->math、p->math++、++p->math、(++p)->math、(p++)->math)

6、 会声明链表结点的结构体类型,会构造链表,能进行链表的遍历;会绘图演示链表中元

素的删除和插入过程; 7、 了解共用体、枚举类型,能对typedef进行简单的使用。

? 第13章 文件

1、 了解文件的定义,了解文本文件和二进制文件的特点;

2、 了解FILE结构体;能用fopen、fclose写出文件操作的标准过程; 3、 记住:fgetc和fputc、feof、fread和fwrite、fscanf和fprintf、fgets和fputs、rewind、fseek、

ftell函数的含义与使用方法。

能力要求(程序类型举例)

1. 内存编码显示问题:从外部读入一个整数,输出这个数在内存中的存储编码(以十六进制),并且输出若直接把该编码当作原数的值;

2. 字符转换问题:从外部读入一个字符,如果是小写字母,则转换为大写字母输出;如是是大写字母,则转换为小写字母输出;如果是数字字符,则转换为对应的数字输出。 3. 随机数的简单使用、偶数的判断问题:产生一随机整数,若该数为偶数,则输出字符串

“学习”,否则输出“锻炼”。

4. switch的使用:写一段程序,利用switch语句把学生成绩(整型分数)转换为等级,规则

如下:

90?x?100?'A',?f(x)??'B', 80?x?90

?'C', x?80 ?5. 循环编写之最大公约数问题:写一个函数,用辗转相除法求整数a、b的最大公约数,

返回两数的最小公倍数,函数原型为:int lcm(int a,int b); 6. 素数判断问题:求出1~100之间所有的素数。

7. 循环编写之3n+1问题:任选一个自然数,如果该数为偶数,就将它变为自身的1/2;

如果奇数,那就将它变为原来的3倍再加1。按照这样的方法进行运算,经过若干次计算后,无论最初是什么数,得到的结果总是“1”。试用程序输出该数的变化过程。

8. 遍历数组:(1)给出一个整型数组,找出该数组中的最大元素,同时求出它们的平均值,

输出结果;(2)写一个函数,找出字符串中指定的字符的位置(即下标),比如’\\\\’,注意如果不存在,则返回-1,函数原型可参考:int findchar(char* str, char ch);(3)写一个函

数,实现列数为5的矩阵的转置,原型可为:int transpose(int (*ma)[5]);或者:int transpose(int ma[][5]);

9. 构造特殊矩阵:(1)构造一个5阶希尔伯特矩阵;(2)构造一个5行的杨辉三角矩阵。

?1?1/2??1/3??1/4??1/51/21/31/41/51/61/31/41/51/61/71/41/51/61/71/81/5??1/6?1/7?

?1/8?1/9???1?1??1??1??10123400136000140??0?0? ?0?1?? 5阶希尔伯特矩阵 5行杨辉三角矩阵

10. 字符串的使用:(1)遍历字符串,计算它的长度(不含’\\0’);(2)假设一字符数组存储了

一个字符串(全为小写英文字符),按以下规则变换:a->b,…,y->z,z->a(提示:%运算符):char* trans(char* str);(3)编写一个函数,取字符串的左子串(返回值为子串首地址):char* left(char* str, int n, char* d);(4)编写一个函数,删除字符串左边的所有空格(返回值字符串首地址):char* ltrim(char* str);(5)编写一个函数,取字符串的任意子串:char* mid(char* s,int start,int n,char* d);

例:char str[]=”aaercg”; trans(str);则str中应为字符串”bbfsdh”;

char str[]=”asdfsa fsdf”, d[20]; left(str,3,d);则d中为”asd”;

若left(str,100,d);则d中为” asdfsa fsdf”;若left(str,-2,d);则d为空,即d=”\\0”。

char str[]=” asd”; ltrim(str);则str中为”asd”。

11. 简单排序:编写一个函数,实现对浮点数组的排序:int sort(float* f, int n); 12. 静态变量的使用:编写一个函数,在该函数中打印出自身已被调用的次数。

13. 指针的简单使用:(1)用指针实现两个数交换;(2)用指针访问数组中的每个元素(通过指

针加法); 14. 动态分配内存的简单使用:从键盘读入n(1?n?26),生成一个长度为n的字符数组,

并赋值’a’,’b’,…。 15. 链表的简单使用:(1)若链表结构体类型已给出,建立一个含n个有效结点的链表;(2)

若链表已建立(头结点不含有效数据),输出每个结点的的有效数据;(3)若链表已建立(至

少有一个不含有效数据的头结点),释放链表。

16. 文件的简单操作:(1)在程序中生成1000个随机整数,并把它们输入到文件名为“data.txt”

的文件中(数与数之间用空格隔开);(2)把与程序同目录下的文件“data1.c”复制到文件“data1.bak”;(3)把程序中的一个数组所有数据,一次性按二进制格式写入文件“data.dat”中(用fwrite);(4)给出文件名“file1.exe”,求出它的文件长度,并输出。

参考程序

/*1.内存编码显示问题:从外部读入一个整数,输出这个数在内存中的存储编码(以十六进制),并且输出若直接把该编码当作原数的值;*/ #include void main(void) {

int d;

unsigned k; scanf(\ k=d;

printf(\

}

/*2.字符转换问题:从外部读入一个字符,如果是小写字母,则转换为大写字母输出;如是是大写字母,则转换为小写字母输出;如果是数字字符,则转换为对应的数字输出。*/ #include void main(void) {

char ch; scanf(\ if(ch>='a'&&ch<='z') ch=ch+'A'-'a';

else if(ch>='A'&&ch<='Z') ch=ch+'a'-'A';

else if(ch>='0'&&ch<='9') ch=ch-'0'; if(ch>9)

printf(\ else

printf(\

}

/*3.随机数的简单使用、偶数的判断问题:产生一随机整数,若该数为偶数,则输出字符串“学习”,否则输出“锻炼”。*/ #include #include void main(void) {

int k; k=rand();

if(k%2)

printf(\锻炼\\n\ else

printf(\学习\\n\}

本文来源:https://www.bwwdw.com/article/u3md.html

Top