三级网络机试讲义

更新时间:2023-09-27 19:27:01 阅读量: 综合文库 文档下载

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

三级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的值,这个问题就好象交换两个杯子水,这当然要用到第三个杯子,假如第三个杯子是c,那么正确的程序为: c = a; a = b; b = c;大多数情况下顺序结构都是作为程序的一部分,与其它结构一起构成一个复杂的程序,例如分支结构中的复合语句、循环结构中的循环体等。

2、分支结构

顺序结构的程序虽然能解决计算、输出等问题,但不能做判断再选择。对于要先做判断再选择的问题就要使用分支结构。分支结构适合于带有逻辑或关系比较等条件判断的计算,下面我介绍几种基本的分支结构。

①if(条件)

{

分支体

}

例如: If(a==5)

{ b=a; a=c;

c=b;

} 分支体可以是多条语句,此时“{ }”不可以省略

If(a>=7)

B=a; 分支体可以是一条语句,此时“{ }”可以省略

它有两条分支路径可选,一是当条件为真,执行分支体,否则跳过分支体,这时分支体就不会执行。

②if(条件)

{分支1}

else

{分支2}

这是典型的分支结构,如果条件成立,执行分支1,否则执行分支2,分支1和分支2都可以是1条或若干条语句构成。

③嵌套分支语句:其语句格式为:

if(条件1) {分支1};

else

if(条件2) {分支2}

else

if(条件3) {分支3}

?? else

if(条件n) {分支n}

else {分支n+1}

3、循环结构:

循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构,C语言中提供四种循环,即goto循环、while循环、do –while循环和for循环。四种循环可以用来处理同一问题,一般情况下它们可以互相代替换,但一般不提倡用goto循环,在学习中我们主要学习while、do?while、for三种循环。常用的三种循环结构学习的重点在于弄清它们相同与不同之处,以便在不同场合下使用,这就要清楚三种循环的格式和执行顺序,将每种循环的流程图理解透彻后就会明白如何替换使用,如把while循环的例题,用for语句重新编写一个程序,这样能更好地理解它们的作用。特别要注意在循环体内应包含趋于结束的语句(即循环变量值的改变),否则就可能成了一个死循环,这是初学者的一个常见错误。

do{ } while(条件表达式) ;

while (条件表达式) { } ; 其中条件表达式:(若为真(或非0)则继续循环)

for(表达式1;表达式2;表达3) {

语句: }

表达式1 通常用来给循环变量赋初值,一般是赋值表达式。也允许在for语句外给循环变量赋初值,此时可以省略该表达式。

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

Top