计算机三级网络技术机试超级讲义
三级C上机的考试概括:一道编程题,不是完整的编程,完成一段函数
如何顺利通过考试:
? 熟悉上机环境,考试过程中不要在此浪费时间和精力 ? 掌握一些C编程的基本知识
? 看好南开100题的各种题型的解法 ? 多上机独立练习。
? 掌握题库题目分类规律,考试题型有限,只是少数考题条件略改,比如原题中是“从
大到小”排序,考题也许改成“从小到大”排序;排序关键字变化等,因此读透题目的基础上在作题,不因马虎而作错题目。
? 考试过程中,认真审题最关键,看到自己熟悉的简单题目、复杂题目考试之前分别
对待,考试过程中保持冷静,不慌张,见易题步盲目欢喜,见难题不乱阵脚。
C编程的基本知识
《C程序设计》的内容很丰富,按照考试要求,100题解法中主要涉及到的是基础知识、四种结构的的程序设计、函数与数组的应用和算法,在学习时,应该把主要精力放在这些部分,其它的知识,如输入输出的语句、文件的读写、指针的定义等,源程序已经给出(只要能读懂即可)。.
一、快速掌握C语言的语法忠告
强化学习,加上机练习。在写程序上经常忘记C语言中的分号、小括号、大括号的运用,一开始就要养成良好习惯和细心。特别注意的是为什么说上机练习很重要,原因就是在纸上写的,语法错了不知道,而上机错了就显示。
二、C语言的运算符和运算顺序
这是学好《C程序设计》的基础,C语言的运算非常灵活,功能十分丰富,运算种类远多于其它程序设计语言。在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算使表达式更为简单。当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则十分重要。 考试中常用的运算符: 1.算术运算符
包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(--) 2.关系运算符
用于比较运算。包括大于(>)、小于(<)、等于(==)、 大于等于(>=)、小于等于(<=)和不等于(!=)
3.逻辑运算符
用于逻辑运算。包括与(&&)、或(||)、非(!) 4.位操作运算符
左移(<<)、右移(>>) 5.赋值运算符
用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=) 6.指针运算符
用于取内容(*)和取地址(&)二种运算。 7.特殊运算符
有括号(),成员(.)等几种。
先要明确运算符按优先级不同分类,下面我们通过几个例子来说明:
(1) 5*8/4 这个表达式中出现3种运算符,是同级运算符,运算顺序按从左至右结合,因此先计算5 *8=40,然后被4除,结果为10,最后是%(求余数)运算,所以表达式的最终结果为10 = 0;
(2)a = 3;b = 5;c =++ a* b ;d =a + +* b; (3)(a = 3,b = 5,b+ = a,c = b* 5)
三、学好数据类型定义
1、 常见的数据类型:
(1)基本数据类型:整型、长整型、字符型、无符号型(unsigned char)、实数型float、double
int 整数-32768~32767 ;char 字符 单引号,数字串问题,转义字符: \\n ;
double、float都是浮点型,double(双精度型)比float(单精度型)存的数据更准确些,占的空间也更大,int是整型,long是长整型,long的范围比int大
注意:允许字符变量参与数值运算,即用字符的ASCII 码参与运算。由于大小写字母的ASCII 码相差32,因此运算后把小写字母换成大写字母。然后分别以整型和字符型输出。
(2)指针类型:
定义方式: 类型说明符 *变量名; int *p; char *p; 赋值方法:int a; int *p=&a; 或者 int a;int *p; p=&a;
注意:不允许把一个数赋予指针变量,错误形式: int *p;p=1000; 被赋值的指针变量前不能再加“*”说明符,如写为*p=&a 错误
指针变量的运算: 取地址运算符& 取内容运算符*
注意:指针运算符*和指针变量说明中的指针说明符* 不是一回事。在指针变量说明中,“*”是类型说明符,表示其后的变量是指针类型。 而表达式中出现的“*”则是一个运算符用以表示指针变量所指的变量。 例如: main() {
int a=5,*p=&a; printf (\}
int a,*pa=&a,*pb;
pb=pa; /*把a的地址赋予指针变量pb*/
int a[5],*pa;
pa=a; (数组名表示数组的首地址,故可赋予指向数组的指针变量pa) 也可写为:
pa=&a[0]; /*数组第一个元素的地址也是整个数组的首地址, 也可采取初始化赋值的方法: int a[5],*pa=a;
指针变量的加减算术运算:(主要针对数组变量的操作)
对于指向数组的指针变量,可以加上或减去一个整数n。设pa是指向数组a的指针变量,则pa+n,pa-n,pa++,++pa,pa--,--pa
指针变量加或减一个整数n的意义是把指针指向的当前位置(指向某数组元素)向前或向后移动n个位置。
注意,数组指针变量向前或向后移动一个位置和地址加1或减1 在概念上是不同的。因为数组可以有不同的类型
各种类型的数组元素所占的字节长度是不同的。如指针变量加1,即向后移动1 个位置表示指针变量指向下一个数据元素的首地址。 而不是在原地址基础上加1。
例如:int a[5],*pa;
pa=a; pa指向数组a,也是指向a[0]
pa=pa+2; pa指向a[2],即pa的值为&pa[2]指针变量的加减运算只能对数组指针变量进行,对指向其它类型变量的指针变量作加减运算是毫无意义。
两个指针变量之间的运算只有指向同一数组的两个指针变量之间才能进行运算, 否则运算无意义。
数组之间的关系运算:
pf1==pf2表示pf1和pf2指向同一数组元素 pf1>pf2表示pf1处于高地址位置 pf1 构造数据类型:(数组,结构) 数组 数组表示方法 一维数组 二维数组 数值数组、字符数组、指针数组、结构数组 结构: 在实际问题中,一组数据往往具有不同的数据类型。例如, 在学生登记表中,姓名应 为字符型;学号可为整型或字符型;年龄应为整型;性别应为字符型;成绩可为整型或实型。 显然不能用一个数组来存放这一组数据。 因为数组中各元素的类型和长度都必须一致,以便于编译系统处理。为了解决这个问题,构造数据类型——“结构”。 结构变量 #define STU struct stu STU { int num; char name[20]; char sex; float score; }; STU boy1,boy2; 结构数组: typedef struct { char dm[5]; /* 产品代码 */ char mc[11]; /* 产品名称 */ int dj; /* 单价 */ int sl; /* 数量 */ long je; /* 金额 */ } PRO; PRO sell [MAX]; 结构中 成员的引用方法 sell[4].dm sell[j].je 注意:类型定义在所有编程中基本都要用到,类型定义错了,解题结果就错了,大家一定在解题过程中仔细看好源题目关于整型、长整型、字符型、无符号型、实数型的定义,这样自定义的中间变量必须与原题数据类型一致。 四、学好C语言的四种程序结构 1、顺序结构 顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。 例如三角交换;a = 3,b = 5,现交换a,b的值,这个问题就好象交换两个杯子水,这当