第3章 最简单的C程序设计(2)

更新时间:2023-05-25 04:51:01 阅读量: 实用文档 文档下载

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

3.3 C语句3.3.1 C语句的作用和分类 3.3.2 最基本的语句----赋值语句

3.3.1 C语句的作用和分类C语句分为以下5类:(1) 控制语句: if、switch、for、while、do…while、 continue、break、return、goto等 (2) 函数调用语句 (3) 表达式语句:表达式加分号 (4) 空语句:只有一个分号 “;” (5) 复合语句:{……}

3.3.2 最基本的语句----赋值语句在C程序中,最常用的语句是: 赋值语句 输入输出语句 其中最基本的是赋值语句

例3.4 给出三角形的三边长,求三 角形面积。

解题思路:假设给定的三个边符合构成 三角形的条件 关键是找到求三角形面积的公式 公式为:

area s(s a)(s b)(s c)其中s=(a+b+c)/2

#include <stdio.h> #include <math.h> int main ( ) { double a,b,c,s,area; a=3.67; 对边长a、b、c赋值 b=5.43; c=6.21; 计算area 计算s s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("a=%f\tb=%f\t%f\n",a,b,c); printf("area=%f\n",area); return 0; }

#include <stdio.h> #include <math.h> 调用数学函数加此行 int main ( ) { double a,b,c,s,area; a=3.67; 数学函数,计算平方根 b=5.43; c=6.21; s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("a=%f\tb=%f\t%f\n",a,b,c); printf("area=%f\n",area); return 0; }

#include <stdio.h> #include <math.h> 调用数学函数加此行 int main ( ) { double a,b,c,s,area; 转义字符, a=3.67; 使输出位置 b=5.43; 跳到下一个 c=6.21; tab位置 s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("a=%f\tb=%f\t%f\n",a,b,c); printf("area=%f\n",area); return 0; }

1.赋值运算符 “=”是赋值运算符 作用是将一个数据赋给一个变量 也可以将一个表达式的值赋给一个变量

2.复合的赋值运算符 在赋值符“=”之前加上其他运算符,可以构

成复合的运算符

a+=3 x*=y+8 x%=3

等价于 a=a+3 等价于 x=x*(y+8) 等价于 x=x%3

为便于记忆,可以这样理解: ① a += b (其中a为变量,b为表达式) ② a += b(将有下划线的“a+”移到“=”右侧) |___↑ ③ a = a + b (在“=”左侧补上变量名a)

注意:如果b是包含若干项的表达式,则相当于它有括号。

如: ① x %= y+3 ② x %= (y+3) |__↑ ③ x = x %(y+3)(不要错写成x=x%y+3)C语言规定可以使用10种复合赋值运算符: +=,-=,*=,/=,%=,<<=,>>=, &=,∧=,|=

凡是二元(二目)运算 符,都可以与赋值符一 起组合成复合赋值符。

3.赋值表达式 由赋值运算符将一个变量和一个表达式 连接起来的式子称为“赋值表达式”。 一般形式为:

变量 赋值运算符 表达式 例如: a=5 //是一个赋值表达式 对赋值表达式求解的过程:求赋值运算符右侧的“表达式”的值 赋给赋值运算符左侧的变量

3.赋值表达式

赋值表达式“a=3*5”的值为15,对表 达式求解后,变量a的值和表达式的值都 是15 “a=(b=5)”和“a=b=5”等价 “a=b”和“b=a”含义不同

其中——赋值表达式中的“表达式”,又可 以是一个赋值表达式。例如: a=(b=5) 分析:括弧内的“b=5”是一个赋值表达式,它 的值等于5。执行表达式“a=(b=5)”相当于执 行 “b=5”和“a=b”两个赋值表达式。 赋值 运算符按照“自右而左”的结合顺序,因此, “(b=5)” 外面的括弧可以不要,即 “a=(b=5)”和“a=b=5” 等价。

请分析下面的赋值表达式∶(a=3*5)=4*3

分析:

先执行括弧内的运算,将15赋给a 然后执行4*3的运算,把12赋给a

不能写成: a=3*5=4*3

最后a的值为12,整个表达式的值为12

注意:在对赋值表达式(a=3*5)求解后,变量a得到值15,执行(a=3*5)=4*3时,实际上是将 4*3的积12赋给变量a,而不是赋给3*5。

赋值表达式也可以包含复合的赋值运算符。 如:a+=a-=a*a

分析:此赋值表达式的求解步骤如下∶① 先进行“a-=a*a”的运算, 它相当于 a=a-a*a,a的值为12-144=-132。 ② 再进行“a+=-132”的运算,相当于 a=a+(-132),a的值为-132-132=-264。

将赋值表达式作为表达式的一种,使赋值 操作不仅可以出现在赋值语句中,而且可以以 表达式形式出现在其他语句(如输出语句、循 环语句等)中。

如:printf("%d",a=b); 分析:如果b的值为3, 则输出a的值(也是表达式a=b的值)为3。在一个语句中完成了赋 值和输出双重功能。

4.赋值过程中的类型转换 两侧类型一致时,直接赋值 两侧类型不一致,但都是算术类型时, 自动将赋值运算符右侧的类型转换为左 侧类型后赋值 定义变量时要防止数据溢出

如果赋值运算符两侧的类型不一致,但 都是数值型或字符型时,在赋值时要进行类 型转换。 ①将浮点型数据(包括单、双精度)赋给整 型变量时,舍弃浮点数的小数部分。 如:i为整型变量,执行“i=3.56”的结果是使i 的值为3,以整数形式存储在整型变量中.

②将整型数据赋给单、双精度变量时,数值不 变,但以浮点数形式存储到变量中 如: 将23赋给float变量f,即执行f=23,先将 23转换成23.000000,再存储在f中。 将23赋给double型变量d,即执行d=23, 系统将23补足有效位数字为 23.000000000000000,然后以双精度浮点数 形式存储到变量d中。

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

Top