程序设计2-数学表达式与简单程序_第1页
程序设计2-数学表达式与简单程序_第2页
程序设计2-数学表达式与简单程序_第3页
程序设计2-数学表达式与简单程序_第4页
程序设计2-数学表达式与简单程序_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章数学表达式与简单程序2.1顺序结构2.2基本数据类型与常量2.3变量与赋值运算2.4算术运算符与算术表达式2.5类型转换2.6输入与输出2.7实用知识:数学应用中常用的标准库函数2.8简单程序算法及应用实例2.9练习与思考2.1顺序结构顺序结构是最常用的程序结构,按照解决问题的顺序写出语句1)输入(Input)定义变量接收用户输入定义变量初始化值3)计算(Operate)表达式的值写入变量4)输出(Output)输出变量这个流程图表示的功能什么?2.2基本数据类型与常量2.2.1基本数据类型简介2.2.2整型常量2.2.3实型常量2.2.4字符型常量2.2.5符号常量2.2.6sizeof运算符2.2.1基本数据类型简介不同的数据类型(DataType)有不同的存储形式,允许有不同的操作数据类型C&C++中的定义现实中的实例整型int5-3双精度浮点型double8.81e-3字符型char'A''0'表

2‑1C&C++中最常用的内置数据类型如图:若内存地址0X2000开始存放一个字符,则表示’A’(ASCII码为65)如图:若内存地址0X2000开始存放一个整数,则表示652.2.1基本数据类型简介常量(Constant)是指在程序运行中保持不变的量,具有一定的数据类型常量的数据类型由其书写格式决定,如:3.14是双精度型365是整型'C'是字符型C++支持两种类型的常量:字面常量:字面形式表示符号常量:用一个标识符来替代常量2.2.2整型常量整型(int):占2或4个字节十进制整数:如25、-53等八进制:以整数0开头,如014表示十进制12十六进制:以整数0和字母x开头,如0x14表示十进制20长整型(long):占4个字节以L或l结尾,如100L无符号整型(unsigned):与有符号整数字节相同以U或u结尾,如200UC++11和C99都增加了longlong型,占8个字节以LL或ll结尾,如100LL2.2.3实型常量

2.2.4字符常量一对单引号括起来的单个字符(char),占1个字节,存储字符的ASCII码值,如‘A‘在内存中是01000001注意:'ab':错误,一对单引号只能括起一个字符;'a'与a不同:'a'表示字符常量,值是字母a的ASCII码,a是标识符,要定义,并根据定义的数据类型分配内存;'0'与0不同:'0'表示字符常量,值是字符0的ASCII码(整数48),而0表示整型常量0;'a'与"a"不同:"a"表示字符串常量,由字符常量'a'和'\0'组成(字符数组中介绍字符串常量)2.2.4字符常量字符常量ASCII码功能'\n'10换行(输出时起到间隔的作用,光标跳到下一行行首)'\t'9水平制表符(输出间隔,相当于键盘上按TAB键)'\\'92一个反斜杠\'\''39一个单引号''\"'34一个双引号"'\ddd'ddd三位八进制整数对应的字符(ddd表示该字符ASCII码的八进制值),如'\012'表示'\n','\101'表示'A'(ASCII码为65)'\xhh'hh两位十六进制整数对应的字符(hh表示该字符ASCII码的十六进制值),如'x0A'表示'\n','\x41'表示'A'(ASCII码为65)表

2‑2常用的转义字符常量cout<<"ILove\"C\"\n";一共输出多少个字符?该字符串常量在内存中一共占多少个字节?11,1111,1214,1414,15ABCD提交可为此题添加文本、图片、公式等解析,且需将内容全部放在本区域内。正常使用需3.0以上版本cout<<后面的“”表示一个字符串常量,由双引号里面的字符常量和'\0’组成\”是一个转义字符,表示要输出的是字符“本身\n是一个转义字符,表示要输出换行因此双引号内部一共有I、空格、L、o、v、e、空格、\”、C、\”、\n、\0总计12个字符,在内存中占据12个字节,输出时遇到\0结束输出,屏幕不输出\0,因此输出11个字符答案解析答案解析单选题1分2.2.5符号常量定义一个标识符保存一个只读型的值——只读变量优点:提高程序的可读性方便修改常量值1)#define符号常量值预处理命令,写在文件的头部,如:

#definePI3.14,称PI为宏名编译前首先完成预处理,将程序中出现PI的地方全部用3.14替代注意:#define末尾没有分号,如:#defineN5;

会用5;替代N,而不是5替代N仅仅是字符替换,不会做任何转换,如:#defineX2+3用2+3替代X,而不是5替代X#include<iostream>usingnamespacestd;#defineN110+5intmain(){constintN2=10+5;cout<<N1<<","<<N2<<endl; cout<<N1*2<<","<<N2*2<<endl; return0;}程序运行结果是:15,1520,30你认为运行结果对吗?对错AB提交可为此题添加文本、图片、公式等解析,且需将内容全部放在本区域内。正常使用需3.0以上版本#define是预处理命令,就是说,在编译之前,将程序中的N1全部替换为10+5,则量条输出语句分别变为:cout<<10+5<<“,”<<N2<<endl;cout<<10+5*2<<“,”<<N2*2<<endl;而运行时,按顺序执行语句,则N2的值为15输出语句结果为:15,1520,30因为10+5*2=20,而15*2=30若修改为#defineN1(10+5)则N1与N2的结果相同答案解析答案解析单选题1分2.2.5符号常量2)const数据类型常量名=常量值;用const修饰符定义的只读变量,C++与C99支持如(C++&C99):constdoublePI=3.14;

或(C++):constdoublePI(3.14);说明:程序运行时,用右边的值赋值(复制)给左边的常量右边的值可以是表达式,先计算表达式的值,再赋值常量有数据类型,按数据类型分配内存,一次性写入值,以后不得修改语句,以分号结尾下面对符号常量的定义中正确的是【】。constintN;constN;constN=5;constintN=1;ABCD提交可为此题添加文本、图片、公式等解析,且需将内容全部放在本区域内。正常使用需3.0以上版本const定义符号常量时,要定义数据类型,同时给常量附初始值答案解析答案解析单选题1分2.2.6sizeof运算符获得一个数据类型占据内存的字节数,语法:sizeof(数据类型)或sizeof(常量)

sizeof(变量)#include<iostream>usingnamespacestd;intmain(){cout<<sizeof(1)<<","<<sizeof(int)<<endl <<sizeof(1.0)<<","<<sizeof(double)<<endl <<sizeof('1') <<","<<sizeof(char)<<endl <<sizeof("1")<<endl;return0;}程序的运行结果是:4,48,81,122.3变量与赋值运算用一个标识符表示一个数据类型的内存空间,可读可写变量的定义语法:数据类型变量名;如:inta;执行时,在内存中找一块int型大小的空闲空间,用变量名a实现对内存的按int型的读与写由于该内存空间存在不确定的0和1,因此执行后,a的值是随机值可以同时定义相同类型的多个变量,用逗号分隔。如:inta,b;等价于inta;intb;变量名的定义规则:a)合法的标识符:以字母和下划线开头,包含字母、数字和下划线;b)不能使用关键字下面哪些是合法的变量名(选择1-4项):Main2x-downlongABCD提交可为此题添加文本、图片、公式等解析,且需将内容全部放在本区域内。正常使用需3.0以上版本C&C++区分大小写Main与main不同,main代表主函数,而Main是用户自定义的标识符,可以用作变量名2x不合法,变量名不能以数字开头-down不合法,变量名只能以字母或下划线开头,下划线是_而不是-long是关键字,表示长整型数据类型答案解析答案解析多选题1分2.3变量与赋值运算变量的初始化:定义变量的同时给它写入初始值语法:数据类型变量名=变量值;如:inta=1;可以同时定义并初始化多个变量,如:inta=1,b=2;等价于:inta=1;intb=2;C++还支持另一种初始化的语法:数据类型变量名(初始值);如:inta(1);intb(2),c(3);2.3变量与赋值运算程序运行中,允许通过赋值运算符(=)修改变量的值语法:变量=值;如:inta=1,b=2;a=100;//a的值变为100b=a;//b的值变为100由赋值运算符组成的表达式称为赋值表达式赋值表达式加上分号就组成赋值语句2.3变量与赋值运算注意:1)赋值运算符“=”左边必须是一个左值,不能是表达式,如:a=2+3是正确的,而2+3=a是错误的2)如果数据类型不同,系统会将右值自动类型转换成左值的数据类型,如:inta=1.8;//将1.8(double型)自动转换为1(int型),再赋值给变量adoubleb=1;//将1(int型)自动转换1.0(double型),再赋值给变量b3)赋值表达式的值就是左值,如:a=5表达式的值就是a的值5;4)优先级:=的优先级非常低(仅高于逗号运算符),一般都是计算右值后再按照左值的数据类型赋值5)赋值运算符具有右结合性,表达式按由右向左的顺序执行。如:inta,b;a=b+3;//计算b+3的值,然后赋值给aa=b=5;等价于a=(b=5);将整数5赋值给整型变量b,表达式b=5的值变为5,再执行a=5,将5赋值给整型变量a;2.3变量与赋值运算初始化与赋值的区别初始化是指在变量定义的同时赋予初始值,只能做一次赋值是指在程序中修改变量的值,允许做多次,每次覆盖旧值为了防止变量定义后直接使用随机值,建议定义变量时初始化值如:intx;//定义整型变量x,是随机值inty=x+2;

