基础知识
当前位置:首页 > 公文写作 > 基础知识 > 列表页

c语言程序设计基础知识

小草范文网  发布于:2016-12-18  分类: 基础知识 手机版

篇一:C语言程序设计基础知识要点

01.C程序基本结构

一、C语言的特点:

1、C语言源程序的基本组成单位是函数;一个C程序可由若干个函数组成,其中必须有且仅有一个以main命名的主函数,其余的函数名称可由编程者自行设定。,

2、C程序的执行总是由main()函数的第一个可执行语句开始,到main()函数的最后一个可执行的语句结束;而其他函数都是在main()函数开始执行以后,通过其他函数的调用才得以运行。

3、C语言系统提供了丰富的库函数,用户在程序中需要调用某个库函数时,必须用#include编译预处理命令将描述该库函数的头文件包含进去。

二、C程序的书写格式:

1、语句可从分开放在任意多行内;

如:printf(“To C,”);

printf(“ or not to C:”);

与printf(“To C , or not to C:”);是等价的

2、一行中可以有若干个语句;

如:a=123;b=345;

3、每个语句和数据定义的最后必须有一个分号;

三、C语言程序的运行:

1、编译(Compile):将C源程序文件翻译成能被计算机识别的二进制形式的“目标”文件;编译时,编译器将检查源程序每一条语句的语法错误。

2、建造(Bulid): C语言程序示例:显示“Hello”

#include<stdio.h>

int main(void)

{

printf(“Hello.\n”);

return 0;

}

说明:#include<stdio.h> 是必不可少的,它包含了C语言标准输入输出库的相关信息;

printf函数来自”标准输入输出库”,可以产生格式化输出;

\n 告诉prin

c语言程序设计基础知识

tf函数执行完信息显示后要进行换行操作;

return 0 表明程序终止时会向操作系统返回值0;

{ }来标出main()函数的起始和结束。

02.数据类型

一、C语言的特点:

1、C语言源程序的基本组成单位是函数;一个C程序可由若干个函数组成,其中必须有且仅有一个以main命名的主函数,其余的函数名称可由编程者自行设定。

2、C程序的执行总是由main()函数的第一个可执行语句开始,到main()函数的最后一个可执行的语句结束;而其他函数都是在main()函数开始执行以后,通过其他函数的调用才得以运行。

3、C语言系统提供了丰富的库函数,用户在程序中需要调用某个库函数时,必须用#include编译预处理命令将描述该库函数的头文件包含进去。

二、C程序的书写格式:

1、语句可从分开放在任意多行内;

如:printf(“To C,”);

printf(“ or not to C:”);

与printf(“To C , or not to C:”);是等价的

2、一行中可以有若干个语句;

如:a=123;b=345;

3、每个语句和数据定义的最后必须有一个分号;

三、C语言程序的运行:

1、编译(Compile):将C源程序文件翻译成能被计算机识别的二进制形式的“目标”文件;编译时,编译器将检查源程序每一条语句的语法错误。

2、建造(Bulid):

C语言程序示例:显示“Hello”

#include<stdio.h>

int main(void)

{

printf(“Hello.\n”);

return 0;

}

说明:#include<stdio.h> 是必不可少的,它包含了C语言标准输入输出库的相关信息;

printf函数来自”标准输入输出库”,可以产生格式化输出;

\n 告诉printf函数执行完信息显示后要进行换行操作;

return 0 表明程序终止时会向操作系统返回值0;

{ }来标出main()函数的起始和结束。

03,运算符和表达式

1、算术运算符和表达式

+:加法运算符,如 3+5;

-:减法运算符,如 5-3;

*:乘法运算符,如 5*8;

/:除法运算符,如 3/6;参与运算量均为整型时,结果也为整型,舍去小数;若运算量中有一个是实型,则结果为双精度实型。

%:模运算符,也称“取余运算符”,用于计算两数相除后的余数,如 5%3=2;

2、赋值运算符和赋值表达式

赋值运算符:”=”,其作用是将一个表达式的值赋给一个变量;

其一般形式为:变量=表达式

如:

x=a+b;

赋值表达式的功能是计算表达式的值再赋予左边的变量。赋值运算符具有右结合性。因此 a=b=c=5 可理解为 a=(b=(c=5));

复合赋值运算符:+=、-=、*=、/=、%=、>>=、<<=、&=、^=、|=

构成复合赋值表达式的一般形式为:变量 双目运算符=表达式

它等价于:变量=变量 运算符 表达式

如:

a+=5 等价于a=a+5

x*=y+7 等价于x=x*(y+7)

r%=p等价于r=r%p

3、类型转换

如果赋值运算符两边的数据类型不相同,系统将自动进行类型转换,即把赋值号右边的类型换成左边的类型。具体规定如下:

1)实型赋予整型,舍去小数部分。前面的例子已经说明了这种情况

2)整型赋予实型,数值不变,但将以浮点形式存放,即增加小数部分(小数部分的值为0)。

