版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、0 西安交通大学西安交通大学 计算机教学实验中心计算机教学实验中心 http:/http:/ 2013.92013.9 第2章 信息的表达与数据运算 C+程序设计教程程序设计教程 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 内容提要 信息如何在程序中表示信息如何在程序中表示 数据类型、常量、变量、数组、字符串数据类型、常量、变量、数组、字符串 数据如何运算数据如何运算 运算符、表达式、赋值运算符、表达式、赋值 各种运算符、运算符的优先级各种运算符、运算符的优先级 混合运算混合运算 不同数据类型、不同运算不同数据类型、不同运算 1 西安交通大学计算机教学实验中心西安交通大学计算
2、机教学实验中心 2.1 信息的表达 信息在程序设计中的表达信息在程序设计中的表达 .1数据类型与常量数据类型与常量 已知距离已知距离6km,行驶时间为,行驶时间为5分钟,计算行驶速度。分钟,计算行驶速度。 数学算式数学算式:6(5.060.0)=72(km/小时小时) cout6/(5.0/60.0); 直接写出的数据是常量,直接写出的数据是常量,6是整数,是整数,60.0是实数是实数 1.基本数据类型基本数据类型与字面常量与字面常量 整型整型 int 5 长整型长整型long int 5L 浮点型浮点型 float 5.0f 双精度型双精度型double 5.0, 1.0E-
3、5 字符字符 char a 字符串字符串 char s 21; string str; “char” 逻辑型逻辑型 bool true false 转意字符转意字符 n, t, , ”, 0 2 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 【例【例2-1】检查不同类型的数据在内存中占的字节数。编】检查不同类型的数据在内存中占的字节数。编 写程序,显示整型、长整型、字符型、逻辑型、浮点型写程序,显示整型、长整型、字符型、逻辑型、浮点型 和双精度型数据的类型名称和所占字节数。和双精度型数据的类型名称和所占字节数。 【问题分析问题分析】sizeof(),它计算括号中的类型、变量或表
4、,它计算括号中的类型、变量或表 达式结果占的字节数达式结果占的字节数。 【算法描述】检查不同类型的数据在内存中占的字节【算法描述】检查不同类型的数据在内存中占的字节 数。数。 输出字符串输出字符串int; 用用sizeof(int)计算整型数占的字节数计算整型数占的字节数n; 输出输出n; 将整型依次改为长整型、字符型、逻辑型、浮点型和将整型依次改为长整型、字符型、逻辑型、浮点型和 双精度型重复双精度型重复 3 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 【源程序】 /*example2-1 Bytes of data type */ /程序注释程序注释 #include /
5、包含基本输入输出库头文件包含基本输入输出库头文件 using namespace std; /使用名字空间使用名字空间 int main() /主函数主函数 int n; /说明用说明用n表示整数表示整数 n=sizeof(short int); /计算类型大小,将所占字节数赋值给计算类型大小,将所占字节数赋值给 符号符号n coutshort int nendl; /显示显示 n=sizeof(int ); /整型整型 coutint nendl; 4 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 n=sizeof(long int); /长整型长整型 coutlong in
6、t nendl; n=sizeof(char); /字符串字符串 coutchar nendl; n=sizeof(bool); /逻辑型(布尔型)逻辑型(布尔型) coutbool nendl; n=sizeof(float); /浮点型浮点型 coutfloat nendl; n=sizeof(double); /双精度型双精度型 coutdouble nendl; return 0;/程序结束,程序结束, 5 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 【例【例2-2】以下列格式使用前面列出的】以下列格式使用前面列出的10种转义字符,看种转义字符,看 得到什么效果。得到
7、什么效果。 cout1abcden#12345n; 其中,字符串常量中开头其中,字符串常量中开头1是序号,以后要依次替换为是序号,以后要依次替换为 2,3,410;中间的;中间的n是转义字符,以后依次换为是转义字符,以后依次换为r,t,f等。等。 【思路扩展】输出【思路扩展】输出9个大小不等的整数,分个大小不等的整数,分3行、行、3列输出列输出 ,要求每列的数据对齐,如何实现?,要求每列的数据对齐,如何实现? 6 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 2.符号符号常量常量 const =; const double PI=3.1415926; const int N=3
8、,M=5; 行末有分号行末有分号 #define #define PAI 3.1415926 行末无分号行末无分号 用符号常量是编程的好习惯用符号常量是编程的好习惯 7 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 4.4.字符和整数的关系字符和整数的关系 a,字符,内存中存,字符,内存中存 的数值是的数值是 97 1,字符,内存中存的数值是,字符,内存中存的数值是49 1, 整数,内存中存的数值是整数,内存中存的数值是 1 cout97; cout(char)97; ?结果怎样?结果怎样? Couta; Cout(int)a; ?结果怎样?结果怎样? Char c; C=57
9、;cout|c|; ?结果怎样?结果怎样? C=9;cout|c|; ?结果怎样?结果怎样? 8 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 .2单项特征的表达单项特征的表达变量变量 1.变量的定义变量的定义 int i,j,k; /定义三个整型变量定义三个整型变量 double radius,area; /定义两个双精度型变量定义两个双精度型变量 char c1,c2;/定义两个字符型变量定义两个字符型变量 bool flag;/定义一个布尔型变量定义一个布尔型变量 2.变量的初始化变量的初始化 int a=5*2; /复制初始化复制初始化 int a(5*
10、2);/直接初始化直接初始化 9 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 变量的赋值和使用变量的赋值和使用 double length,width,area; /变量的定义变量的定义 length=6.0;/变量的赋值变量的赋值 width=3.2;/ 变量的赋值变量的赋值 area=length*width;/ 表达式中使用表达式中使用变量变量,结果赋给变量,结果赋给变量area coutarea;/area在表达式中被使用在表达式中被使用 变量:定义、赋值、使用变量:定义、赋值、使用 10 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 【例2-3】说明
11、下列程序中的错误之处 /*example 2-3 finding error */ /程序注释程序注释 #include /包含基本输入输出库头文件包含基本输入输出库头文件 using namespace std; /使用名字空间使用名字空间 int main() /主函数主函数 double PI=3.1415926; double r; double area; area=PI*r*r; cinr; coutareatareaendl; return 0;/程序结束,程序结束, 11 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 2.1.3 2.1.3 多个相同类型的特征的
12、表示多个相同类型的特征的表示数组数组 一个变量表示一个事物的单个特征一个变量表示一个事物的单个特征 数组表示一组相同类型的特征数组表示一组相同类型的特征 1.向量的表示向量的表示一维数组的定义的使用一维数组的定义的使用 一维数组的定义一维数组的定义 ; const int N=100,M=20;/定义两个整型常量定义两个整型常量N和和M double length30, width30; /定义两个数组定义两个数组length和和width, int scoreN*M; /定义数组定义数组score,大小用常量表达式表示,大小用常量表达式表示,实实 际大小为际大小为200 double ave
13、rageN;/定义数组定义数组average,大小用符号常量表示,大小用符号常量表示 12 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 一维数组的使用一维数组的使用 数组中的元素,下标,下标越界数组中的元素,下标,下标越界 int x30;/定义数组定义数组 int sum;/定义变量定义变量 x0=1;/将数组将数组x的第的第1个元素设置为个元素设置为1 x1=3;/将数组将数组x的第的第2个元素设置为个元素设置为3 x2=5;/将数组将数组x的第的第3个元素设置为个元素设置为5 sum=x0+x1+x2;/对数组的前三个元素求和对数组的前三个元素求和 coutsumx0
14、x1x2;/输入数组的前三个元素输入数组的前三个元素 sum=x0+x1+x2;/再次对数组的前三个元素求和再次对数组的前三个元素求和 coutx0 “ ”x1 “ ”x2 “n”;/输出三个元素,用空格隔开输出三个元素,用空格隔开 ,用,用n控制换行,与控制换行,与endl效果相同效果相同 coutsumlength;/错误,数组不能整体输入错误,数组不能整体输入 cinlength10;/错误,下标超界。使用错误,下标超界。使用length-1也是错也是错 误的误的 width=length;/错误,数组不能整体赋值错误,数组不能整体赋值 coutlength;/错误,数组不能整体输出错误
15、,数组不能整体输出 14 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 一维数组的初始化一维数组的初始化 =, , .; double a=11.2,b=21.7; / 定义两个双精度变量并初始化定义两个双精度变量并初始化 double average30=21.0, 2012.7, 7.5+2.3,a*b; /定义数组并定义数组并 初始化初始化,数据项有常量和表达式数据项有常量和表达式 double room=401,402,403,404,405,606,407,408,409,411; 一维数组在内存中的存储一维数组在内存中的存储 按按2行存储(行优先)行存储(行优先)
16、15 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 2 2矩阵的表示矩阵的表示二维数组二维数组 16 4510 318 672 A 用一维数组表示矩阵?用一维数组表示矩阵? int M9=2,7,6,8,1,3,10,5,4;int M9=2,7,6,8,1,3,10,5,4; MiMi* *3+j=Aij;3+j=Aij; MiMi* *N+j=Aij,NN+j=Aij,N为矩阵为矩阵A A的列数的列数 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 二维数组二维数组 ; int A55; /定义定义5行行*5列的二维数组,实际只用了列的二维数组,实际只用了3行
17、行3列列 int sum; A00=2;/为第为第1行第行第1列元素赋值列元素赋值 A01=7;/为第为第1行第行第2列元素赋值列元素赋值 A02=6;/为第为第1行第行第3列元素赋值列元素赋值 A20=10;/为第为第3行第行第1列元素赋值列元素赋值 A21=5;/为第为第3行第行第2列元素赋值列元素赋值 A22=4;/为第为第3行第行第3列元素赋值列元素赋值 sum=A00+ A11+ A22; /对角元素求和对角元素求和 coutA00 A11 A22 sumendl; 17 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 二维数组初始化二维数组初始化 =,.; int a
18、=9; int B33=a+1,a+2,a+3,a+4,a+5,a+6,a+7,a+8,a+9;/ int A54=2,7,6,8,1,3,10,5,4; int A3=2,7,6,8,1,3,10,5,4; int A33=2,7,6,8,1,3,10,5,4; int A33=2,7,8,1,10,5; 18 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 3.3.多维数组多维数组 int A543;/定义三维数组定义三维数组 double B3456;/定义定义4维数组维数组 19 思考题思考题 什么问题的表示用数组更方便什么问题的表示用数组更方便 西安交通大学计算机教学实
19、验中心西安交通大学计算机教学实验中心 2.1.4 2.1.4 文字信息的表达文字信息的表达字符串字符串 1.1.用字符数组表示字符串用字符数组表示字符串 【例【例2-42-4】用户从键盘输入一个四个小写字母组成的】用户从键盘输入一个四个小写字母组成的 英文单词,将其转换为大写,然后显示到屏幕上。英文单词,将其转换为大写,然后显示到屏幕上。 【算法】将长度为【算法】将长度为4 4的小写字母的单词转换为大写。的小写字母的单词转换为大写。 用字符数组用字符数组str表示字符串。表示字符串。 输入字符串输入字符串str。 将将str的每个元素减去的每个元素减去32。 输出字符串。输出字符串。 20 西
20、安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 【源程序】将长度为4的小写字母的单词转 换为大写 #include /包含需要的头文件包含需要的头文件 using namespace std;/名字空间名字空间 int main() /主函数主函数 char str5; /定义字符数组用于存放字符串定义字符数组用于存放字符串 const int c=32;/定义常量,表示大小写字母的定义常量,表示大小写字母的ASCII值的差值的差 cinstr;/输入字符串输入字符串 str0=str0-c;/转换第转换第1个字母个字母 str1=str1-c;/转换第转换第2个字母个字母 str
21、2=str2-c;/转换第转换第3个字母个字母 str3=str3-c;/转换第转换第4个字母个字母 coutstrendl;/输出字符串输出字符串 return 0; 21 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 字符、字符数组在内存中的存储字符、字符数组在内存中的存储 字符、字符数组、字符串的联系与区别字符、字符数组、字符串的联系与区别 用字符数组存储的字符串可以整体输入、整体输入,但用字符数组存储的字符串可以整体输入、整体输入,但 不能整体赋值不能整体赋值 22 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 2.2.用用stringstring类型的
22、类型的“变量变量”表示字符串表示字符串 包含头文件包含头文件string string ,.; string text1,text2; /定义两个对象定义两个对象 text1=Sluice gates at Three Gorges Dam opened to discharge water.;/ text2=07-07-2012 09:04 BJT;/使用使用“=”号为对象赋值号为对象赋值 string text3(Heavy rains across southern China are pushing water levels at the Three Gorges Dam beyond
23、 the flood level limit.); 23 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 使用成员函数对字符串进行操作使用成员函数对字符串进行操作 .(); 【例【例2-52-5】使用】使用stringstring进行字符串的操作。进行字符串的操作。 设有两个句子:设有两个句子: Heavy rains are pushing water levels beyond the limit. Sluice gates at Three Gorges Dam opened to discharge water. 开始由两个符号表示,请将它们合并为一段文字,然后开始由两个
24、符号表示,请将它们合并为一段文字,然后 查找其中的查找其中的“Heavy”替换为替换为“Strong”,最后显示处,最后显示处 理过的文本。理过的文本。 24 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 【源程序】 #include /包含需要的头文件包含需要的头文件 #include /使用使用string类需要包含头文件类需要包含头文件string using namespace std;/名字空间名字空间 int main()/主函数主函数 /定义并初始化字符串对象定义并初始化字符串对象text1 string text1(Heavy rains are pushing
25、 water levels beyond the limit.); string text2,text3; /定义但没有初始化话对象定义但没有初始化话对象text2,text3 int k;/定义整型变量定义整型变量k 25 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 /为对象为对象text2赋值赋值 text2=Sluice gates at Three Gorges Dam opened to discharge water.; text3=text1+text2;/使用使用“+”运算合并两个字符串,并赋值给运算合并两个字符串,并赋值给text3 k=text3.find
26、(“Heavy”);/在在text3中查找中查找“Heavy”,将得到的位,将得到的位 置赋给置赋给k /将将text3中中k开始的开始的sizeof(Heavy)-1)个字符删除个字符删除 /sizeof(Heavy)是计算是计算Heavy占的字节数,为占的字节数,为6,减,减1是字符个数是字符个数 text3.erase (k, sizeof(Heavy)-1);/删除删除Heavy text3.insert (k,Strong);/将在将在text3中位置中位置k处插入字符串处插入字符串 String couttext3(大于)(大于) =(大于等于)(大于等于) (小于)(小于) 3,
27、 2+5c, ab 表达式的值表达式的值 bool型,值型,值true,flase true, false 与与1, 0,非零,其他表达式值的关系,非零,其他表达式值的关系 28 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 .3逻辑运算符和表达式逻辑运算符和表达式 /名字空间名字空间 int main()/主函数主函数 int year;/定义整型变量表示年份定义整型变量表示年份 bool result; /定义逻辑变量表示判断结果定义逻辑变量表示判断结果 coutyear;/输入年份输入年份 result=(year%4=0 /计算逻计算逻 辑表达式辑表达式
28、,结果赋给逻辑变量结果赋给逻辑变量result cout“闰年判断结果闰年判断结果: ”resultendl;/打印结果,打印结果,result为为 true显示显示1, /result为为false显示显示0 return 0; 30 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 【思路扩展】【思路扩展】 (1)能根据运行结果判断两个年份是否闰年吗?)能根据运行结果判断两个年份是否闰年吗? (2)看程序的输出行,其中输出的是)看程序的输出行,其中输出的是result这个变量,这这个变量,这 个变量的值是逻辑值,个变量的值是逻辑值,true或或false,而运行结果却是,而运行
29、结果却是1或或0 。事实上,条件、逻辑表达式的计算结果实际为一个整。事实上,条件、逻辑表达式的计算结果实际为一个整 数值,或者为数值,或者为1或者为或者为0。反过来,整数。反过来,整数0可以表示可以表示fasle, 非非0可以表示!可以表示!false即即true。这也是信息的表示问题,是。这也是信息的表示问题,是 约定。约定。 (3)编程判断用户输入的数是否满足)编程判断用户输入的数是否满足 ,是则显示,是则显示1,不是,不是 则显示则显示0。 31 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 .4自增运算符和自减运算符自增运算符和自减运算符 +, - 单目
30、运算单目运算 int i; +i; i+; 【例【例2-82-8】请分析下列程序每个语句执行后】请分析下列程序每个语句执行后i,ji,j的值的值 是多少?是多少? int i=0,j=0; j=+i ; j=i+ ; 32 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 .5位运算符和位运算表达式位运算符和位运算表达式 1.1.按位与按位与 int x=11,y=7,z; z=x 11的二进制表示:的二进制表示:00000000 00000000 00000000 00001011 7的二进制表示:的二进制表示: 00000000 00000000 0000000
31、0 00000111 00000000 00000000 00000000 00001011 z=x|y ; 00000000 00000000 00000000 00001011 | 00000000 00000000 00000000 00000111 - 00000000 00000000 00000000 00001111 则,则,z=x|y的结果的十进制表示为的结果的十进制表示为15。 按位或运算可以方便地将一个数的某些二进制位设置按位或运算可以方便地将一个数的某些二进制位设置 为为1 1。如果两个数代表两个集合,则。如果两个数代表两个集合,则“或或”运算相当运算相当 于它们的于它们
32、的“并并”运算运算 35 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 3.3.按位异或按位异或 int x=11,y=7,z; z=xy ; 00000000 00000000 00000000 00001011 00000000 00000000 00000000 00000111 - 00000000 00000000 00000000 00001100 则,则,z=xy的结果十进制表示为的结果十进制表示为12。 在同一数据上两次异或一个值,结果变回原来的值在同一数据上两次异或一个值,结果变回原来的值 36 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 4
33、.4.按位取反按位取反 int x=11,z; z=x ; 00000000 00000000 00000000 00001011 - z 11111111 11111111 11111111 11110100 37 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 5.5.左移位运算左移位运算 int x=179,z; z=x4; 00000000 00000000 00000000 10110011 3; 00000000 00000000 00000000 10110011 3 00000000 00000000 00000000 00010110 结果结果z的十进制形式为的
34、十进制形式为22。一个数每右移一位,相当于将。一个数每右移一位,相当于将 这个数除以这个数除以2。 右移运算常和按位与运算一起使用,用于从一个数右移运算常和按位与运算一起使用,用于从一个数 中分离出某些二进制位。例如,取中分离出某些二进制位。例如,取x x的第三个字节,的第三个字节, 可以将其右移八位,和可以将其右移八位,和0 x00FF0 x00FF做做“与与”运算。运算。 39 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 【例【例2-92-9】判断文件属性的模拟。用户从键盘输入】判断文件属性的模拟。用户从键盘输入 0,630,63内的整数,表示一个文件的属性,从低位开内的
35、整数,表示一个文件的属性,从低位开 始,它的每个二进制位一次表示只读位、隐藏位、始,它的每个二进制位一次表示只读位、隐藏位、 系统位、卷标位、子目录位、归档位。请判断该文系统位、卷标位、子目录位、归档位。请判断该文 件具有哪些属性,不具有哪些属性。有用件具有哪些属性,不具有哪些属性。有用1 1表示,没表示,没 有用有用0 0表示。表示。 40 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 【源程序】 /例例2-9判断文件属性的模拟判断文件属性的模拟 #include /包含需要的头文件包含需要的头文件 using namespace std;/名字空间名字空间 int main
36、()/主函数主函数 int attribute;/定义整型变量,表示属性字节的值定义整型变量,表示属性字节的值 int a0=1,a1=2,a2=4,a3=8,a4=16,a5=32;/定义定义6个变量个变量 并初始化,并初始化,/表示各属性位的位权表示各属性位的位权 cinattribute;/输入属性字节的十进制值输入属性字节的十进制值 41 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 /与与运算保留了相应位的值。运算保留了相应位的值。=运算比较是否与该位为运算比较是否与该位为1 时的值相等。时的值相等。 /相等表示该属性有效,结果为相等表示该属性有效,结果为true,显
37、示效果为,显示效果为1; /不相等表示该位无效,结果为不相等表示该位无效,结果为fasle,显示效果为,显示效果为0。 cout只读只读: (attribute cout隐藏隐藏: (attribute cout系统系统: (attribute cout卷标卷标: (attribute cout目录目录: (attribute cout归档归档: (attribute coutendl; return 0; 42 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 【程序验证】【程序验证】 题目要求输入的数在题目要求输入的数在0-63之间,但程序中并没有体现这一之间,但程序中并没有体
38、现这一 限制。如果输入限制。如果输入167,也能输出结果,这一结果是怎么计,也能输出结果,这一结果是怎么计 算出来的呢?如果输入负数呢?怎么解决这一问题呢?算出来的呢?如果输入负数呢?怎么解决这一问题呢? 怎样让用户知道输入是否正确呢?怎样让用户知道输入是否正确呢? 【思路扩展】【思路扩展】 一个变量表示一个数或字符。一个位可以表示两种状态事一个变量表示一个数或字符。一个位可以表示两种状态事 物的一种状态,例如开关的物的一种状态,例如开关的“开开”或或“关关”状态。如果状态。如果 用一位表示一个开关,控制一盏灯,那么一个字节就可用一位表示一个开关,控制一盏灯,那么一个字节就可 以控制以控制8盏
39、等,一个整型变量就可以控制盏等,一个整型变量就可以控制32盏等。用多个盏等。用多个 整型变量就可以控制更多的等。请同学们想一想,位运整型变量就可以控制更多的等。请同学们想一想,位运 算还可以用在什么地方呢?算还可以用在什么地方呢? 43 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 7. 7. 复合位运算符复合位运算符 44 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 .6三目条件运算符三目条件运算符 45 . 0, 0 , 0, 1 )( t t ty ? : double t ; int y ; y= ( t=0 ? 1 : 0 ); 西安
40、交通大学计算机教学实验中心西安交通大学计算机教学实验中心 【例【例2-102-10】 100以内整数加法练习系统。编写程序,自动产生两个小以内整数加法练习系统。编写程序,自动产生两个小 于于100的整数,显示给用户,并让用户输入它们的和。如的整数,显示给用户,并让用户输入它们的和。如 果用户计算正确,显示果用户计算正确,显示“正确,祝贺!正确,祝贺!”,如果不正确,如果不正确 ,显示,显示“错误,加油啊错误,加油啊”。 ?自动产生小于?自动产生小于100100的整数?的整数? 46 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 【源程序】 #include/包含头文件包含头文件
41、cout,cin需要需要 #include/包含头文件包含头文件,rand()需要需要 using namespace std;/名字空间名字空间 int main()/主函数主函数 int a,b,c;/分别表示两个数及它们的和分别表示两个数及它们的和 int input;/存放用户输入的和存放用户输入的和 char right=正确,祝贺!正确,祝贺!;/保存字符串保存字符串 char wrong=错误,加油啊!错误,加油啊!;/保存字符串保存字符串 a=rand()%100;/产生小于产生小于100的随机数的随机数 b=rand()%100;/产生小于产生小于100的随机数的随机数 47
42、 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 c=a+b;/计算和计算和 couta+binput;/用户输入的和用户输入的和 cout(input=c? right:wrong);/根据正确与否显示不同的根据正确与否显示不同的 信息信息 input=c? coutright:coutwrong;/ coutendl; return 0; ?随机数,伪随机数,随机数种子随机数,伪随机数,随机数种子 #include srand(time(0); rand(); 48 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 2.2.7 2.2.7 运算符的优先级运算符的优
43、先级 小括号、下标、访问对象小括号、下标、访问对象 单目运算单目运算 算术运算算术运算 比较运算比较运算 逻辑运算逻辑运算 ?号运算?号运算 符合运算符合运算 表表2-32-3 结合方向结合方向 好习惯:运用小括号好习惯:运用小括号 49 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 .8不同类型数据的混合运算不同类型数据的混合运算 charintunsignedlongunsigned longfloatdouble 相同类型数据的运算相同类型数据的运算 强制类型转换强制类型转换 int a ;char b; a=65;b=a; cout(char)aint(
44、b); 50 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 2.3程序设计实例 【例【例2-112-11】海伦公式计算三角形的面积。用户输入】海伦公式计算三角形的面积。用户输入 三角形的三条边长三角形的三条边长a,b,ca,b,c,用海伦公式计算三角形的,用海伦公式计算三角形的 面积。面积。 其中,其中, , ,三边长可能为实数。三边长可能为实数。 提示:?提示:? 51 )()(csbsassA 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 【算法描述】海伦公式计算三角形的面积【算法描述】海伦公式计算三角形的面积 用用a,b,c表示三角形的三个边长。表示三角形
45、的三个边长。 输入输入a,b,c三个数;三个数; 计算计算s=(a+b+c)/2; 计算面积计算面积 ; 输入面积输入面积A。 52 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 【源程序】 #include /包含基本输入输出库头文件包含基本输入输出库头文件 #include using namespace std; /使用名字空间使用名字空间 int main() /主函数主函数 double a,b,c; /定义双精度变量定义双精度变量 double s,A; coutabc;/输入输入 s=(a+b+c)/2.0;/计算计算s A=sqrt(s*(s-a)*(s-b)*
46、(s-c);/计算面积计算面积 coutThe area is Aendl;/打印面积打印面积 return 0;/程序结束,程序结束, 53 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 【思考题思考题】 计算计算s的右边的表达式注意什么问题,还可以怎样书写的右边的表达式注意什么问题,还可以怎样书写 ? 程序中怎么有两个程序中怎么有两个a(一个大写(一个大写A,一个小写,一个小写a)呢?)呢? 54 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 【例【例2-122-12】构造一个】构造一个5 5位数的反序数。例如,用户输位数的反序数。例如,用户输 入入1234
47、512345,构造出,构造出5432154321并输出。并输出。 【算法描述】构造【算法描述】构造5 5位的反序数。位的反序数。 用用n表示输入的原表示输入的原5位数,用位数,用m表示构造出的新表示构造出的新5位数。位数。 输入五位数输入五位数n; 依次分离出个位、十位、百位、千位和万位,分别用依次分离出个位、十位、百位、千位和万位,分别用 a,b,c,d,e表示;表示; 用式子用式子(a*10+b)*10+c)*10+d)*10+e构造新的五位整数;构造新的五位整数; 输出新数。输出新数。 55 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 【源程序】 #include /包
48、含基本输入输出库头文件包含基本输入输出库头文件 #include using namespace std; /使用名字空间使用名字空间 int main() /主函数主函数 int n,m; /n,m表示输入的数和反序后的数表示输入的数和反序后的数 char a,b,c,d,e; /分别表示原数的个、十、百、千、万位分别表示原数的个、十、百、千、万位 coutn; /输入一个五位整数输入一个五位整数 a=n%10; /分离个位分离个位 n=n/10; b=n%10;/分离个十位分离个十位 56 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 n=n/10; c=n%10;/分离百
49、位分离百位 n=n/10; d=n%10;/分离千位分离千位 n=n/10; e=n%10;/分离万位分离万位 m= (a*10+b)*10+c)*10+d)*10+e; /构造新数构造新数 coutThe inversed nunber is mendl; /输出输出 return 0; /程序结束,程序结束, 57 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 【思路扩展】【思路扩展】 (1)e和最后的和最后的n有什么关系?最后的求余有必要吗?有什么关系?最后的求余有必要吗? (2)本例中,不用)本例中,不用n=n/10;这种方式,分离十位还可以写这种方式,分离十位还可以写
50、 成成b=n/10%10,类似地,分离其他位呢?类似地,分离其他位呢? (3)有兴趣的同学可以考虑:用户任意输入一个数,构)有兴趣的同学可以考虑:用户任意输入一个数,构 造其反序数并输出。造其反序数并输出。 (4)如果一个数的反序数与它相等,那么这就是一个回)如果一个数的反序数与它相等,那么这就是一个回 文数。修改上面的程序,判断用户输入的数是不是回文文数。修改上面的程序,判断用户输入的数是不是回文 数。数。 58 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 【例【例2-132-13】一位数的整数形式和】一位数的整数形式和ASCIIASCII形式的转换。形式的转换。 编写程序
51、,用户输入一位数,存入整型变量,然后编写程序,用户输入一位数,存入整型变量,然后 将其转换为字符存入字符型变量,打印字符变量及将其转换为字符存入字符型变量,打印字符变量及 其代表字符的其代表字符的ASCIIASCII值。值。 整型转换为字符型是什么意思整型转换为字符型是什么意思? 1 整型整型1, 字符型字符型49 用途:例如输入一句话用途:例如输入一句话“西安城墙景区门票目前为西安城墙景区门票目前为40元元 ,拟上涨至,拟上涨至55元,问上涨的百分比是多少?元,问上涨的百分比是多少?” 请自动计算请自动计算 注意,在句子中注意,在句子中“4040”,“5050”是字符型的是字符型的 59 西
52、安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 【源程序】 #include /包含基本输入输出库头文件包含基本输入输出库头文件 using namespace std; /使用名字空间使用名字空间 int main() /主函数主函数 int n;/声明整型变量声明整型变量 char c;/声明字符型变量声明字符型变量 coutn;/输入输入 c=n+0;/数字转换为字符数字转换为字符 coutc ASCII (int)cendl; /以字符和数值形式打印以字符和数值形式打印 return 0; /程序结束,程序结束, 60 西安交通大学计算机教学实验中心西安交通大学计算机教学实
53、验中心 【思考题】【思考题】 (1)编写程序,将数字字符转换为数值(将一个字符型)编写程序,将数字字符转换为数值(将一个字符型 的数字,转换为一个整型的数字)。的数字,转换为一个整型的数字)。 (2)使用集成环境的跟踪功能,观察)使用集成环境的跟踪功能,观察int和和char型数据在型数据在 内存中的值。内存中的值。 61 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 2.3.4 2.3.4 启闭指定设备启闭指定设备 【例【例2-142-14】大型超市中,在顾客不是很多时,收银】大型超市中,在顾客不是很多时,收银 台经常是隔一个打开一个。设这些收银台除操作员台经常是隔一个打开一
54、个。设这些收银台除操作员 密码外,还由控制室统一控制,只有控制室打开该密码外,还由控制室统一控制,只有控制室打开该 设备后操作员才能使用。设每个设备用一个二进制设备后操作员才能使用。设每个设备用一个二进制 位表示,位表示,1 1表示开启,表示开启,0 0表示关闭。用户输入一个无表示关闭。用户输入一个无 符号整数表示初始的状态,编写程序分别将这个数符号整数表示初始的状态,编写程序分别将这个数 的二进制的奇数位置成的二进制的奇数位置成0 0和置成和置成1 1(从最低位开始为(从最低位开始为 第第1 1位),以十六进制形式打印设置后的两个数。位),以十六进制形式打印设置后的两个数。 62 西安交通大
55、学计算机教学实验中心西安交通大学计算机教学实验中心 【算法描述】【算法描述】 输入无符号整数输入无符号整数a 设奇数位为设奇数位为0的数为的数为odd0=0 x55555555, 奇数位为奇数位为1的数为的数为 odd1=0 xAAAAAAA 将将a分别与分别与odd0,odd1做做“与与”运算和运算和“或或”运算,结果运算,结果 用用a0,a1表示;表示; 输出输出a0,a1的十六进制形式。的十六进制形式。 63 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 #include /包含基本输入输出库头文件包含基本输入输出库头文件 using namespace std; /使用
56、名字空间使用名字空间 int main() /主函数主函数 unsigned int a;/声明无符号整型变量,保存原数声明无符号整型变量,保存原数 unsigned int odd0=0 x55555555;/奇数位奇数位0 5=0101B unsigned int odd1=0 xAAAAAAAA;/奇数位奇数位1 A=1010B unsigned int a0,a1;/声明无符号整型变量,保存设置后的数声明无符号整型变量,保存设置后的数 couta;/输入输入 a0=a /奇数位置奇数位置0 a1=a | odd1;/奇数位置奇数位置1 coutodd digit 0-hexa0endl
57、;/十六进制十六进制,奇数奇数位位置置0 coutodd digit 1-hexa1endl;/十六进制十六进制,奇数奇数位位置置1 return 0; /程序结束,程序结束, 64 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 【思考题】编写程序保留一个数的第【思考题】编写程序保留一个数的第3 3个字节(左起个字节(左起 )。)。 65 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 66 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 67 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 68 西安交通大学计算机教学实验中心西安交通大学计算机教学实验中心 2.3.5 2.3.5 加密解密加密解密 【例【例2-152-15】一段意义明确的文
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026西藏阿里地区革吉县人力资源和社会保障局(医疗保障局)补聘基层劳动就业社会保障公共服务平台工作人员1人备考题库附完整答案详解【有一套】
- 2026新疆和田墨玉县鑫玉经济开发有限责任公司招聘8人备考题库附完整答案详解【易错题】
- 初中英语听力中现在完成时信息筛选与听力策略构建课题报告教学研究课题报告
- 2026黑龙江哈尔滨工业大学建筑与设计学院建筑数字化设计与技术研究所招聘人工智能工程师备考题库【达标题】附答案详解
- 2026山东济南市妇女儿童活动中心幼儿园(领秀公馆园)招聘实习生备考题库【必考】附答案详解
- 2026河北邯郸幼儿师范高等专科学校春季博硕人才选聘26人备考题库(历年真题)附答案详解
- 2026北京大学教育学院全球人才招聘备考题库【易错题】附答案详解
- 2026山东青岛海发国际贸易有限公司招聘10人备考题库带答案详解(夺分金卷)
- 2026安徽池州市直学校招聘教师14人备考题库附完整答案详解(有一套)
- 2025-2026山东临沂市鲁南技师学院第二学期临时代课教师招聘1人备考题库(二)及参考答案详解【模拟题】
- 学校心理健康教育整改措施
- GB/T 15934-2024电器附件电线组件和互连电线组件
- 2019年广西桂林市中考数学试卷
- 三月的桃花心中开混声合唱谱
- 智慧路灯综合解决方案
- 《大学生心理健康》教案-自我意识课件
- 500字作文标准稿纸A4打印模板-直接打印
- 生物化学英文版课件:Chapter 6 Enzyme catalysis
- 23J916-1:住宅排气道(一)
- 慢性病健康管理规范
- 检验检测机构质量手册程序文件质量记录合集(依据2023年版评审准则)
评论
0/150
提交评论