第1章++++C语言的基本构成.docx
《第1章++++C语言的基本构成.docx》由会员分享,可在线阅读,更多相关《第1章++++C语言的基本构成.docx(14页珍藏版)》请在冰豆网上搜索。
![第1章++++C语言的基本构成.docx](https://file1.bdocx.com/fileroot1/2022-12/12/c1ed63d7-fbb0-4a10-9a7f-c72154030521/c1ed63d7-fbb0-4a10-9a7f-c721540305211.gif)
第1章++++C语言的基本构成
第1章C程序的基本构成
本章重点
●程序的概念
●结构化程序的结构
●文件与函数的概念
●保留字与标识符
●运算符与表达式
1.1程序的概念
程序是指将需要计算机做的工作写成一定形式的指令(二进制),并把它们存储在计算机的内部存储器中。
当人们给出命令之后,它就按指令操作顺序自动进行。
1.2程序设计的过程
(1)问题的提出、要求及所采用的数据结构。
(2)算法的确定、程序的编制。
(3)程序的调试及修改。
(4)整理并写出文档资料。
图1.1程序的设计过程
1.3 程序的结构
结构化程序设计由三种结构组成:
顺序结构、选择结构、循环结构。
(1)顺序结构,顺序结构的程序是最简单的程序。
图1.2顺序结构的程序段
(2)分支结构
图1.3分支结构的程序段
(3)循环结构
图1.4循环结构的程序段
1.4算法与流程图
算法是指解决问题所使用的一系列合乎逻辑的解题步骤。
制定一个算法,一般要经过设计、确认、分析、编码、测试、调试、计时等阶段。
例如判断一个整数的奇偶性,大致分成以下几步:
♂计算机读入该数
♂将该数除以2
♂判断余数是否为0
♂如果为0,该数为偶数
♂否则为奇数
1.5结构化程序
1.5.1顺序结构
顺序结构的程序是一条语句接一条语句顺序地往下执行的。
例1.1设计一个程序,显示下列图形。
*************************
C语言的学习要努力!
*************************
图1-5程序设计流程图
用C语言写成的源程序为:
#include
intmain()
{
printf(“***********************\n”);
printf(“C语言的学习要努力!
\n”);
printf(“***********************\n”);
return0;
}
1.5.2分支结构
图1-13分支结构形式
例1.2键盘输入两个数,判断两个数的大小。
真
假若
图1-14两数中求最大值流程图
用C语言写成的源程序为:
#include
intmain()
{
intx,y;
scanf(“%d%d”,&x,&y);
if(x>y)
printf(“x大于y\n”);
else
printf(“x小于y\n”);
return0;
}
1.5.3循环结构
例1.3计算1+2+3+4+……+100的值,用循环的方法,画出程序的流程图。
图1-17求1-100和的程序流程图
用C语言写成的源程序为:
#include
intmain()
{
inti=1,sum=0;
while(i<=100)
{
sum=sum+i;
i++;
}
printf("从1加到100的和为%d:
\n",sum);
return0;
}
1.6C程序的构成
C源程序可以由一个或多个文件组成,文件可用函数构成,函数由语句构成,语句由表达式、关键字、标识符构成。
例1.4在VisualC++环境下新建两个文件,其文件名分别为1-4-1.c、1-4-2.c,其中1-4-1.c文件定义一个做乘法的函数f,定义另一个主调函数main,在主调函数中调用函数f以及存放在1-4-2.c中的函数disp,在main函数中输出f的返回值。
图1.19C程序的多文件构成
1.7C函数
函数的调用形式为:
函数名(参数);
函数的原型为:
函数返回值类型函数名(形式参数表);
类型函数名(形式参数声明)
函
数
体
数据声明部分
语句部分
图1.24C函数定义的结构示意图
例1.5函数结构的例子。
intadd(intx,inty)/*函数返回值类型、函数名及形式参数的声明*/
{/*函数体开始*/
intz;/*数据定义部分,给变量分配内存空间*/
z=x+y;/*执行语句*/
returnz;/*函数结束前返回一个整型值*/
}/*函数体结束*/
1.8C语句
语句的结束符用“;”表示。
intx=3,y=4,z;
disp();
z=f(x,y);
printf("%d*%d=%d\n",x,y,z);
disp();
1.9保留字与标识符
语句由保留字、标识符、运算符和表达式构成。
1.9.1保留字
保留字是指C语言中有特殊含义的字,只能用于C语言中特定的场合。
例如:
int:
用于定义整型变量
float:
用于定义实型变量
double:
用于定义双精度变量
char:
用于定义字符变量或字符串变量
if:
用于判断
for:
用于循环
whileinclude:
用于循环
1.9.2标识符
标识符分为系统命名的标识符与用户自命名标识符,系统标识符通常用于系统函数的命名,如:
printf、strlen、scanf、fabs、malloc等。
用户自命名标识符是用户为命名变量或定义函数而取名,通常用户自定义标识符以字母或下划线开头,由字母、数字、下划线组成。
1.10常量
常量指在程序运行过程中值不能被改变的量。
在C语言中,有整型常量(int),实型常量(float或double),字符常量(char)和字符串常量。
1.10.1整型常量
整型常量的定义格式:
intconst常量名=常量值;或:
constint常量名=常量值;
例如:
intconstx=10;
整型常量通常可分为
十进制、八进制和十六进制常量。
十进制常量用一串连续的数字来表示,如:
32767、-32768、0等。
八进制常量用数字0开头。
如:
05、012、01都是八进制数。
十六进制常量用数字0和字母x(或大写字母X)开头。
如:
0x10、0xff、0X8。
1.10.2实型常量
实型常量定义:
floatconst常量名=常量值;
例如:
floatconstx=2.1;
实型常量也称数值型常量,它们有正值和负值的区分。
实型常量通常用带小数点的数字及指数形式表示,如:
3.14159、2.71828、0.0、.54、0.3e2等。
1.10.3字符常量
字符常量定义:
charconst常量名=常量值;
例如:
charconstch=’A’;
字符常量用单引号括起来,例’A’是字符型常量,而字符串常量用双引号括起来,例“asfgTYN”是合法的无名字符串常量。
1.11变量
变量是指在程序运行过程中其值可以变化的量。
变量存放在内存中,变量的地址用“&变量名”来表示的。
1.11.1变量的数据类型及其定义
每个变量在使用前都必须定义,定义变量的含义是给变量分配存储空间。
格式:
数据类型符变量名1,变量名2;
例如:
intx,y;
例如:
定义两个整型变量及一个字符变量可写为:
intx,y;
charch;
1.11.2整型变量
例1.5整型变量的定义及输出的例子。
#include
voidmain()
{
intx=2,y;/*定义x、y为整型变量,并赋x的初值为2*/
y=3;/*并赋y的值为3*/
printf("x=%d,y=%d\n",x,y);
}
1.11.3实型变量
在C语言中可以用两种形式表示一个实型变量或实型常量。
1.小数形式表示
如0.123、.123、23.、0.0等都是合法的实型常量。
2.指数形式表示
如2.3026可以表示为0.23026e1,0.0002345可以表示为2.345e-4等形式。
C语言的语法规定,字母e(或E)前后必须要有数字,且e或E后面的指数必须为整数。
如果写成e3、.5e3.、.e3、e等都是不合法的指数形式。
1.11.4字符变量与字符串
C语言中,一个字符常量代表ASCII字符集中的一个字符,在程序中用单引号括起来作为字符常量。
例如:
‘A’、‘C’、‘t’、‘!
’、‘?
’都是合法的字符常量。
C语言中,字符变量用关键字char进行定义,在定义的同时可以赋初值。
1.字符变量
定义形式:
char变量名1,变量名2;
例如:
charch;
注意:
一个字符变量占用一个字节的内存空间,只能存放一个字符,以单引号表示。
例如:
charc1,c2;
c1=’a’;
c2=’b’;
3.字符串
字符串常量是由双引号括起来的一串字符。
如“string”就是字符串常量,在C语言中,系统在每个字符串的最后自动加入一个字符‘\0’作为字符串的结束标志。
1.12运算符
1.12.1算术运算符
算术运算符用于加、减、乘、除、取余数,它们的表达方式及含义如表1.4所示。
表1.4算术运算符
运算符
含义
例
备注
+
加
5+2结果7
-
减
5-2结果3
*
乘
5*2结果10
/
除
5/2结果2
%
取余数
5%2结果1
只适用于整型数
++
自增运算
y=x++;等同y=x,x++
y=++x;等同x++,y=x
适用于整型数
--
自减运算
y=x--;等同y=x,x--
y=--x;等同x--,y=x
适用于整型数
注意:
++、--使得整型变量的值增加1或减小1,它不能作用在表达式或常量上。
表达式y=x++;相当于y=x;x=x+1;
表达式y=++x;相当于x=x+1;y=x;
表达式y=x--;相当于y=x;x=x-1;
表达式y=--x;相当于x=x-1;y=x;
#include
intmain()
{
intx,y,z;
scanf("%d",&x);
y=x++;
z=++x;
printf("y=%dz=%dx=%d\n",y,z,x);
}
1.12.2关系运算符
表1.5关系运算符
运算符
含义
举例
>=
大于等于
20>=20结果1
10>=20结果0
>
大于
20>20结果0
20>10结果1
<
小于
20<30结果0
20<10结果0
<=
小于等于
20<=30结果1
20<=10结果0
==
判断等于
20==20结果1
20==10结果0
!
=
不等于
20!
=20结果0
20!
=10结果1
1.12.3逻辑运算符
表1.6逻辑运算符
逻辑运算符
含义
举例
!
逻辑非:
对真取非结果假,对假取非结果真
!
20结果0
!
0结果1
&&
与:
表示两个运算对象都为真结果才为真
20&&45结果1
20&&0结果0
||
或:
表示两个运算对象中有一个真结果就为真
20||0结果1
0||0结果0
思考:
1.写出判断x大于0并且小于10的表达式。
2.写出判断ch是大于字母的的表达式。
3.写出判断ch是字母的表达式。
4.写出整型数a、b、c能构成一个三角形的表达式。
1.12.4位运算符
表1.7位运算符(对象为二进制数)
运算符
含义
举例
~
按位反
~1结果0
~1010结果0101
&
按位与
1100&1010结果1000
1100&1010结果1110
|
按位或
1100|1010结果1110
^
按位异或
1100&1010结果0110
<<
按位左移
0010结果0100
>>
按位右移
0010结果0001