3)字符型赋予整型,由于字符型为一个字节,而整型为二个字节,故将字符的ASCII码值放到整型量的低八位中,高八位为0。整型赋予字符型,只把低八位赋予字符量。

4、自增、自减运算符:

自增运算符:“++”,功能是将变量的值加1;

自减运算符:“--”,功能是将变量的值减1;

可有以下几种形式:

++i i自增1后再参与其它运算。

--i i自减1后再参与其它运算。

i++ i参与运算后,i的值再自增1。

i-- i参与运算后,i的值再自减1。

注:

(1)”++”、”--“的操作对象只能是变量;

(2)”++”、”--“运算优先级相同,且结合方向自右向左;-i++应理解为-(i++),

【例】自增、自减运算、

#include<stdio.h>

main()

{

int i=8;

printf("%d\n",++i); /* i先加1,再输出i ,输出结果为9 */

printf("%d\n",--i);/* i先减1,再输出i ,结果为8 */

printf("%d\n",i++); /* 先输出i ,输出结果为8,i再加1, */

printf("%d\n",i--); /* 先输出i ,输出结果为9,i再减1, */

printf("%d\n",-i++); /* 先加输出-i,输出结果为-8,i再加1 */

printf("%d\n",-i--); /* 先输出-i ,输出结果为-9,i再减1 */

}

5、求字节运算符

计算表达式的结果所占字节数或某种数据类型的定义字节数。

一般格式:sizeof(数据类型标识符) 或 sizeof(表达式)

如: sizeof(float)的值为4,占4个字节;

sizeof(2*3)的值为2,占2个字节;

6、关系运算符和关系表达式

关系运算符:“<”(小于)、 “<=”(小于等于) 、”>”(大于)、”>=”(大于等于) 、”==”(等于)、 “!=”(不等于)

关系表达式:若关系表达式成立,其值为“真”,否则为“假”;在C语言中,用0代表“假”,用1代表“真”;

7、逻辑运算符和逻辑表达式:

逻辑运算符: “!” (非)、 “&&” (与)、 “||”(或);运算优先级: !>&&>||

逻辑表达式:用逻辑运算符将表达式连接起来的式子;逻辑表达式的结果仍然是逻辑量(“真”或“假”)

8、条件运算符:

一般格式: <表达式1>?<表达式2>:<表达式3>

先计算表达式1,若表达式1的值为真,则计算表达式2的值,且表达式2的值为整个条件表达式的值;否则,计算表达式3的值,且表达式3的值即为整个条件表达式的值。

9、逗号运算符和逗号表达式

逗号运算符:”,”作为运算符,其功能是将多个表达式组成一个表达式;

一般形式:表达式1,表达式2,…,表达式n

求解过程:先计算表达式1,再计算表达式2,依此计算表达式n,最终,表达式n的值即为整个表达式的值。

04.顺序结构

一、概述:

顺序语句按照语法形式分为:表达式语句、函数调用语句、复合语句、流程控制语句和空语句。

1、表达式语句:

语法格式:表达式;

如:a+4;

其中赋值语句为最典型的表达式语句,如:

a=5;

a=b+3;

特别提示:分号(;)是表达式语句中不可缺少的一部分。

2、函数调用语句:

如:printf(”I am a student!”);

其中:printf()为系统提供的函数,用于显示信息。

3、复合语句:

所谓“复合语句”即由一对“{}”括起来的一组语句,也称“块语句”或“分程序”。

一般形式为:

{

语句1

语句2

...

语句n

}

如:

{

i++;

j=a+3;

printf("%d,j=",i,j);

}

特别提示:复合语句中的最后一条语句的分号不得缺少;复合语句的“}”之后不得有分号。

4、空语句:

“空语句”即为一个独立的分号。

如:

main()

{

...

;

...

}

二、数据的输入输出

C语言提供了一些输入输出函数,如printf()和scanf(),在程序中调用这些输入输出函数时,必须将标准输入输出头文件“stdio.h”包含到用户所编写的源程序中。

如:#include <stdio.h>

其中:#include命令一般写在程序的开头位置。

1、格式输入输出

1、格式输出函数printf()

(1)一般格式: printf(格式字符串,输出列表)

其中:“格式字符串”包括“输出字符”和“格式控制字符”(由%和格式字符组成,指定输出项的输出格式)。 ? d格式符:用于输出十进制整数;

%d:以十进制形式显示输出变量的值;

%5d:以十进制形式显示变量的值,且至少占用5个字符的空间,若不够5位数字,则左侧补空格; %-5d:以十进制形式显示变量的值,且至少占用5个字符的空间,左对齐;

%5.3d:以十进制形式显示变量的值,且至少占用5个字符的空间并至少有3位数字,若不够3位数字,则左侧补0;

如:#include<stdio.h>

main()

{

int i;

i=40;

printf(“%d\n”,i);

printf(“%5d\n”,i);

printf(“%-5d\n”,i);

printf(“%5.3d\n”,i);

}

