C语言源程序.docx
《C语言源程序.docx》由会员分享,可在线阅读,更多相关《C语言源程序.docx(21页珍藏版)》请在冰点文库上搜索。
C语言源程序
C语言程序设计
<一>
1、程序运行从main()函数开始,也从main()函数结束。
2、函数是C程序的基本单位,由函数头和函数体组成。
3、C语言源程序是由函数组成,它们的数目可以有多个。
4、在C语言源程序中,是必须有一个函数名为main的函数。
main()后的小括号()没有任何内容,它不可以省略。
5、C程序中的语句用分号结束,在一个程序行上可以有多个语句,一个C语句能写在多个程序行上。
6、函数体是由一对大括号围起来语句序列组成。
小括号是函数的标志。
二、C语言的组成元素
1、命令、函数和变量等是组成程序的基本对象,每一个程序对象都需要一个名字来标识,程序对象的名称就是标识符。
2、在C语言中,标识符分为用户标识符和系统标识符。
3、用户标识符是指在程序中由程序员为变量、函数、数组等程序对象自行命名的标识符。
4、系统标识符是指C语言编译系统内部预定义的用于表示命令数据内型的标识符,又称保留字符。
5、基本字符集
英文字母:
a~z和A~Z。
阿拉伯数字:
0~9。
其他字符:
()、[]、+、-、*、/、%、<、>、<=、>=、==、!
=、!
、&&、I!
++、--、+=、-=、*=、/=、%=。
它们是由1~2个字符组成。
用作C语言的运算符;还包括:
空格、换行符,回车符,单双引号,大括号,逗号,分号,反斜线,它们在程序中起到分隔和定界作用。
6、标识符:
是用于标识命令;变量、函数,数组,数据类型等程序对象名称的字符序列。
7、组成标识符的合法字符有:
字母,数字,下划线,三种,数字不能作首字符。
二、执行C语言程序
1、单击开始”一一程序”一一附件”一一命令提示符”。
2、按功能键<10>激活菜单,执行“File”一一“NEW”ALT+回车)全屏。
3、<F2>为保存,输入程序文件名。
4、<Ctrl>+<F9>运行
有输入:
等待输入t回车
通过
无输入:
返回到编辑
未通过:
回车tF6t修改
F3(打开)
<一>
对数据进行分类
基本整型
int(长度)2
(范围)-32768~32767
长整形
long(长度)4
(范围)-21474843648〜21474843647
无符号整型
unsigned(长度)2
(范围)0〜65535
实型单精度
float(长度)4
(范围)3.4e-38〜3.4e+38
双精度
double(长度)8
(范围)1.7e-308~1.7e+308
字符型
char(长度)1
二、正确书写C语言中常量
1、表示形式:
小数形式:
只有一个小数点,两边至少一边有数字。
2、指数形式:
(科学计数法)e(E)的前后都有数字,e后的数字必须为整数。
3、转义字符:
以反斜线(””)开头的字符序列人表示一个字符。
4、字符常量:
是用单引号('')括起的一个字符列外,它仍表示一个字符。
5、字符串常量:
是双引号(”)”括起的字符序列(可以是转义字符)。
6、定义符号常量:
一般格式:
#define标识符常量
三、在程序中使用变量
1、概念:
变量是在程序运行过程中其值可发生变化的数据对象。
2、组成:
变量包括:
变量名,数据类型、变量值。
3、变量名是一个合法的用户自定义标识符,是对对应内存单元的符号化地址,通过”&变量名”的形式可获得该变量所对应内存单元中存储的数据值(物理地址)。
4、在程序中使用变量必须先定义后使用,使用前置初值。
5、定义变量要指出类型和名称,其一般格式为:
类型标识符、变量名列表。
6、符号”二”的作用是给变量賦初值,称赋值号。
赋值号把它右边的值赋值给它左边的变量。
7、未赋值变量其值不确定,不能参加运算,所以参加运算前要设置它的初始值。
8、类型标识符:
类型名称,如int,float,char等,变量名列表是用逗号”,”分隔。
9、为变量预置初始值有:
初始化和赋初值两种,变量初始化是在定义变量后,在使用之前的赋值操作。
初始化:
intx=1,y=2,z=3;(再同一语句行上)赋初值:
intx,y,z;
x=1;y=2;z=3;(不再同一语句行上)
<三>
一、计算算术表达式的值
1、运算符:
用来特定的符号来表示具体操作。
2、“/”名称除号,操作数2个,任意类型,运算规则:
如果两个操作数为整数,商为整数(舍弃小数部分,不进行四舍五入;只要其一为实数,商为实型,6位小数)。
3、取模运算(“%')必须为整数;模的符号和被除数符号相同;被除数小于除数,模等于被除数。
4、表示:
用运算符将操作数连接起来组成的句子。
5、优先级:
是指在表达式中运算符执行的先后。
6、结合性:
是操作数于运算符结合的方向,左结合、右结合。
做结合是:
指从左向右结合执行运算;右结合是:
指从右向左结合执行运算。
7、强制转换:
通过类型转换运算符来将表达式值的类型转换为所需的数据类型,一般格式(类型标识符)表达式如:
(int)fv的值为int型,(float)x/y是把x的转换成实型后再除以y。
二、给变量赋值
1、赋值操作的本质是:
向变量对应内存单元写入数据既改变变量的。
变化遵守新来旧去”的原则,未重新赋值的变量保持它原来的。
三、计算自增自减表达式的
1、确定自增自减运算表达式的简单方法是:
观察表达式中变量和运算的位置关系,凡变量在前,则表达式值为变量自增(或自减)之前的值;凡变量在后,则表达式的值为变量自增(或自减)之后的值。
2、自增自减运算操作中包含有赋值操作,因此,不能对常量和表达式进行自增自减运算。
3、不论是前缀形式还是后缀形式的自增自减表达式执行后,对变量的影响都是相同,区别仅在表达式不同。
四、比较两个数的大小
1、任何C语言表达式结果都可以视为逻辑值。
非“0值为真,“0值为假。
2、字符串不能直接用关系运算符进行大小关系比较运算。
3、数值数据(整型和实型)按数值大小进行比较,字符以它的ASCLL码大小进行比较。
4、高优先级组:
>、>=、<、<=。
低优先级组:
==、!
=。
5、关系运算符的结合性为左结合。
五、表达复杂的条件
1、形如A&&B&&C用&&连接成的串联表达式,如果表达式A为假,则不再计算表达式B和C,以此类推。
2、形如AllB||C用连接成的串联表达式,如果表达式A为真,则不再计算表达式B和C,以此类推。
3、逻辑运算符的优先级由高到低的顺序是:
!
-
4、逻辑表达式结果为真,sh值为1;结果为假其值为0。
六、计算逗号表达式
1、从左向右依次计算各子表达式的值,然后取最右边表达式的。
2、常量和变量也可成为表达式,它们是表达式的特例。
3、逗号表达式的一般格式为:
表达式1,表达式2,表达式3;...
<四>
一、为程序输入数据
1、在输入数据时,数据都是以字符的形式输入的,经过格式转换说明符转换成对应数据类型了类型;分隔非字符型数据的字符有:
空格、水平制表符、换行符,它们统称为空白字符。
2、多个字符变量输入数据时格式控制串中没有使用任何普通字符,则输入字符时不使用任何分隔符。
3、seanf(格式控制串,变量地址列表);参数用逗号分隔;格式控制串由一个%和一个字母组成,被称为格式转换说明符:
%d(整型)int、%f(实型)float,double、%e(字符型)char。
4、seanf()函数工作过程:
扫描格式控制串,遇到格式转换说明符时,把键盘输入转换相对应类型数据存入对应地址所指的变量中,遇到普通字符则要原样输。
二、输出程序中的数据
1、在printf()函数的格式控制串中出现的普通字符将原样输出到显示器屏幕上。
2、%s格式转换符用于输出字符串。
3、实数在输出时,printf()函数自动保留6位小数,不足补0,超过四十五入。
4、输出函数printf()的一般格式:
printf(格式控制串,数据项列表);格式串由格式转换说明符和普通字符组。
5、printf()函数工作扫描格式串,遇到格式转换说明符时,把对应的数据项按指定的格式输出;遇到普通字符则原样输出。
6、在格式字符d前加L用于输出long型数据。
<五>算法的表示
—、C语言语句类别于作用
1、说明语句:
用于定义变量或声明函数。
(在函数体最前面,集中说明)
2、表达式语句:
在表达式后加上分号,它的功能是完成运算,有用的表达式语句能够在执行后改变变量的值。
3、空语句:
单独的一个分号。
4、函数调用语句:
用于实现对函数的调用。
变量名二函数名(实参表);
ch二getchar();
5、块语句:
用花括号括起的多条语句。
6、控制语句:
由控制命令和被控制的语句组成,实现流程控制。
常用的有if、switch、while、for、break、retrun、continue等。
二、流程图符号表示的操作
幵始t输入xtx<0ty_fx=-xt输出x的绝对值t结束
三、结构化程序的基本结构
1、顺序结构:
按语句先后顺序依次执行,没有执行不到的语句,每天语句只执行一次。
2、分支结构(选择):
if或switch(根据条件真假来选择执行语句)。
3、特点:
只有一个入口;只有一个出口;结构的每部分都有机会被执行;不存在死循环。
4、模块化程序设计要在软件设计幵始时把待幵发的系统划分成若干相互独立的,简单容易实现的子系统。
这种方法被称为自顶而下逐步细化”的程序设计分析方法。
5、程序设计的一般步骤:
分析冋题确定算法T编写程序tt调
试程序
<六>、程序流程控制
一、顺序结构程序的执行特点
1、顺序结构程序的执行特点是:
按照语句在程序中排列的先后顺序依次执行。
2、顺序结构程序中的每一条语句必须执行且只能执行一次,没有执行不到或重复执行的语句。
3、过程:
①认真读题;②预编命令;③确定变量类型;④有无数据输入(赋值);⑤核心语句:
①输入;②赋初值;③运算;⑥输出。
二、设计顺序结构
1、交换a、b两个变量的关键代码是:
t=a;a=b;a=t;也可以不使用中间变量来完成,关键代码是:
a=a+b;b=a-b;a=a-b;
3、字母大小写转换:
大写字母二小写字母-32;反之,小写字母二大写字母+32。
4、分离一个3位的整数x的个十百位上的数字的关键代码:
d0=x%10;d1=x/10%10;d2=x/100;
算法:
把每一位上的数字当做个位去求:
y=x%10(求个位)改变被除数(缩小10倍);x=x/10(求被除数)
<七>分支结构
一、分支流程控制语句if语句
1、分之结构程序中有两个或两个以上的执行路径,每个执行路径称为一个分支。
在执行时,根据分支条件选择执行一条,其它分支忽略
2、C语言使用if命令和switch命令来实现程序的分支流程控制。
3、执行过程:
如果表达式的值为真(不为0),执行语句;if下只能控制一条语句。
否则跳过语句。
如:
输x绝对值。
5、执行过程:
先计算if后表达式”判断值为真假,如为真执行语句1”,否则执行语句2”。
然后执行else后面的语句。
6、else不可单用,必须与if配对使用。
if、else只能控制一条语句。
7、if与else之间有多条语句时,这几条语句也必须用花括号围成块语句。
如果之间只有一条语句,不要漏掉语句的结束标志分号(;)。
例子
(1)
如:
判断输入年份是否为闰年(被4整除,不能被100整除或400
1、包含if语句的使用情况称为if语句嵌套。
2、规定:
else总是与它上面的最近的,未配对的if配对。
使用花括号可以改变else与if默认配对关系。
二、switch语句
1、switch一般格式:
switch(表达式)
{case常量表达式1;
语句1
}
2、case后常量表达式称为标号,标志一组语句。
3、计算过程:
1switch括号中的表达式;
2从上至下查找与表达式的值匹配(相等比较)的标号。
4、switch后表达式是一个整型或字符型表达式,case后则必须是一个整型或字符型常量表达式。
5、switch语句中不能出现重复标号。
三、设计分之结构
if(x>y)
printf(“%dn”,x);else
&y);printf(“%d,y);}
<八>
、认识while语句
1、循环条件:
while命令后面括号中的表达式称为循环条件。
2、循环体:
在每次循环周期均要执行一次语句,称为循环体。
可以是简单语句,块语句,空语句。
3、循环控制变量:
在循环条件中控制条件真假的变量。
称为循环控制变量,通常决定循环体的执行次数。
4、对循环控制变量做了3个工作:
①循环控制变量赋初值,
2写出正确循环条件,
3循环控制变量的更新
5、执行过程:
第一步:
计算表达式的值,如果表达式的值为真,则执行第二步幵始一次循环周期;否则转入第三步,结束循环。
第二步:
执行语句。
语句执行完后结束本次循环周期,重返第一步。
第三步:
结束循环,执行循环后面语句。
二、认识do...while语句
1、语句部分可以是一条语句,也可以是块语句。
整个do…while循环在语法上被看成一条语句。
while后面必须以分号结束。
2、不论循环条件真假,do...while语句的循环体总要执行一次。
3、执行过程:
1执行do下面的语句(循环体),幵始一个循环周期,
2计算while括号中的表达式(循环体条件),如果表达式为真,结束本次循环,重返回①步,幵启下一个循环周期,否则转入第③步。
3结束do…while循环,流程转到循环结构外第一条语句。
如:
#include”stdio.h”
main()
{intn=10;(赋初值)
do
{printf(%d”,n);
n=n-2;}斗循环体
while(n>0);(条件)
}
三、认识for语句
1、for语句一般格式:
for(表达式1;表达式2;表达式3;)语句
2、for语句后面3个表达式作用是:
循环变量赋初值,循环测试条件,循环变量更新。
3、执行步骤:
1计算表达式1
2计算表达式2,如果结果为真,转第三步,如果结果为假转第五步。
3执行for下面的语句部分(循环体),执行完后转第四步。
4计算表达式3,结束本次循环周期,转回第二步,幵始下一次循环。
5
A
■
1
表达式2
1
r
表达式3
表达式1
结束循环,执行for语句后续语句
四、认识循环嵌套
1、一个循环语句的循环体中包含另外一个循环,称为循环嵌套或嵌套或嵌套循环。
内嵌的循环还可以再嵌套循环,从而构成多重循环。
2、在嵌套循环中,外层循环中,外层循环体执行的每一个周期中,内层循环语句都完整地执行一遍。
只有当外层循环条件为假时,才结束整个嵌套循环。
3、执行:
外循环幵始,外循环被执行一次,内循环执行一遍。
4、执行过程:
1当m值为1时,,进入外层循环的第一个周期,进入循环体后执行的第一条语句就是for语句。
2内层循环重复25次周期,每次周期都输出m*n的值。
当m为1时,n从1变到5,并输出结果为第一行的内容。
3内层循环结束后,执行外层循环体的下一条输出语句,输出换行符。
4外层循环体执行完后,m更新为2,进入外层循环第2个周期。
5重复上述操作,当m的值为6时,使得外层循环条件为假
终止整个循环程序结束。
五、认识循环辅助语句
1、break语句在循环结构中的作用是提前结束包含它的循环语句的执行,使程序流程转向到该循环语句后面的语句。
2、continue语句是提前结束本次循环周期的执行而幵始下一个循环周期。
3、break语句能于循环语句或switch语句中,而continue语句能用于循环语句中。
4、break语句和continue语句只能控制直包含它的循环语句的执行流程,一般于if语句配合使用,不单独使用。
结束本次循环周期后,对于while语句和do...while语句,它的下一步操作是计算while中的循环条件表达式;对于for语句,则执行表达式3
数组
{if(num%2==0)comtinue;
printf(“%d”,num);
}
}
#include"stdio.h”main()
{intnum;
for(num=10;numv=19;num++)
九、
<一>考察数组
1、数组:
是一组有序的连续的类型相同的变量集合。
2、数组元素:
构成数组的数据。
如a[0]、a[1]、a[5]。
3、数组长度:
数组元素的个数。
(中括号中的值)
4、下标:
数组元素在数组中的位置序号,是从0幵始的数字。
5、下标变量:
数组名(用户标识符)[下标]o(个数)
6、数组的维:
在数组中确定数组元素所需下标个数。
7、数组长度、下标用方括号括起,下标必须为整型表达式。
8、下标变量和基本数据类型的变量具有相同的特征,可执行基本变量的各种操作。
9、一维数组定义格式:
类型标识符数组名[整型常量表达式];
如:
intarray[10];
10、数组的三个特性:
数组元素类型相同,数组长度固定,数组存储时占用连续的内存单元。
如:
{inta[10],i;
for(i=0;i<10;i+1)
a[i]=i;
for(i=0;i<10;i++)
printf(“a[%d]=%d”i”a[i]);
}
11、初始化:
在定义数组的同时指定数组元素的初始值。
12、一维数组初始化一般格式:
类型标识符数组名[整型常量表达式]={初始值列表};
13、访问数组一般格式:
数组名[下标表达式]
14、部分元素初始化,系统自动为没有初始值的元素初始化为0,初始值表中数据的个数不能超过数组长度。
定义数组时,不能省略数组长度。
<二>在程序中合理地使用数组
定为最大和最小的初值
2、求最大最小值:
{inta[30],imax,minsum=0;floatave;
for(i=0;iv=30,i++)
{seanf(“%d,&a[i]);sum=sum+a[i]
max二min二a[0];}
for(i=1;i<30;i++)
{if(maxmax=a[i];
1、在求一个数组中最大值和最小值过程,将第0号元素的值假
if(min>a[i])
min二a[i];
}
ave二sum/30.0
printf(“%d%d%d%fn”,min,ma
x,sum,ave);
}
<三>用字符数组处理字符串
1、字符数组初始化时可用字符常量列表,也可以直观的使用字符串常量。
使用字符串常量时要注意其后的结束符“\0”(不输入也不输出)也是字符数组的元素。
2、输入字符串时,系统会自动在字符串末尾加上结束符“\0”;
遇到第一个“\0”结束符,不输出“\0”。
3、与格式转换说明符“%S”对应的输入,输出项是字符数组名,输入的第一个非空白字符到下一个空白字符之前的字符序列作为有效字符输入。
4、gets()函数输入的第一个非空白字符到回车之前的字符序列转换为字符串。
5、gets(字符数组)、gets字符数组:
函数一次只能输入输出一个字符串。
seanf()、printf():
一次可以输入输出多个字符。
6、在调用字符串处理函数时,在程序前面必须设置一个相关文
件包含预编处理命令,即#“elude“string.h”
十、函数
一、考察函数
1、e语言的函数分为两类:
库函数和自定义函数。
库函数是系统提供,用户不用自己定义而直接使用。
如:
printf,seanf()函数自定义函数是用户按需要编写的完成相应功能的程序段。
2>turboC的库函数程序代码存储在扩展名为LIB的库文件中;库函数原型说明(函数类型、函数名、参数类型及个数)存放在一个或多个扩展名为h的头文件中;在程序中使用库函数必须在源程序幵始处使用预编处理命令inelude包含相应文件,格式为:
#include“文件名”。
2、一般格式:
类型标识符函数名(函数形参说明表){声明部分
语句部分}函数包括两部分:
函数头和函数体。
3、定义函数:
1类型标识符:
指定函数返回值的数据类型。
如果不返回值,则
要把函数类型定义为voido
2函数名:
是一个个合法的用户标识符,用于在程序中区分不同。
3形式参数:
在函数后面小括号中的变量称为形式参数,简称形
参形参用于从函数外部接收数据,函数也可以没有形参。
4函数体:
是一对花括号括起来了语句序列,实现函数功能。
它由声明部分和执行部分组成。
5空函数:
是指定义函数时函数体为空的函数。
4、在同一个程序中,函数名不能相同,小括号是函数标志不能省略。
5、说明形参的数据类型时,必须一个形参变量使用一个类型标识符,多个形参说明之间用逗号分隔。
形参只能是变量,不能是常量或表达式。
函数体语句语句无论多少必须用花括号括起来。
6、return语句格式:
return;或return表达式;
作用:
结束函数的执行,把流程控制返回到调用函数中,并结束函数调用语句的执行,向调用函数返回“表达式”的值。
7、形参的作用:
接收调用函数中传递的数据。
8、定义函数时,高数类型要与函数返回值类型一致,若不一致,return语句返回值类型将自动转化为函数定义的类型。
9、没有return语句或不带表达式的return语句的函数将调用函数返回一个不确定的值。
一个函数中可以使用多个return语句,但一次只能返回一个值。
<二>在程序中使用函数
1、调用函数一般格式:
1无参函数:
函数名()
2有参函数:
函数名(参数列表)
在调用函数时,必须给被调函数提供形参函数所声明类型数据,这些数据被称为实际参数,简称实参。
实参可以是常量,变量和表达式。
(形参不能是变量)
2、调用函数两种方式:
1函数语句方式:
把调用函数作为一个独立的语句,这种方式通常用于调用有返回值的函数。
2函数表达式方式:
函数调用出现在一个表达式中,这种方式通常用于调用有返回值的函数。
函数返回值可参加表达式的运算。
,无返回值函数不能用此方式调用。
3、函数声明一般格式:
类型标识符函数名(参数类型1,参数类型2,...);
4、关于函数声明:
1被调函数的类型为int或char时,可以不对被用函数进行声明,而直接调用。
2当被调用函数定义在调用函数之前时,可以不对被调用函数进行声明。
3在源程序幵始处集中地对所有函数进行了声明,则在调用函数中不必再对被调函数做声明。
4加elu