//定义整型变量y并初始化,由于x是随机值,因此y也是随机值好的习惯:intx=0;一个局部范围内(如函数定义)不能重复定义变量如main函数中包括下面的三条语句:inta=5,b=3,c;intc=a+b;//c重复定义doublea;//a重复定义2.4算术运算符与算术表达式算术运算符:+-*/%与数学运算的表达式基本相同,但是要注意:两个整数相除的结果还是整数。如9/5的值是1%是求一个整数除以另一个整数后得到的余数,操作数必须是整数,如9%5的值是4,而9%5.0不合法%的常见算法:求一个整数n的个位数:n%10求一个整数n的十位数:n/10%10求一个整数整除2的余数:n%22.4算术运算符与算术表达式复合赋值运算符:+=-=*=/=%=由一个算术运算符与赋值运算符组合而成首先计算=右边表达式的值,与=左边的变量进行算术运算,然后将结果写入到=左边的变量中。如a+=2等价于a=a+2如a-=2+3等价于a=a–(2+3)复合赋值运算符的优先级与结合性与赋值运算符相同难点:前置++与后置++自增运算符++与自减运算符--:变量的值增1与减1如:a=a+1;可以写为:a++;或++a;前置++与后置++单独作为一条语句无区别用在表达式时有区别:前置++是先将变量的值增1,再将变量的值应用到表达式中后置++是先将变量的值应用到表达式中,再将变量的值增1如程序段:inti=5,j=6,x,y;x=i++;//等价于x=i;i=i+1;y=--j;//等价于j=j–1;y=j;了解:逗号表达式用逗号连接2个表达式,求解顺序是先求表达式1,再求表达式2,……表达式的值是最后一个表达式的值如:a=1,b=2运行后的a的值是1,b的值是2,表达式的值是2赋值运算符的优先级高于逗号运算符如:a=3*5,a*4运行后的a的值是15,表达式的值是60逗号表达式一般用在一条语句中给多个变量赋值,并不一定要关注逗号表达式的值如:inta,b;a=1;b=2;a=3,b=4;2.4算术运算符与算术表达式数学表达式程序中的表达式说明2a+32*a+32和a之间如果没有星号*,会被认为是一个非法的标识符(a+b)/2.0如果写成(a+b)/2,则结果是一个整数,会丢失小数部分a+b=3a=3-b或b=3-a或a+b==3计算机中的=是赋值运算符,左边必须是一个变量,不能是一个表达式如果要判断表达式a+b的值是不是等于3,要使用逻辑运算符==(第三章介绍)((a+b)*2+a*a)/3复杂的表达式中使用小括号()嵌套,不用中括号[];平方或立方一般用星号*直接乘,再多次方一般用pow()函数,如pow(a,5)表示a的5次方表