? f格式符:用于以小数形式输出实数;

%10.3f:以定点十进制形式显示变量的值,且总共用10个字符,其中,整数位6位,小数位3位,小数点1位;

如:#include<stdio.h>

main()

{

float x;

x=839.21f;

printf(“%10.3f\n”,x);

}

? c格式符:用于输出一个字符;

如: x=”a”,y =”b”,

则 printf(%c %c",x,y)的输出结果为:a b

若变量的值为整数,则输出该整数值为ASCII码的字符:

如 x=65,y=98,则 printf(“%c, %c”,x,y)的输出结果为: A, b;

同理,一个字符的数据也可以以整数的形式输出;

如 x=’a’,y=’B’,则printf(“%d,%d”,x,y)的输出结果为:97,66

? s格式符:用于输出一个字符串。

如:printf(“%s”,”I am a student !”)

? e,E格式符:用于以指数形式输出实数。

如:printf(“%e”, 123.456),则输出结果为:1.234560e+002;

? g,G格式符:用于输出实数,根据数值的大小自动选择f格式或e格式。

2、格式输入函数scanf()

(1)一般格式:

scanf(格式字符串,变量地址表)

其中:格式字符串使用双引号括起来的字符串,包括“普通字符”(按原样输入)、“格式控制字符”(由%和格式字符组成,用来标定输入数据的格式)。

变量地址表是由若干个变量地址组成的表列,可以是变量的地址,也可以使字符串的首地址。

? d格式:用于输入十进制整数;

如:scanf(“%d,%d”,&x,&y);则输入格式为:123 ,3456

?u格式:用于输入十进制无符号整数;

?f格式:用于输入以小数形式的实数;

如:scanf(“%f,%f”,&x,&y);则输入格式为:123.23,23.456

?c格式:用于输入一个字符;

如:scanf(“%c,%c”,&x,&y);则输入格式为:a,b

?s格式:用于输入一个字符串;

如:scanf(“%s”,a);假定a为字符数组,则输入格式为:abcdef

注:输入的字符串中间不能包含空格。

特别说明:

? 对于变量,”&”加变量名即为该变量的地址;如:&a、&b等分别表示变量a和变量b的地址;

?对于字符串数组或字符指针型变量,数组名和指针变量名本身即为其地址;

?可以在%和格式字符之间加表示位数的数字;如:scanf(“%5s”,p);表示只能输入5个字符给字符串指针p;

3、字符数据的输入输出:

(1)putchar()函数:是向标准输入输出设备输出一个字符;

其调用格式为:putchar(ch); 其中:ch为一个字符变量或常量;

putchar()函数作用等同于 printf(“%c”,ch);

篇二:C语言程序设计基础知识期末复习

C语言程序设计基础知识期末复习

一、 C语言与算法

1. 程序:一组计算机能识别和执行的指令。

2. C语言的特点:运算符丰富(共有34种运算符)、数据类型丰富、具有结构化的控制语句。

3. C语言程序的结构特点:

(1).一个程序由一个或多个源程序文件组成:一个源程序文件中可以包括三个部分:预处理指令、全局声明、函数定义

(2).函数是C程序的主要组成部分:一个C程序是由一个或多个函数组成的必须包含一个main函数(只能有一个);每个函数都用来实现一个或几个特定功能;被调用的函数可以是库函数,也可以是自己编制设计的函数。

(3).一个函数包括两个部分 函数首部和函数体(声明部分:定义在本函数中所用到的变量;对本函数所调用函数进行声明;执行部分:由若干个语句组成,指定在函数中所进行的操作)

(4). 程序总是从main函数开始执行

(5). C程序对计算机的操作由C语句完成

(6.) 数据声明和语句最后必须有分号

(7.) C语言本身不提供输入输出语句

(8.) 程序应当包含注释,增加可读性

4、算法 (1)算法 + 数据结构 = 程序

(2)顺序结构、选择结构、循环结构是表示一个良好算法的基本结构

(3)算法的特性:有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性

(4)算法流程图:一个流程图包括以下几部分:表示相应操作的框;带箭头的流程线;框内外必要的文字说明。

流程线不要忘记画箭头,否则难以判定各框的执行次序。

算法流程图的结构特点:只有一个入口;只有一个出口(一个判断框有两个出口;一个选择结构只有一个出口)结构内的每一部分都有机会被执行到。也就是说,对每一个框来说,都应当有一条从入口到出口的路径通过它;结构内不存在“死循环”。

二、顺序结构设计

5、标识符:用来标识变量名、符号常量名、数组名、类型名、函数名等的有效字符序列。 C语言对标识符的规定:

(1)只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线

(2)长度:在TC中最多允许32个字符,建议不要超过8个

如果系统规定标识符长度为8,那么x1234567A和x1234567B会被视为同一标识符。

(3)在C语言中,标识符大小写敏感。如ABC、aBC、abc分别代表3种不同的标识符

(4)标识符不能与C语言的保留字、系统标准库函数同名。

programto_ _to file_2ab1_c3 为合法标识符

非法字符举例:yes? (含有不合法字符“?”)123(第一个字符不能为数字)go to(标识符中不允许有空格)

a_80%(出现非法字符“%”)if与关键字相同)

