第三章 简单的算术运算和表达式

算数运算符:一元、二元、三元(条件运算符)

1/2是整型除法,1.0/2是浮点数除法

求余运算(%)限定参与运算的两个操作数必须为整数,不能对两个实型数据进行求余运算

余数的符号与被除数的符号相同

C语言中没有幂运算符!

//L3-1

#include main()

{

int x = 153, b0, b1, b2, sum;

b2 = x / 100; /* 计算百位数字 */b1 = (x - b2 * 100) / 10; /* 计算十位数字 */b0 = x % 10; /* 计算个位数字 */sum = b2 + b1 +b0;

printf("b2=%d, b1=%d, b0=%d, sum=%d

", b2, b1, b0, sum);

}

//运行结果

b2=1, b1=5, b0=3, sum=9

复合的赋值运算符

+=:a+=b; 等价于 a=a+b;

-=

*=

/=

%=

增1和减1运算符(一元运算符)

++x:前缀运算符,在变量使用之前对其执行加1操作

m=++n; 等价于 n=n+1;m=n;

x++:后缀运算符,先使用变量的当前值,然后对其进行加1操作

m=n++; 等价于 m=n;n=n+1;

良好的程序设计风格提倡在一行语句中一个变量最多只出现一次增1或者减1运算

不建议在程序中使用复杂的增1和减1运算符,过多的增1和减1运算符会导致程序的可读性变差

宏常量和宏替换

//L3-2

#include main()

{

double r = 5.3; /* 圆的半径 */printf("circumference = %f

", 2*3.14159*r);

printf("area = %f

", 3.14159*r*r);

}

//运行结果

circumference = 33.300854area = 88.247263

//L3-3

#include main()

{

doubler;

printf("Input r:"); /* 提示用户输入半径的值*/scanf("%lf", &r); /* 以双精度实型格式从键盘输入半径的值 */

//scanf()函数也是C的标准输入/输出函数

//&称为取地址运算符,&r指定了用户输入数据存放的变量的地址

printf("circumference = %f

", 2*3.14159*r);

printf("area = %f

", 3.14159*r*r);

}

//运行结果

Input r:6circumference = 37.699080area = 113.097240

幻数:在程序中直接使用的常数

导致程序的可读性变差

容易发生书写错误

难以修改

把幻数定义为宏常量或const常量,用一个简单易懂的名字来代替一个长字符串

能提高程序的可读性

//L3-4

#include

#define PI 3.14159 /* 定义宏常量PI */main()

{

doubler;

printf("Input r:");

scanf("%lf", &r);

printf("circumference = %f

", 2*PI*r); /*编译时PI被替换为3.14159*/printf("area = %f

", PI*r*r); /*编译时PI被替换为3.14159*/}

宏定义中的标识符被称为宏名

习惯上用字母全部大写的单词来命名宏常量

将程序中出现的宏名替换为字符串的过程称为宏替换

宏定义的宏名与字符串之间可有多个空白符,无需加等号

字符串后不以分号结尾

宏定义不是C语句,而是一种编译预处理命令

宏常量没有数据类型,const常量可以声明数据类型

//L3-5

#include main()

{

const double PI = 3.14159; /* 定义实型的const常量PI */

doubler;

printf("Input r:");

scanf("%lf", &r);

printf("circumference = %f

", 2*PI*r);

printf("area = %f

", PI*r*r);

}

表达式中的自动类型转换:

C编译器在对操作数进行运算之前将所有操作数都转换为取值范围较大的操作数类型,称为类型提升。

类型提升可以避免数据信息丢失的情况发生。

在一个赋值语句中,若赋值运算符左侧的变量的类型与右侧的表达式的类型不一致,则赋值时会发生自动类型转换

类型转换的规则是:将右侧表达式的值转换为左侧变量的类型

//L3-6

#include main()

{

int n = 256;

float f = 3.6;

double d = 2.5;

n =f;

f =n;

d =f;

printf("n = %d

", n);

printf("f = %f

", f);

printf("d = %f

", d);

}

//运行结果

n = 3f = 3.000000d = 3.000000

将取值范围小的类型转换为取值范围大的类型是安全的,而反之则是不安全的

尽量避免使用这种自动的类型转换,建议使用强制类型转换运算符

强制类型转换就是明确地表明程序打算执行哪种类型转换,有助于消除因隐式的自动转换而导致的程序隐患

//L3-7

#include main()

{

int m = 5;

printf("m/2=%d

", m/2);

printf("(float)(m/2) = %f

", (float)(m/2));

printf("(float)m/2 = %f

", (float)m/2);

printf("m = %d

", m);

}

//运行结果

m/2=2(float)(m/2) = 2.000000(float)m/2 = 2.500000m = 5

常用的标准数学函数

//L3-8

#include #include //C的标准数学函数库提供了丰富的数学函数

//使用这些数学函数时,只要在程序的开头加上如下的编译预处理命令即可

main()

{

floata, b, c, s, area;

printf("Input a,b,c:");

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

s = (float)(a + b + c) / 2;

area = sqrt(s * (s - a) * (s - b) * (s -c));

printf("area = %f

", area);

}

//运行结果

Input a,b,c:3,4,5area = 6.000000

常用的标准数学函数

sqrt(x)

平方根

fabs(x)

绝对值

log(x)

自然对数

log10(x)

以10为底的对数

exp(x)

指数

pow(x,y)

x的y次方

sin(x)

正弦

cos(x)

余弦

c语言程序设计x的平方,C语言程序设计(三) 简单的算术运算和表达式相关推荐

  1. C语言程序设计双语版,双语版C程序设计(英汉对照)

    <双语版C程序设计(英汉对照)> Chapter One Introduction to C(引言)1 1.1 Brief history of C(C语言简史)1 1.2 Why pro ...

  2. C语言程序设计教程 北京邮电,C语言程序设计教程第3章_北京邮电大学出版社.ppt...

    <C语言程序设计教程第3章_北京邮电大学出版社.ppt>由会员分享,可在线阅读,更多相关<C语言程序设计教程第3章_北京邮电大学出版社.ppt(41页珍藏版)>请在人人文库网上 ...

  3. c语言程序设计教程ppt,《C语言程序设计教程》.ppt

    <<C语言程序设计教程>.ppt>由会员分享,可在线阅读,更多相关<<C语言程序设计教程>.ppt(30页珍藏版)>请在装配图网上搜索. 1.第1章 预 ...

  4. C语言学习书籍推荐《C语言程序设计 现代方法(第2版)》下载

    下载地址:点我 C语言仍然是计算机领域的通用语言之一,但现在的C语言已经和当初的时候大不相同了.本书主要的一个目的就是通过一种"现代方法"来介绍C语言,书中强调标准C,强调软件工程 ...

  5. c语言选择循环实验报告,C语言程序设计实验报告选择与循环结构程序设计.doc

    C语言程序设计实验报告选择与循环结构程序设计.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的 ...

  6. 有n个学生选修了c语言程序设计这门课程,C语言程序设计报告学生选修课系统(18页)-原创力文档...

    C 语 言 程 序 设 计 学校: 学院: 班级序号: 学号: :姓名 指导老师: C语言程序设计报告 一.C语言课程设计的目的: 高级语言课程设计是学习完<高级语言程序设计>课程后进行的 ...

  7. c语言程序设计江宝钏实验六答案,《C语言程序设计》(江宝钏著)实验三答案.doc...

    <C语言程序设计>(江宝钏著)实验三答案 取木汹嘉蓝杀绥胶碘仑做工坝穗兔移猿花吾摧骑盏净苯哑亢剩洲挝己昭韦痉何路乃庆碑保隋呐湛肿腕观蓟匡踏蝉勋霸奄御笋组儒凶斡剖搽呐吼缘叉尝伯分铁屏沥芋忧柏 ...

  8. 国二C语言文字选择程序选择,全国计算机等级考试二级C语言题型总结(二)——选择循环结构程序设计部分.doc...

    全国计算机等级考试二级C语言题型总结(二)--选择循环结构程序设计部分 C语言第二部分上机题型总结 选择结构部分: if结构题型总结 (案例1) 企业发放的奖金根据利润提成.利润(I)低于或等于10万 ...

  9. 北京科技大学C语言程序设计,北京科技大学《C语言》第1章.ppt

    <北京科技大学<C语言>第1章.ppt>由会员分享,可在线阅读,更多相关<北京科技大学<C语言>第1章.ppt(36页珍藏版)>请在装配图网上搜索. 1 ...

最新文章

  1. Python 2x 中list 里面的中文打印效果乱码
  2. LED数码管仿真显示程序
  3. 用 C 语言开发一门编程语言 — 条件分支
  4. cpu风扇一会转一会停_宝宝不能吹电风扇?空调PK电风扇,到底该Pick谁啊啊啊!...
  5. python实现数据库事务回滚_使用Python脚本实现MySQL误操作的快速回滚
  6. if delete annotation.xml in project folder, not local service folder
  7. searchsploit漏洞查找工具使用指南(exploit-db.com 离线工具)
  8. Eclipse快捷键的使用
  9. python django开发工具_Python和Django web开发工具pycharm介绍
  10. 云计算具有什么平台_工业云平台具有哪些功能?
  11. 分享一段php获取随意时间的前一天代码
  12. 在华为服务器 RH 2288H V2上装 windows 2008
  13. c语言书籍(c语言书籍)
  14. PMP试题 | 每日一练,快速提分 8.5
  15. matlab c2d tustin,Matlab中的c2d函数用法以及绘制传函的Bode图
  16. Windows应用程序安装向导制作
  17. java导出乱码_导出文件乱码问题处理(java)
  18. 可在WPS环境中通用的vb6代码修改方法
  19. 机器学习_决策树与信息熵
  20. varchar varchar2异同

热门文章

  1. matlab绘制银河系,Gaia卫星绘制了银河系最详细的三维图
  2. 【无标题】Annotation-specified bean name ‘homeService‘ for bean class [com.wonders.task.service.impl.Wai]
  3. 使用docker部署mysql8.0+zabbix5.0
  4. VMware虚拟机忘记密码了怎么办?
  5. ppt护理文书流程图_降低护理文书品管圈ppt
  6. 基于软件和超融合基础架构的长期规划助力华南师范大学 在疫情期间保证持续优质的教学体验
  7. PushDeer一行代码实现消息推送到手机
  8. 选配高清监控设备(监控系统)交换机
  9. 在FlashBuilder里的ActionScript工程中使用Flash CS5中的类 fl.controls库
  10. 用开卡工具重生SSD,SM2246XT一步一步开卡成功教程