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

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

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. nodeJS中读写文件方法的区别
  2. bzoj5039:[Jsoi2014]序列维护
  3. 使用CUBA进行开发–是Spring的重大转变吗?
  4. arcgis矢量之间的空白如何快速填充
  5. SAP License:学习到底学什么?
  6. ajax post常用请求头
  7. Qcon大会上电子工业出版社博文视点提供全程技术图书支持
  8. delphi 热成像摄像机源代码_红外热成像技术广泛应用于夜间及恶劣气候下目标的监控...
  9. 问答网站系统Question2Answer评测
  10. 网页关注微信服务号登录
  11. mysql显示中文乱码问题解决办法(部分情况下适用)
  12. GLFWError #65542 Happen, WGL: The driver does not appear to support OpenGL的问题处理经历
  13. vue + ElementUI + BMap 百度地图实现地图选址定位并获取地址信息
  14. Reentrantlock和其搭档Condition —————— 开开开山怪
  15. android 照相机开发
  16. 超级计算机app不能解方程,有了这款被 App Store 官方推荐的超级计算器,该把手头的计算器扔了...
  17. linux 软链接创建及拷贝
  18. PlatoFarm推出正式版游戏经济模型的特点分析
  19. WebStorm英文版汉化
  20. linux安全清理缓存,架构师小跟班:如何高效又安全的清理Linux服务器上的缓存?...

热门文章

  1. 动态规划算法原理及案例
  2. Revit软件 | 愁死人,一个误删引发的事故
  3. 科学小实验之大气压力实验
  4. 实时时钟-plc时钟与边缘计算时钟
  5. 电商移动Web实战项目(5)
  6. 注册德国商标应该注意什么?
  7. ps软件突然出现不能拉拽文件夹中的图片到当前图片的情况
  8. Python 高级编程笔记之类别
  9. 使用Git上传项目代码到github
  10. Mysql常用数值函数