6、常量与变量

注意:以下变量定义形式是错误的int a,int b; int a;b;

(1)整型常量

·十进制整型:能出现数字0~9,可带正负号 如:0,11,95,-2

·八进制整型:以数字0开头的数字串,能出现数字0~7 如:011(十进制9),0111(十进制73)

·十六进制整型:以0x开头的,能出现数字0~9,字母a~f或A~F 如:0x11(十进制17),0xa5(十进制165)

(2)整型变量 基本类型int

(3)浮点型

·浮点型常量 十进制小数形式:由数字与小数点组成(必须有小数点)。

如 1.23,-123.,0.0123,.0,0.

指数形式,如123e3或123E3都代表123×103 注意字母e或E之前必须有数字,后面必须是整数E-5,.1234e1.2,6.5E为非法的浮点型常量

·浮点型变量 floatdouble

(4)字符型

1)字符常量:分为两类

·用单撇号括起来的一个字符如 : ’a’, ’9’, ’ ’(空格)是合法字符常量 ”a”, ’99’ 是非法字符常量

·转义字符:以\(反斜杠)开头的特殊形式的字符。如: ’\n’ ,’\r’ ,’\123’ ,’\x3b’

2)字符变量:char,占1个字节空间,只能存放一个字符。

存储特点:在字符变量中实际上存储的是字符的ASCII码,其存储形式与整数的存储形式相同。

注意:

I.字符数据与整型数据可相互赋值,直接运算。

II.大小写字母转换

小写字母减32得到相应的大写字母, 如:‘a’-32 得到‘A’

大写字母加32得到相应的小写字母如:‘B’+32 得到‘b’

(5)字符串常量

定义:用一对双撇号(” ”)括起来的字符序列。如: ”hello” ”Mary””\\aaa\’\n ” 存储:每个字符串尾自动加一个 ‘\0’ 作为字符串结束标志

(6)变量赋初值

格式:类型说明符 变量1=常数1[,变量2=常数2[,···]];int x=1,y=1,z=1;

int x=y=z=1;(语法错误)

7、算数运算符和算术表达式

(1)运算符的注意事项

·除法运算符“/”进行求商运算。对于不同类型的运算对象,除法表达式计算结果的类型也会不同。如果x,y是整型,则结果为整型,小数部分被略去。如果x,y其中一个为浮点型量,则结果为浮点型。

·“%”是求余运算。a%b计算a除以b后的余数,也是a模b的值。它要求两个运算对象必须是整型,其结果也是整型量。

(2)书写算术表达式的注意事项

·将方括号改成圆括号,即算术表达式内所有的括号均为圆括号,*(乘法)不能省略 ·其中 π 为非字母字符,要用浮点型常量代替

·其中不能出现分数,改用除法运算符,圆括号不能缺少

(3)算数运算符的优先级

优先级:高- ---->* / % -----> + -低 注意:可以用( )来改变运算的顺序.

(2)(3)(4)

8、自增、自减运算符

后缀i++( i--)先使用i的值,再使i的值加(减)1

前缀 ++i (--i)先使i的值加(减)1 ,再使用i的值

自增、自减运算只能用于变量,不能用于常量和表达式。

自增、自减运算符高于基本算术运算符。

9、 赋值运算符

(1)简单赋值运算符 运算符:=表达式格式:变量=表达式

·赋值运算符左边必须是变量而不能是表达式;

·赋值表达式的值是赋值号左边变量被赋值后的值;

(2)算术运算符“+ — * / %”和赋值运算符“=”结合起来,形成复合赋值运算符。 += :加赋值运算符;如a+=3,等价于 a=a+3 -=、*=、/=、%= 与此类似

·复合运算符在书写时,两个运算符之间不能有空格。

·复合运算符右边的表达式计算完成后才参与复合赋值运算;

10、当表达式中的数据类型不同时,要进行类型转换。

转换方式 自动(隐式)转换:系统自动把数据由低级类型向高级转换。

强制转换:将表达式的运算结果强制转换成指定的数据类型。

自动转换规则 强制转换 格式:(目标类型名)(表达式) double←long←unsigned←int

↑ ↑

float 高 ← 低 char short

逗号运算符与逗号表达式:运算优先级最低为15级

求解过程先求表达式1的值,再求表达式2的值,···,直至求出表达式n的值。整个表达式的值为表达式n的值。

x=5*8, 6+9 先把x赋值为40,表达式的值为15

11、字符数据的简单输入和输出

(1) putchar函数(字符输出函数) 形式:putchar(c)

· c可以是字符常量、字符变量或整型变量。putchar(100);