2‑4数学表达式与程序中的算术表达式2.4算术运算符与算术表达式算术运算时要考虑溢出问题,定义合适的数据类型#include<iostream>usingnamespacestd;intmain(){ intn=60000; intp=n*n; cout<<p; return0;}运行结果是-694967296解决大数问题有多种方法,实际使用中要根据处理数据的范围来采取合适的解决办法如本例用unsigned定义p,运行结果是3600000000大数可以用long型,或longlong型再超过的整数可以用double型再超过的整数用整形数组模拟出整数(竞赛常见题型)2.4算术运算符与算术表达式算术运算时要考虑到异常问题,如除数为0时:增加判断,如果分母为0则不能做除法运算增加判断,如果分母为0,修改分母为1程序出现异常时,会提前中止程序运行,没有办法运行到main函数的最后一句return0;则运行结果会看到返回一个随机值,如--------------------------------Processexitedafter4.118secondswithreturnvalue32212256202.5类型转换数学运算的默认转换规则:char型自动转换为int,float自动转换为double如果运算符两边的操作数的数据类型相同,则结果也相同如果不同,则就高:int->long->double

charfloat赋值运算表达式的默认转换规则:右值自动转换为左值的数据类型如:inta=1.6;则1.6自动类型转换为int型的1,a的值为1强制类型转换:C风格的强制类型转换:(数据类型)表达式

,如

:(int)b%5,将b强制转换为int型值后求除以5的余数C++风格的强制类型转换:数据类型(表达式),如:int(b)%5,将将b强制转换为int型值后求除以5的余数表达式17/5+17.0/5-17%5的值等于多少?44.04.44.8ABCD提交可为此题添加文本、图片、公式等解析,且需将内容全部放在本区域内。正常使用需3.0以上版本17/5是整数除以整数,结果还是整数,317.0/5要进行类型转换,结果为double型,3.417%5是取17除以5的余数,结果为整数,2表达式的值为3+3.4-2=4.4答案解析答案解析单选题1分2.6输入与输出C&C++中不提供内在的输入输出运算符,输入和输出是通过函数或类来实现的C++中提供的cin与cout对象能自动选择最适合的数据类型输入与输出,是最为简单和方便的方法包含文件:#include<iostream>usingnamespacestd;使用C的scanf()与printf()等函数的速度比较快,代码控制简洁包含文件:#include<stdio.h>或:#include<cstdio>usingnamespacestd;2.6输入与输出

2.6.1C++的输出与输入——cout和cincout语句实现输出到屏幕上。语法为:cout<<表达式1<<表达式2<<……;其中:表达式可以是变量、常量、运算符、函数调用等组成的表达式输出时根据值自动选择合适的数据类型输出用一对双引号""包含0或多个字符组成一个字符串常量,输出时原样输出cout后通过<<(流插入运算符)可以连接1个到多个表达式。如intscore=100;要输出“你的分数是:100分”,有下面三种写法:intscore=100;cout<<"你的分数是:";cout<<score;cout<<"分";cout<<"你的分数是:"<<score<<"分";cout<<"你的分数是:"<<score<<"分";2.6输入与输出

2.6.1C++的输出与输入——cout和cinC++中endl与'\n'都表示换行1)'\n'表示换行,是一个字符常量,可以用在C或C++中:如:cout<<“Hello\n”;2)endl是输入输出操作符,应用在C++的<<后:cout<<"Hello"<<endl;endl是指EndOfLine,l是L的小写,不是数字1*区别:std::endl输出一个换行符,并立即刷新缓冲区2.6输入与输出

2.6.1C++的输出与输入——cout和cincin语句实现从键盘接收值保存到变量中。语法的一般形式:cin>>变量1>>变量2>>……>>变量n;例如:inta,b;cin>>a>>b;执行时,屏幕中的光标闪烁,等待用户输入数据>>后面只能是变量,不能出现形如"b="或endl的输出信息好的习惯:先写一条cout语句,然后再书写cin语句。如:cout<<"输入两个整数:";cin>>a>>b;2.6输入与输出

