C语言第三篇:基本语句(上)
PART.01
C语言第三篇:
基本语句(上)
本篇主要介绍C语言基本语句。将分为上下两部分进行推送。
任何复杂的C语言程序都可以由三种基本结构组成:顺序结构、分支结构、循环结构。下面分别介绍这三种基本结构的程序设计。
C语言提供了多种语句来实现这些程序结构。c语句可分为表达式语句、控制语句、函数调用语句、复合语句和空语句五类。
1
(1)表达式语句。表达式语句有表达式加上“;”组成。(PS:C语言标点符号都为英文标点符号)
其一般形式为:
表达式:
执行表达式语句就是计算表达式的值。
例如:
X=y+z: //赋值语句(下文重点介绍)
Y+z; //加法运算语句,但计算结果不能保留,无实际意义
I++: //自增语句,i值增1
2
(2)控制语句。控制语句用于控制程序的流程,已实现程序的各种结构方式,他们由特定的语句定义符组成。C语言有九种控制语句,可以分为一下三类:
①条件判断语句:if...else语句、switch语句。
②循环语句:for语句、 while语句、 do while语句。
③转向语句:break语句、continue语句、return语句。
3
(3)函数调用语句。有函数名、实际参数加上“;”组成。
其一般形式为:
函数名(实际参数表);
执行函数语句就是调用函数体并把实际参数赋予函数定义中的形式参数,然后执行被调函数体的语句,求取值函数将在下一章具体介绍。
例如:
printf(“C Program”);
4
(4)复合语句。把多个语句用大括号{}括起来组成的一条语句称复合语句。在程序中应把复合语句看成单条语句,而不是多条语句。
例如:
{ x=y+z;
a=b+c;
Printf(“%d%d”,x,a);
}
是一条复合语句。
复合语句内的各条语句都必须以分号“;”结尾,在括号“}”外不能加分号。
(5)空语句。只有“;”组成的语句成为空语句。空语句是什么也不执行的语句。在程序中空语句可用作空循环体。
4.2顺序结构
顺序结构是一种最简单、 最基本的程序结构。它的特点是,这个结构中的语句都是按照从上到下的顺序执行,可见,这种结构的语句只有一个入口和一个出口。顺序结构的语句看起来很简单,但它是所有程序的基础。组成顺序结构程序的几种基本语句:赋值语句、逗号表达式语句、格式化输入输出语句、非格式化输入/输出语句。
输入输出语句已经在上一章介绍,本节介绍赋值语句、逗号表达式语句。
●4.2.1赋值语句 ●
1.赋值运算符和赋值表达式
“=”即赋值运算符,是一个二元运算符,其作用是构造“赋值表达式”。
由赋值运算符将一个变量和一个表达式连接起来的式子称为赋值表达式。
它的一般格式为:
变量名=表达式
赋值表达式的作用是将赋值运算符右边的表达式的值赋给左边的变量。值一提的是,这里的表达式可以是常量(如a=5)、变量(如b=a)及各种表达式(如b=3*5)。赋值运算符的结合性为“自右向左”,赋值表达式本身的值取左边变量的值。列举若干赋值表达式:
a=3*5 //a的值为15赋值表达式的值为15
a=b=5 //等价于a=(b=5)a,b的值为5,赋值表达式的值为5
a=5+c=6 //表达式错误。赋值运算符优先级低于算数、关系和逻辑运算
(详情见第二章)
a=5+(c=6) //c的值为6,a和赋值表达式的值均为11
注意:
(1)在进行赋值运算时,若“=”两边的数据类型不一致,系统会自动把“=”右边表达式的数据类型转变成左边变量的类型,然后赋给左边的变量。
例如:
Int x
X=3.14 //对3.14取整赋给x,x的值为3
(2)赋值运算符“=”不是数学上的“等号”
2.复合赋值运算符
在C语言中,所有二元算数运算符和位运算符均可与赋值运算符组合成复合赋值运算符,共有10个:
+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=
其中,有关算数运算的复合赋值运算符最常用。复合赋值运算符的优先级和结合性与赋值运算符相同,其结构的赋值表达式格式为:
变量名 复合赋值运算符 表达式
等价于
变量名 = 变量名 运算符(表达式)
例如:
a+=3 等价于 a=a+3
a*=b-5 等价于 a=a*(b-5) //小提示:不等价于a=a*b-5,括号不能省
a%=3+b 等价于 a=a%(3+b)
赋值语句
赋值语句是c程序最基本的语句,用于实现程序中的计算功能,几乎每个有实用价值的程序中都包含赋值语句。赋值语句是由赋值表达式加一个”;”构成的一种表达式语句。
例如:
a=5
a+=5
a=b=5 //等效于b=5;和a=b;两个赋值语句
注意:赋值表达式是一种表达式,它可以出现在任何一个允许表达式的地方,而赋值语句则不能出现在表达式中。如:(x=y+1)>0是个正确的表达式,而(x=y+1;)>0则是不合法的。
思考:语句a=b=c=5;合法,语句int a=b=c=5;不合法,为什么?
●4.2.2逗号运算符与逗号表达式 ●
逗号运算符“,”的优先级最低。用逗号运算符连接表达式就构成了逗号表达式,其一般格式为:
表达式1,表达式2……表达式n
功能:从左至右依次求解每个表达式的值,并把最后一个表达式的值作为整个逗号表达式的值。
例如:
Int a=2,b;
则
a+=1,b=a+2
是一个逗号表达式,改逗号表达式的值为5,即b=a+2的值。此时a的值为3,b的值为5。
真题打卡
#include <stdio. h>
#include <math.h>
int main()
{
double a,b,c,p,s;
printf("Please input a,b,c:\n");
scanf("%lf%lf%lf",&a, &b, &c) ;
p=1.0/2* (a+b+c);
s=sqrt(p*(p-a)*(p-b)*(p-c));
printf("a=%5.2f,b=%5.2f,c=%5.2f,p=%5.2f\n",a,b,c,p);
printf("s=%5.2f\n",s);
return 0;
}
若输入a的值为3,b的值为4,c的值为5
请写出最后a,b,c,p,s的值
答案a=3.00,b=4.00,c=5.00,p=6.00,s=6.00
思考:这个程序在运行时会出现问题吗?问题出现在那里?
排版:林霖
整理:沈磊
审核:苏泳 陈司