· 用putchar函数也可输出转义字符。putchar(‘\n’); /*输出一个换行符*/

putchar(‘\\’); /*输出一个反斜杠\ */

· 该函数包含在stdio.h库中,因此应在使用该函数的程序开头加入: #include <stdio.h>

(2)getchar作用:从终端(如键盘)输入一个字符。

形式:getchar( ) 无参数

说明:该函数只能接收一个字符,其函数值可以赋给一个字符变量或整型变量,也可作为表达式的一部分,该函数包含在stdio.h中。

(3)格式输出函数 格式:printf(格式控制,输出表列)

格式控制是用双撇号括起来的字符串,也称“转换控制字符串”,包括2种信息。

1)格式说明: % [<附加格式字符>]格式字符

将输出列表中的数据转换为指定格式输出。

2)普通字符:原样输出。

输出表列:需要输出的数据列表,彼此间用逗号分隔。它可是任意合法的表达式。 printf(" a+b = %5.2 f " , c )

(4)格式字符

1)d 格式符,用来输出十进制整数

%d按整型数据的实际长度输出。

%md m代表某个数字,指定输出数据的最小宽度。若数据的位数小于m,则左侧补空格(右对齐),若大于m则按实际位数输出。%-md 与%md类似,只是左对齐

2) c 格式符:用来输出一个字符 %c%mc %-mc

3) f格式符:用来以十进制小数形式输出实数(float,double)

%m.nf输出数据最小占m列,其中包括n位小数和1位小数点,右对齐 (小数点也算占一列)%-m.nf与上面类似,只是左对齐

4)S 格式符:用来输出一个字符串

%s按字符串原长输出%ms 输出字符串最小占m列,右对齐,左补空格 %-ms 输出字符串最小占m列,左对齐,右补空格

%m.ns字符串占m列,但只取左端n个字符,右对齐

%-m.ns 字符串占m列,但只取左端n个字符,左对齐

使用说明:

1)格式控制中的格式说明符,必须按从左到右的顺序,与输出表中的每个数据一一对应,否则出错。

printf(“f=%d, i=%f\n”, 5.6,3); 显示:f= 1717986918,i=0.000000

2)格式字符紧跟在“%”后面就作为格式字符,否则将作为普通字符使用(原样输出)。

printf(”c=%c, f=%ff\n“, ‘a’,1.5); 其中的第一个c和f,第三个f,都是普通字符。

(5)scanf函数scanf(格式控制字符串,地址列表)

格式控制与printf函数类似。

地址列表是由若干个地址组成的表列(以逗号隔开),可以是变量的地址,或字符串的首地址。 scanf(“%d%d%d”,&a,&b,&c);

1) 格式符中无普通字符时,可用空格、Tab键、回车键作分隔符。最后的回车键代表输入结束

2)用c格式符输入字符时,空格、回车、转义字符等均为有效字符。

例: char a,b,c;

scanf("%c%c%c", &a, &b, &c);

正确的输入方法: 键入 ABC 则 a=‘A’,b=‘B’,c=‘C’

若键入: ABC 则 a=‘A’,b=‘ ’(空格),c=‘B’

若键入 A B C 未送,系统已经认为输入结束了 则: a=‘A’,b=‘\n’(换行符),c=‘B’

若不同类型输入 则综合上述规则

3)在格式控制中除格式说明符外若还有其它字符,则应按顺序原样输入。

4)可以指定输入数据所占列数,系统自动按它截取所需数据。

5)%后的“*”附加说明符,用来表示跳过相应的数据。

如:scanf(“%2d%*3d%2d”,&a,&b); 输入 1234567 则将12?a,67 ?b,345被跳过

6)输入数据时不能规定精度。如:scanf(“%7.2f”,&a);错误

7) double类型的变量输入时,要用%lf%le(必须记住!!!)

如:

double x;

scanf(“%lf”,&x);

三、选择结构程序设计

1、if语句实现选择

if (表达式) 语句1 表达式可以是关系表达式、逻辑表达式、数值表达式

else 语句2

最常用的3种if语句形式:

(1) if (表达式) 语句1 (没有else子句)

(2).if (表达式) 语句1

(3) else 语句2 (有else子句)

(4)if(表达式1) 语句1

else if(表达式2) 语句2

else if(表达式3) 语句3

else if(表达式m) 语句m

else语句m+1

(在else部分又嵌套了多层的if语句)

说明:

(1)整个if语句可写在多行上,也可写在一行上,但都是一个整体,属于同一个语句

(2)“语句1”?“语句m”是if中的内嵌语句 内嵌语句也可以是一个if语句

(3)“语句1”?“语句m”可以是简单的语句,也可以是复合语句

2、关系运算符

(1)关系运算符:

用来对两个数值进行比较的比较运算符

C语言提供6种关系运算符:

① < (小于)② <= (小于或等于) ③ > (大于)④ >= (大于或等于) 优先级高