2.6.1C++的输出与输入——cout和cin空格、Tab键或回车键作为分隔符输入回车后会将所有输入值写到缓存区中,然后逐个提取数字保存到对应的变量中如下面代码段:inta,b;cin>>

a

>>

b;charc;cin>>c;输入时若输入3空格4空格5回车,则a的值是3,b的值是4,c的值是5若输入3,4,5回车,则a的值是3,而b和c的值是随机值若输入34a回车,则a的值是3,b的值是4,c的值是字符’a’字符型变量能接收空格c=cin.get();或cin.get(c);从键盘(输入流)获取一个字符,返回的是这个字符2.6输入与输出

C&C++的输出与输入——printf和scanfprintf()函数是格式化输出函数,按规定格式向标准输出设备输出信息。一般格式为:printf("格式化字符串",参数表);常用格式化字符串:%d:int型%ld:long型%f:float型%lf:double型%g:自适应浮点数(小数法:小数点部分没有多余的0,或科学计数法)%c:单个字符%s:字符串如:doubleval=1;printf("quotient=%lf",val);双引号中的普通字符会原样输出,格式字符%lf替换为double型val的值输出quotient=1.0000002.6输入与输出

C&C++的输出与输入——printf和scanfscanf()函数是格式化输入函数,它从标准输入设备(键盘)读取输入的信息。一般格式为:scanf("格式化字符串",地址表);说明:格式字符串与printf相同地址表指格式字符串对应的变量地址,用变量名前面加&表示格式化字符串中如果出现普通字符,则输入时必须原样输入如:inta,b;scanf("%d%d",&a,&b);//输入3空格4回车后a的值为3,b的值为4scanf("%d,%d",&a,&b);//输入3,4回车后a的值为3,b的值为42.6输入与输出

*一个字符的输入与输出——getchar()与putchar()函数getchar()读取一个字符getchar函数无参数,即括号内为空,返回接收的一个字符的ASCII码值如:charch;//定义一个字符型变量chch=getchar();//接收用户输入的一个字符保存到ch中putchar()函数输出一个字符输出一个字符,将要输出的字符写到小括号中。如:putchar('a');//输出常量’a’到屏幕putchar(a);//输出变量a的ASCII对应的字符到屏幕*2.6输入与输出

了解:格式化输出printf中在输出字符串中定义输出格式,如doublegrade=85.5;printf(“%f\n”,grade);输出结果是85.500000doublegrade=85.5;printf(“%.2f\n”,grade);输出结果是85.50,小数点保留2位要在文件头部增加包含iomanip头文件设置浮点数以固定的小数位数显示#include<iostream>#include<iomanip>usingnamespacestd;intmain(){doublegrade=85.5;cout<<setiosflags(ios::fixed)

<<setprecision(2)

<<grade<<endl;return0;}2.7实用知识:数学应用中常用的标准库函数最常用的数学函数pow和sqrtabs和fabs1)使用包含的头文件#include<math.h>2)使用包含在std命名空间中的头文件——只适用于C++#include<cmath>usingnamespacestd;以sqrt为例,函数名称是sqrt(x),其中x是double型值,输出值是double型sqrt(2)sqrt(b)//假定b是一个整型或浮点型变量2.7实用知识:数学应用中常用的标准库函数

#include<iostream>#include<cmath>usingnamespacestd;

intmain(){doublex1,y1,x2,y2;cin>>x1>>y1>>x2>>y2;doubled=sqrt(pow(x1-x2,2)+pow(y1-y2,2));cout<<d;return0;}2.7实用知识:数学应用中常用的标准库函数浮点数取整——ceil()与floor()等函数对浮点数取整的一种办法是利用变量的隐式转换规则,定义一个整型变量保存浮点数,则自动截取整数部分赋值给整型变量。如:doublea=3.6;intn=a;//n的值是3,实

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论