⑤ ==(等于)⑥ !=(不等于) 优先级低

(2)关系表达式

用关系运算符将两个数值或数值表达式连接起来的式子,关系表达式的值是一个逻辑值,即“真”或“假”,在C的逻辑运算中,以“1”代表“真”,以“0”代表“假”

3、逻辑运算符与逻辑表达式

3种逻辑运算符:&&(逻辑与) ||(逻辑或) !(逻辑非)

判断年龄在13至17岁之内?age>=13 && age<=17

逻辑运算符的优先次序! → && → || (!为三者中最高)

逻辑表达式的值应该是逻辑量“真”或“假”

编译系统在表示逻辑运算结果时以数值1代表“真”,以0代表“假”

但在判断一个量是否为“真”时以0代表“假”,以非0代表“真”注意:将一个非零的数值认作为“真”

在进行逻辑表达式的求解中,并不是所有的逻辑运算都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的值时,才执行该运算符。

4、条件运算符与条件表达式

条件表达式的一般形式为:表达式1?表达式2: 表达式3

条件运算符的执行顺序:

求解表达式1

若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值

若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值 条件运算符的结合方向为“自右至左”

5、switch语句

switch语句的作用是根据表达式的值,使流程跳转到不同的语句

篇三:《C语言程序设计》基本知识点[1]

《C语言程序设计》教学基本知识点

第一章 C语言基本知识

1.C源程序的框架

尽管各个C源程序的功能千变万化,但框架是不变的,主要有:编译预处理、主函数()、函数n()等,主函数的位置不一定在最前面,可以在程序的中部或后面,主函数的名字固定为main。

2.C语言源程序的书写规则:

(1)C源程序是由一个主函数和若干个其它函数组成的。

(2)函数名后必须有小括号,函数体放在大括号内。

(3)C程序必须用小写字母书写。

(4)每句的末尾加分号。

(5)可以一行多句。

(6)可以一句多行。

(7)可以在程序的任何位置加注释。

3.语句种类

语句是程序的基本成分,程序的执行就是通过一条条语句的执行而得以实现的,根据表现形式及功能的不同,C语言的基本语句可以分为五大类。

(1)流程控制语句

流程控制语句的功能是控制程序的走向,程序的流程有三种基本结构:顺序结构、分支结构和循环结构,任何复杂的程序都可以由这三种基本结构复合而成。其中后两种结构要用特定的流程控制语句实现。

(2)表达式语句

表达式语句的形式是:表达式;,即表达式后跟一分号“;”,分号是语句结束符,是一个语句必不可少的成分。表达式和表达式语句的区别在于表达式代表的是一个数值,而表达式语句则代表一种动作。最常见的表达式语句是赋值语句。

(3)函数调用语句

函数调用语句实际上也是一种表达式语句,形式为:在一次函数调用的小括号后面加上一个分号。

(4)空语句

空语句的形式就是一个分号,它不代表任何动作,常常作为一个意义转折点使用。

(5)复合语句

复合语句从形式上看是多个语句的组合,但在语法意义上它只相当于一个语句,在任何单一语句存在的地方都可以是复合语句。注意复合语句中最后一个语句末尾的分号不能少。复合语句右大括号后面没有分号。

4.运算符

用来表示数据各种操作的符号称为运算符。运算符实际上代表了一种类型数据的运算规则。不同的运算符具有不同的运算规则,其操作的数据类型必须符合该运算符的要求,运算结果的数据类型也是固定的。

根据参加操作的数据个数多少,可以将C语言的运算符分为单目运算符,双目运算符和三目运算符(三目运算符只有条件运算符一个)。

根据运算对象和运算结果的数据类型可分为算术运算符、关系运算符、逻辑运算符等。

5.表达式

表达式是由常量、变量、函数,通过运算符连接起来而形成的一个算式。一个常量,一个变量或一个函数都可以看成是一个表达式。

表达式的种类有:

算术表达式、关系表达式、逻辑表达式、赋值表达式、字位表达式、强制类型转换表达式、逗号

表达式(顺序表达式)、条件表达式、指针表达式。

6.数据的输入/输出

C语言本身没有输人/输出语句,数据的输入/输出是通过调用库函数来实现的。

第二章 数据类型知识点

划分数据类型的意义是编译系统对每个不同类型的数据在内存中分配的字节数不同,不同类型的数据可以按规定参加不同类型的运算。

1.C语言的数据类型

数据类型有:整型、字符型、实型单精度型、双精度型、构造类型数组类型、结构体类型、共用体类型、枚举类型、指针类型、空类型,其中整型、实型、字符型是C语言中的基本类型。

2.各种类型数据的定义方法

定义形式:数据类型 变量名1,变量名2,??变量名n;

3.常量与变量

(1)常量——在程序执行期间其值不变的量。它不能被赋值。

(2)变量——在程序运行期间其值可以改变的量。

4.各种类型数据的混合运算

各类数据运算前会自动转换成同一类型。规律如右图示:从右向左的箭头表示必定的转换,如float型数据运算前化成double型,以提高运算精度,结果也为double型,short或char型数据运算前化成int型,结果也为int型;从下向上的箭头表示转换方向是向级别高的靠拢。

5.强制类型变换

当我们需要对数据进行类型变换,而机器又不能自动完成时,就要用强制类型变换,形式为:(数据类型符)(被转换对象)。

第三章 选择知识点

C语言中实现选择结构的控制语句有两种:条件分支语句if和开关分支语句switch。

1.if语句的三种形式:

(1) if(表达式)语句;

(2) if(表达式)语句1;

else语句2;

(3) if(表达式1)语句1;

else if(表达式2)语句2;

else if(表达式3)语句3;

?

else if(表达式n)语句n;

2.开关分支语句switch

(1)形式

switch(表达式)

{ case e1:语句1;break;

case e2:语句2;break;

case e3:语句3;break;

??

case en:语句n;break;

default :语句n+1;

}

(2)功能

当表达式的值等于e1时,执行语句1;

当表达式的值等于e2时,执行语句2;

??

当表达式的值等于en时,执行语句n;

当表达式的值与常量e1、e2??en谁都不等时,就执行default后的语句

第四章 循环知识点

循环就是在程序执行过程中,反复多次的执行同一段程序。C语言中有三种循环语句。

1.while循环语句

形式为:while(表达式)

{

循环体

};

执行过程是:先计算表达式的值,当表达式的值非0时就执行循环体,之后再判断表达式的值,且重复以上过程;当表达式的值为0时就结束循环。

2.do-- while循环语句

形式为:do

{

循环体

} while(表达式);

执行过程是:先执行循环体一次,再判断表达式的值,当表达式的值非0时就再执行循环体,之后再判断表达式的值,且重复以上过程;当表达式的值为0时就结束循环。

3.for循环语句

形式为:for(表达式1;表达式2;表达式3)

{ 循环体 }

4.三种循环语句的比较

三种循环语句可以完成同一件事,可任选其一。

使用while和do-- while循环时,要提前给循环变量赋初值。而for循环是在表达式1中赋初值的。 while循环和for循环都是先判断条件后执行循环体,有可能一次也不执行循环体,do-- while循环是先执行循环体,后判断条件,即循环体至少也得执行一次。for循环不限于计数循环,其循环条件可以是逻辑表达式和字符表达式等。

5.循环嵌套

三种循环控制语句可以互相嵌套,即在一个循环体内部又可以出现另一循环,这种嵌套在理论上来说可以是无限的。注意必须是一个循环完整的套住另一个循环。

6.break语句

break语句只能出现在三种循环语句和switch多分支语句中,其作用是用来中断这四种语句的执行。当程序执行到break语句时,会跳出break语句所在的循环或switch分支,而直接执行紧跟在它们后面的语句。

7.continue语句

continue语句只能出现在三种循环语句中,当程序执行到continue语句时,其作用是提前结束本次循环,自动跳过循环体中后半部剩余的语句的执行,而直接回到循环条件判断。根据判断的结果决定是否继续执行下次循环。

8. goto 语句

goto语句是一种非结构化语句,其作用是使程序的执行无条件的转移到某一处。使用格式为: goto 标号;利用goto语句与if条件语句配合,也可以实现条件循环。C语句允许在任何语句前添加标号,作为跳转目标,标号的构成是标识符后面加一个":"。

第五章 数组知识点

数组就是同类型的一批数据的集合,用一个变量名存放,区分各元素的办法是用下标。

1.一维数组

类型说明符数组名\[数组长度\];

(1)数组命名要符合标识符的命名规则。

(2)数组名后的括号必须是方括号,不能是圆括号。

(3)数组长度必须是正整数,可以是个表达式,但不能有变量,C语言不支持动态数组。

(4)数组长度表示数组中元素的个数

(5)数组元素的下标从0开始数,所以最大下标是数组的长度减1。

2.多维数组(以二维为例)

类型说明符数组名\[第一维长度\]\[第二维长度\];

(1)数组命名要符合标识符的命名规则。

(2)数组名后的括号必须是两个方括号,定义时不能写成inta\[3,4\];。

(3)数组长度必须是整型常量表达式。

(4)第一维长度表示数组行数,第二维长度表示数组列数。

(5)每个数组元素都有两个下标,第一维表示该元素所在的行,第二维表示该元素所在的列,每一维的下标都从0开始数。

二维数组的初始化:C语言规定只有静态数组和外部数组才允许在定义时赋初值,赋初值形式如下: static类型说明符数组名\[第一维长度\]\[第二维长度\]={初值表};

二维数组的引用:二维数组不能整体引用,要引用数组的单个元素,形式为:数组名\[下标\]\[下标\]和普通变量的使用无任何区别。

3.字符数组

C语言中没有字符串变量,字符串是靠字符数组实现的,所谓字符数组就是元素的数据类型为字符型的数组。

(1)字符数组的定义形式:char数组名\[数组长度\];

因为C语言中的整型数据和字符型数据是相通的,所以也可以这样定义:int数组名\[数组长度\];

(2)字符数组的初始化:给字符数组的初始化有两种方式,一种是用字符常量,另一种是用字符串。形式如下:

staticchar数组名\[数组长度\]={字符常量表};

staticchar数组名\[数组长度\]={字符串常量};

4.数组与函数

数组经常作为函数的参数,数组做函数的参数有两种形式,一是数组元素做函数的参数,一是数组名做函数的参数,当用数组名做函数的实参时传送的是首地址。

5.常用的字符串处理函数

C语言提供了一些处理字符串的标准函数,用以完成一些常见的操作。对以下几个函数要掌握其功能和调用形式。

(1)gets(字符数组名)此函数功能是从键盘输入一串字符,回车后送到字符数组中,注意定义数组时数组长度要足够大。

(2)puts(字符数组名)此函数功能是将字符数组的内容输出到屏幕上。

(3)strcat(字符数组名1,字符数组名2)此函数功能是将字符数组1中的’\\0’去掉后将字符数组2的内容连接到字符数组1的末尾。

(4)strcpy(字符数组名1,字符数组名2)函数功能是将字符数组2的内容(包括’\\0’)拷贝到字符数组1中,字符数组2处也可以是字符串常量。strcpy函数可以实现拷子串。

(5)strcmp(字符数组名1,字符数组名2)函数功能是两个字符串(ASCII码)比大小。

(6)strlen(字符数组名)此函数功能是求字符串的长度,注意不包括’\\0’。

(7)strlwr(字符数组名)此函数功能是将字符串中的所有大写字母都变成小写。

(8)strupr(字符数组名)此函数功能是将字符串中的所有小写字母都变成大写。

第六章 函数知识点

每个C源程序都是由函数组成的,一个主函数和若干个其它函数,C语言程序设计的基础工作就是函数的具体编写,C语言中的函数就相当于其它高级语言中的子程序。

1.函数的概念

函数就是一个数据加工厂,从函数外部接收数据,在函数内部加工处理,然后得到一个结果返回给外部的调用者。所以函数就是对语言功能的扩充,对函数的调用就是对功能的调用。

2.标准函数

各种高级语言都定义了一些标准函数,C语言中的标准函数称为库函数,是将一些基本的、常用的功能编成了函数,供大家使用方便。使用库函数时必须把它的头文件用#include命令包含进来,每个库函数的功能及对应的头文件都会在手册中给出。

3.自定义函数

C 语言也允许用户自己编写函数以实现C库函数中没有提供的功能,称作自定义函数。

4.定义函数

C语言规定每个函数都要独立定义,函数定义不能嵌套。

函数定义的形式:数据类型函数名(形参表)

形参说明语句序列

{ 说明语句序列

可执行语句序列 }

5.函数调用

函数调用的形式是: 函数名(实参表)。当实参表中有多个参数时,要用逗号隔开,若被调函数无参数,调用时小括号也不能省。函数调用过程是:将实参的值传给形参,在函数体内进行加工处理,然后由return语句将函数值返回调用处。

5.全局变量和局部变量

局部变量:在函数内部定义的变量称为局部变量,只在本函数中有效。

全局变量:在函数外部定义的变量称为全局变量,它的作用范围是从定义开始到本文件结束。

6.动态存储与静态存储

内存中的用户数据区分为动态存储区和静态存储区,动态存储区是指程序运行期间给变量临时分配存储单元,变量用完后立即释放单元的区域,动态存储区放的是函数的形参、自动变量、函数调用期间的现场保护数据和返回地址。

静态存储区是指程序运行期间给变量分配固定的存储单元,放的是全局变量和局部静态变量。 一个变量除了它的数据类型以外还有存储类型,定义一个变量时应该说明这两种类型。

第七章 预处理知识点

对高级语言编译连接就是把源程序转换成机器语言,C语言在进行编译之前还要预先处理三件事:宏定义命令、文件包含命令和条件编译命令,统称为预处理命令,其特点是:

1.所有的预处理命令都放在程序的头部,以#开头,且#号后面不留空格。

2.预处理命令不是C的语句,行尾不加分号。

3.预处理命令是在编译预处理阶段完成的,所以它们没有任何计算、操作等执行功能。

4.预处理命令有所变动后,必须对程序重新进行编译和连接。

1.宏定义

宏定义命令的作用是给一些常用的对象重新命名,在程序中可以用宏名来引用这些对象,预处理时宏名会被代表的内容替换,此过程称为宏展开或宏替换。宏定义有两种形式:

2.文件包含

使用文件包含命令可以将另—个C源程序的全部内容包含进来,其形式为:

#include <文件名>或#include "文件名"

通常可以把经常用到的,带公用性的一些函数或符号等集合在?起形成一个源文件,然后用此命

本文已影响