《第2章C简单程序设计》由会员分享,可在线阅读,更多相关《第2章C简单程序设计(45页珍藏版)》请在金锄头文库上搜索。
1、信工学院信工学院中国地质大学(北京)中国地质大学(北京)1 1C+C+语言程序设计基础语言程序设计基础拐涝焚鸡槽项钡赶牺粥膜职挣戏伺苍河峭姚稻眠布倦钥斯减鸽铣裙燃效踞第2章C简单程序设计第2章C简单程序设计2 2第第2 2章章 C+ C+简单程序设计简单程序设计J2.1 2.1 C+C+语言概述语言概述J2.2 2.2 基本数据类型和表达式基本数据类型和表达式J2.3 2.3 数据的输入与输出数据的输入与输出J2.4 2.4 算法的基本控制结构算法的基本控制结构J2.5 2.5 自定义数据类型自定义数据类型聘菩慑射臆佛洲携咨粕舶教团屹吗们寂瞳盖铁荣敝曲国了悸镍扰元畏窑孩第2章C简单程序设计第2
2、章C简单程序设计3 32.1 C+2.1 C+语言概述语言概述JC C+的产生的产生C2020世纪世纪世纪世纪6060年代英国剑桥大学学者开发年代英国剑桥大学学者开发年代英国剑桥大学学者开发年代英国剑桥大学学者开发BCPLBCPLC19701970年美国年美国年美国年美国BellBell实验室提出实验室提出实验室提出实验室提出B B语言语言语言语言C19721972年年年年BellBell实验室对实验室对实验室对实验室对B B语言改进推出语言改进推出语言改进推出语言改进推出C C语言语言语言语言C19801980年年年年AT&TAT&T贝尔实验室的贝尔实验室的贝尔实验室的贝尔实验室的Bjarn
3、e Bjarne StroustrupStroustrup博士创建博士创建博士创建博士创建C C+语言语言语言语言店抛遭兆乌型佃译恩丁怒耘下帆商匙舰另擂辩匿弱串函果铲痈隆盈姓捻栈第2章C简单程序设计第2章C简单程序设计4 4-4-C+C+的历史的历史J几十年来,许多编程语言如流星般闪过,几十年来,许多编程语言如流星般闪过,而而C+C+一直占据着世界顶级编程语言的宝一直占据着世界顶级编程语言的宝座。针对座。针对PCPC机、智能手机和机、智能手机和MP3MP3等嵌入式等嵌入式设备,以及其它众多计算机环境,设备,以及其它众多计算机环境,C+C+语语言始终是不错的选择。言始终是不错的选择。JC+C+的
4、标准不断更新的标准不断更新C目前使用的是目前使用的是目前使用的是目前使用的是ANSI/ISO C+ANSI/ISO C+(ISO/IEC ISO/IEC 1482:20031482:2003),),),),20032003年发布年发布年发布年发布C下一个标准为下一个标准为下一个标准为下一个标准为C+11C+11,20112011年年年年1010月发布月发布月发布月发布亩传溅垦忧妙毗很触余刊霜派怨淹光峡眶爱斜钦参无卖颖滤崭勇泞契惮是第2章C简单程序设计第2章C简单程序设计5 52.1.3 C+2.1.3 C+程序实例程序实例/*/*第一个第一个C+C+程序程序作者:作者:CPPCPP版本:版本:
5、1.0*/1.0*/#include#include /文件包含命令文件包含命令using namespace using namespace std;std;intint main() main() /主函数头主函数头 /主函数体主函数体 cout coutHello!Hello!endl; endl; /输出数据输出数据 coutcoutWelcome to C+!Welcome to C+!endl; endl; returnreturn 0 0; 峨贝饶塞广筹创爵证距标斡粒尽器蓖虞见裙恍莆苟鼎豪枢摘威磕毕献辟拷第2章C简单程序设计第2章C简单程序设计6 626个个小写字母小写字母 ab
6、cdefghijklmnopqrstuvwxyz 26个个大写字母大写字母 ABCDEFGHIJKLMNOPQRSTUVWXYZ 10个个数字字符数字字符 0 1 2 3 4 5 6 7 8 9 特殊符号特殊符号 ! # % & * _ + = - / “ ; . , : ? () 2.1.4 2.1.4 字符集字符集售仗悠衡悟从朴棵息锦柞王葫宅免名橱朴店梁栏襟羽严辞息合笺婴根庐抚第2章C简单程序设计第2章C简单程序设计7 72.1.5 2.1.5 词法记号词法记号J关键字关键字关键字关键字( ( ( (保留字保留字保留字保留字) ) ) ):已被:已被:已被:已被C+C+C+C+语言本身使用
7、,不能语言本身使用,不能语言本身使用,不能语言本身使用,不能作为其它用途使用的单词,作为其它用途使用的单词,作为其它用途使用的单词,作为其它用途使用的单词,P22P22P22P22J标识符标识符标识符标识符:CC由字母、数字、下划线组成且由字母或下划线开头由字母、数字、下划线组成且由字母或下划线开头由字母、数字、下划线组成且由字母或下划线开头由字母、数字、下划线组成且由字母或下划线开头的字符串。的字符串。的字符串。的字符串。CC标识符是区分大小字母的。标识符是区分大小字母的。标识符是区分大小字母的。标识符是区分大小字母的。CC标识符的有效长度视不同系统而定。标识符的有效长度视不同系统而定。标识
8、符的有效长度视不同系统而定。标识符的有效长度视不同系统而定。CC不能使用不能使用不能使用不能使用C+C+语言的关键字。语言的关键字。语言的关键字。语言的关键字。判断下列标识符是否合法:判断下列标识符是否合法:ResultResult,List-2List-2,_first2_first2, first_& first_&,2first2first慨萝诛哈僻面瑞扒词皑犹特闰嫂菩泄焙苗砍呕鹅敛柏偿半眩淡而榴暴樊困第2章C简单程序设计第2章C简单程序设计8 82.2 2.2 基本数据类型和表达式基本数据类型和表达式逻辑类型逻辑类型bool整数类型整数类型浮点类型浮点类型空类型空类型void char
9、 short int long float doublelong double基基本本数数据据类类型型用于函数和指针取值只有true和false signed有符号 unsigned无符号悍肆竟摈藻冤耙恰钨碴岁傣凑家妒常磕蚤隅绥析辞抚增虎截草课搓鬼窒吞第2章C简单程序设计第2章C简单程序设计9 92.2.2 2.2.2 常量常量J在程序运行期间其值不发生变化的数据。在程序运行期间其值不发生变化的数据。在程序运行期间其值不发生变化的数据。在程序运行期间其值不发生变化的数据。J1 1 1 1、整型常量整型常量整型常量整型常量CC十进制整数:十进制整数:十进制整数:十进制整数:如如如如123123,
10、0 0,-456-456CC八进制整数(以八进制整数(以八进制整数(以八进制整数(以0 0开头)开头)开头)开头):如如如如012012CC十六进制整数(以十六进制整数(以十六进制整数(以十六进制整数(以0X0X开头):开头):开头):开头):如如如如0x120x12CC长整型用长整型用长整型用长整型用L L作后缀;作后缀;作后缀;作后缀;CC无无无无符号型用符号型用符号型用符号型用U U作后缀;作后缀;作后缀;作后缀;CC无符号长整型用无符号长整型用无符号长整型用无符号长整型用ULUL或或或或LULU均可。均可。均可。均可。CC练习题:在练习题:在练习题:在练习题:在C+C+语言中,语言中,
11、语言中,语言中,029029是一个是一个是一个是一个 。A)A)八进制数;八进制数;八进制数;八进制数;B)B)十进制数;十进制数;十进制数;十进制数;C)C)十六进制数;十六进制数;十六进制数;十六进制数;D)D)非法数非法数非法数非法数 一般表示无符号数据审梯软储钥拌输耍势函葱宙浊诗尿泻掇瘟竟继跃淑绍衅炒对关疆渣时二忙第2章C简单程序设计第2章C简单程序设计10102 2、实型常量、实型常量J只有十进制表示只有十进制表示只有十进制表示只有十进制表示CC一般形式实数一般形式实数一般形式实数一般形式实数整数和小数部分可省其一,但不能都省整数和小数部分可省其一,但不能都省整数和小数部分可省其一,
12、但不能都省整数和小数部分可省其一,但不能都省如如如如1.31.3,.13.13,13.13.,0.00.0CC指数形式实数指数形式实数指数形式实数指数形式实数由尾数、指数和字母由尾数、指数和字母由尾数、指数和字母由尾数、指数和字母e e组成组成组成组成E E前后都要有数字,且前后都要有数字,且前后都要有数字,且前后都要有数字,且E E后的指数必须为整数后的指数必须为整数后的指数必须为整数后的指数必须为整数判断:判断:判断:判断:e2e2,2.1e-52.1e-5,2.1e3.52.1e3.5,-5.1e2-5.1e2,e eCC浮点型常量缺省为浮点型常量缺省为浮点型常量缺省为浮点型常量缺省为d
13、oubledouble,加后缀,加后缀,加后缀,加后缀f f表示表示表示表示floatfloat,加,加,加,加l l表示表示表示表示long doublelong double逆恰樟势措轨汛绰雀敖烁弊架琅乾祸汹辊表妈砰滤皆间揖砌妆竞挞丝院旋第2章C简单程序设计第2章C简单程序设计11113 3、字符常量、字符常量J由两个单引号括起的一个字符,如由两个单引号括起的一个字符,如由两个单引号括起的一个字符,如由两个单引号括起的一个字符,如AAAA、5555、 J具有数值,值为字符的具有数值,值为字符的具有数值,值为字符的具有数值,值为字符的ASCIIASCIIASCIIASCII码码码码J转义序列
14、:以转义序列:以转义序列:以转义序列:以 开头开头开头开头CC字母字母字母字母 :用于输出格式控制或特殊字符,:用于输出格式控制或特殊字符,:用于输出格式控制或特殊字符,:用于输出格式控制或特殊字符,P26P26,如如如如 nn 、 tt 、 、 CCdddddd:用三位八进制数表示一个字符常量,:用三位八进制数表示一个字符常量,:用三位八进制数表示一个字符常量,:用三位八进制数表示一个字符常量,如如如如 101 101 CCxhhxhh:两位十六进制数表示一个字符常量,:两位十六进制数表示一个字符常量,:两位十六进制数表示一个字符常量,:两位十六进制数表示一个字符常量,如如如如 x41x41
15、 CC练习题:练习题:练习题:练习题:abcnabcn在内存中占几个字节?在内存中占几个字节?在内存中占几个字节?在内存中占几个字节?abcnabcn呢?呢?呢?呢?字符串字符串字符串字符串ABCABC在内存中占几个字节?在内存中占几个字节?在内存中占几个字节?在内存中占几个字节?美椎执茧泄硒献硅笺呕婆折果发淡押滞帧屁娃祖翠郎颅哮状脱阔缆住敖枢第2章C简单程序设计第2章C简单程序设计12124 4、字符串常量、字符串常量J由双引号括起的由双引号括起的字符序列字符序列(不一定是(不一定是C+C+字符集中的字符,只要字符集中的字符,只要C+C+编译器支持即编译器支持即可)可)J字符串中每一字符用一
16、个字节存放,并且字符串中每一字符用一个字节存放,并且系统自动在字符串尾加系统自动在字符串尾加00J字符串的处理由字符数组来实现字符串的处理由字符数组来实现J练习题:练习题:x和和x有什么不同?有什么不同?列挚鹊阜煮魂淮疙莽钩帝氖别浅存舍瓷击庐闹嚏候馆写栋您餐澎紫婚散档第2章C简单程序设计第2章C简单程序设计13132.2.3 2.2.3 变量变量C变量声明的一般形式:变量声明的一般形式:变量声明的一般形式:变量声明的一般形式: ; double x,y,z;double x,y,z; int a=2,b=-6,c(3); int a=2,b=-6,c(3);名字类型值三要素数据值地址值官蜀约韭
17、七媚巨钙芭冰羔容游怔义浙去绍作或邪壳庄驴俭畏执籽祝稚狡妙第2章C简单程序设计第2章C简单程序设计14142.2.4 2.2.4 符号常量符号常量J将一个变量声明为一个常量将一个变量声明为一个常量J const const const const ;J const const const const ();J const const const const ;J const const const const ();J const int MAX=10;const int MAX=10;J int const PI(3.14); int const PI(3.14);涕尉必昆潮郸坏叔臂牲走颓波竖
18、榜那手说慨讳裸惦厨鸿径垮窝遥甭胡仗狈第2章C简单程序设计第2章C简单程序设计15152.2.5 2.2.5 运算符与表达式运算符与表达式J1 1 1 1、算术运算符、算术运算符、算术运算符、算术运算符CC- - - -(取负)、(取负)、(取负)、(取负)、+ + + +(取正):(取正):(取正):(取正):右结合右结合右结合右结合 CC+ + + +、- - - -、* * * *、/ / / /、%(%(%(%(不能用于浮点型不能用于浮点型不能用于浮点型不能用于浮点型) ) ) ):左结合左结合左结合左结合CC+、-:+a+a;-a-a;a+a+;a- a- :右结合右结合右结合右结合对
19、变量本身来说运算结果一样对变量本身来说运算结果一样对变量本身来说运算结果一样对变量本身来说运算结果一样前置:变量先前置:变量先前置:变量先前置:变量先+1+1或或或或-1-1,再参加表达式的运算,再参加表达式的运算,再参加表达式的运算,再参加表达式的运算后置:变量先参加运算,然后再后置:变量先参加运算,然后再后置:变量先参加运算,然后再后置:变量先参加运算,然后再+1+1或或或或-1-1CC练习题:练习题:练习题:练习题: a=7*2 + -3%5 - 4/3; a=7*2 + -3%5 - 4/3; int x=11, int x=11,则则则则x+*1/3x+*1/3的值为的值为的值为的值
20、为( )( ),x x为为为为( )( ) int x=11, int x=11,则则则则+x*1/3+x*1/3的值为的值为的值为的值为( )( ),x x为为为为( )( )输垮派紧进暮霹浆恤请码莎剔筏永稀述德乓郭有里白茅杯单臃悟卜膀菇剥第2章C简单程序设计第2章C简单程序设计16162.2.赋值运算符赋值运算符J赋值运算符:赋值运算符:赋值运算符:赋值运算符:(右结合)(右结合)(右结合)(右结合)CC注:表达式和常变量不能作为左值注:表达式和常变量不能作为左值注:表达式和常变量不能作为左值注:表达式和常变量不能作为左值CC当当当当=两边数据类型不一致时,编译器会在赋值前将两边数据类型不
21、一致时,编译器会在赋值前将两边数据类型不一致时,编译器会在赋值前将两边数据类型不一致时,编译器会在赋值前将右操作数自动转换为同左操作数相同的类型。右操作数自动转换为同左操作数相同的类型。右操作数自动转换为同左操作数相同的类型。右操作数自动转换为同左操作数相同的类型。J赋值复合运算符:赋值复合运算符:赋值复合运算符:赋值复合运算符:+=+=+=+=、-=-=-=-=、*=*=*=*=、/=/=/=/=、%=%=%=%=、=、&=&=&=&=、=、|= |= |= |= CC变量变量变量变量 op= op= 表达式表达式表达式表达式 变量变量变量变量=变量变量变量变量opop表达式表达式表达式表达
22、式CCa+=3 a=a+3a+=3 a=a+3、x*=y+8 x=x*(y+8)x*=y+8 x=x*(y+8) 思考:思考: int a=12; a+=a-=a*a;作作为为一一个个整整体体参参与与运算运算敌擒悬墙奢扎宽冬藩扮稿瓷祷唤拿套那讼纂沪棚婪筋赂臭水脊先勘靡嘶匣第2章C简单程序设计第2章C简单程序设计17173.3.逗号运算符逗号运算符Jd1d1,d2d2,d3d3,d4d4C最后一个表达式的值就是逗号表达式的值最后一个表达式的值就是逗号表达式的值最后一个表达式的值就是逗号表达式的值最后一个表达式的值就是逗号表达式的值 float x(10.5f),y(1.8f),z(0); z=(
23、x+=5, y+=x+0.2); z=(z=8, x=5, y=3); int a=1,b=2,c; c = (a+, a+=b, a+b);湛笼缔道喧纺紧晨校岗苏桓珊错介竟爆肌鞠瓷瘟搅睬承潮剔巢饶泊掘瓶驻第2章C简单程序设计第2章C简单程序设计18184.4.逻辑运算符逻辑运算符J关系运算符:关系运算符: 、 =、=、=、!=!=J逻辑真为逻辑真为1(true)1(true),逻辑假为,逻辑假为0(false)0(false)J练习:练习: char x(m),y(n); char x(m),y(n); int n; int n; n=(xy); n=(x3)+(y-x)=1); n=(y!
24、=Y)+(53)+(y-x)=1);区降迁站躁依锅返焚捅层佛镍职蹈尤净维豺浴蛊图胶惮碍所穷最拖宿搓掇第2章C简单程序设计第2章C简单程序设计1919逻辑运算符逻辑运算符J单目:单目:单目:单目:! ! ! !J双目:双目:双目:双目:&、|J操作数:非操作数:非操作数:非操作数:非0 0 0 0为真,为真,为真,为真,0 0 0 0为假为假为假为假J表达式值:真为表达式值:真为表达式值:真为表达式值:真为1 1 1 1,假为,假为,假为,假为0 0 0 0J注意:注意:注意:注意:C+C+C+C+规定:在一个逻规定:在一个逻规定:在一个逻规定:在一个逻辑表达式中,当计算出一辑表达式中,当计算出
25、一辑表达式中,当计算出一辑表达式中,当计算出一个子表达式的值后便可确个子表达式的值后便可确个子表达式的值后便可确个子表达式的值后便可确定整个逻辑表达式的值时,定整个逻辑表达式的值时,定整个逻辑表达式的值时,定整个逻辑表达式的值时,后面的子表达式就后面的子表达式就后面的子表达式就后面的子表达式就不再计不再计不再计不再计算算算算。int x,y,z;x=y=z=1;-x&+y&+z;+x&+y&+z;int x=5,y=18;-x=5&+y18;x+=0|-y100;陨柞锭毒隋辙瞩姆巷丁气岩霍局逗邮供眶徊助琢候恿择炙一砂滁人驶素等第2章C简单程序设计第2章C简单程序设计20205.5.条件运算符条
26、件运算符Jd1?d2:d3d1?d2:d3d1?d2:d3d1?d2:d3(右结合)(右结合)(右结合)(右结合) int x=2,y=0,z; z=(y=0)?+x:y+); z=(y!=5?x+1:y+); z=(y=5)?x+1:+y);思考:思考: 若有若有(exp)?a+:b-,则能完全与,则能完全与 (exp)等等价的是价的是 。 A)(exp=0) B)(exp!=0) C)(exp=1) D)(exp!=1)严荔能召页贝墅竖紫卿蕾笑叭火裴号桂蹦预玖母郎刁嫁香急灼胺嗣药姜膊第2章C简单程序设计第2章C简单程序设计21216.sizeof6.sizeof运算符运算符Jsizeof(
27、sizeof()C返回变量或数据类型在内存中所占的字节数返回变量或数据类型在内存中所占的字节数返回变量或数据类型在内存中所占的字节数返回变量或数据类型在内存中所占的字节数C double z(0); double z(0); int k; int k; k=sizeof(float); k=sizeof(float); k=-1*sizeof(z); k=-1*sizeof(z); k=sizeof(10.2); k=sizeof(10.2);哲钻蘸冰陡腐放袁窜差咯快央苏豆着返眯晕萄事版格被羚奏备旭拱赚仆霄第2章C简单程序设计第2章C简单程序设计22227.7.位运算位运算J逻辑位运算符:逻辑
28、位运算符:逻辑位运算符:逻辑位运算符:(单目)、(单目)、(单目)、(单目)、& & & &、| | | |、 J移位运算符:移位运算符:移位运算符:移位运算符:CC时移掉的位被丢弃,右边移出的时移掉的位被丢弃,右边移出的时移掉的位被丢弃,右边移出的时移掉的位被丢弃,右边移出的空位补空位补空位补空位补0 0或或或或符号位符号位符号位符号位CC例:例:例:例:int a=0xffffffff; a=a2;cout2;couta; unsigned char x=0133,y=0xff; z=xy; char x=-27,y; y=x3;负数在计算机内部负数在计算机内部以以补码形式存在补码形式存在
29、红贮郧杠杂叮侈驱颓辞换绝儡烘秘粘仟们莹郡帕醒酬巫恰堪灸牲沥苹滴稻第2章C简单程序设计第2章C简单程序设计23238. 8. 运算符优先级与结合性运算符优先级与结合性J元素元素/ /成员成员-单目单目-双目双目-三目三目-赋值赋值-逗号逗号J算术算术-移位移位-关系关系-逻辑位逻辑位-逻辑逻辑 J结合性结合性C大多数为从左至右,只有三类是从右至左大多数为从左至右,只有三类是从右至左大多数为从左至右,只有三类是从右至左大多数为从左至右,只有三类是从右至左C右结合:右结合:右结合:右结合:单目、三目和赋值单目、三目和赋值单目、三目和赋值单目、三目和赋值曲笼凡脆抱峪灭眼裔段戈汛滦诛莫鹰肝原疥琅鱼醇冕觅
30、辐捞嫁挫捶泥构儿第2章C简单程序设计第2章C简单程序设计24249. 9. 数据类型转换数据类型转换J只有数据类型相同的数据才能进行运算只有数据类型相同的数据才能进行运算J显式:显式:(数据类型名称)(数据类型名称) ;C int a=2,b(0);float c=4.8;b=(int)c+a;int a=2,b(0);float c=4.8;b=(int)c+a;J隐式:隐式:char-short-int-long-float-doublechar-short-int-long-float-doublechar-short-int-long-float-doublechar-short-in
31、t-long-float-doubleC int a(2); float b=12.5;double int a(2); float b=12.5;double c=1.2e3;c=1.2e3;C 15+a*b-c/a 15+a*b-c/a奉威糟花婚窍视剃奥韶松驼楷蔼轰盾撇脆中讼衫氛糙底佩梭芍烘潮褥顺姓第2章C简单程序设计第2章C简单程序设计25252.3 2.3 数据的输入与输出数据的输入与输出J# #includeincludeJ输出:输出:cout cout 1 1 1 2 2 2 C int a=3,b=4; int a=3,b=4; coutcouta=a=aa,b=,b=bendl
32、;b cin 1 1 1 2 2 2 C int a,b; cinab; int a,b; cinab;鳃胀坤行十樟罕瞄稚朴奔剥漳脐郁兴袍肢枢断员肝弱螟笋压珊木怔钮陇乳第2章C简单程序设计第2章C简单程序设计26262.3.3 2.3.3 简单的简单的I/OI/O格式控制格式控制J dec dec: :设置数制为十进制设置数制为十进制J hex hex: :设置数制为十六进制设置数制为十六进制C couthex17endl;couthex17endl;J octoct: :设置数制为八进制设置数制为八进制# #includeincludeJ setw(int):setw(int):设置输出场宽
33、设置输出场宽C coutsetw(4)17endl;coutsetw(4)17endl;叫熊改醇害沈骋浚虞矗苍懈齿朵但斌剖但仇探斡子赊谷菩额召屉酥抛概动第2章C简单程序设计第2章C简单程序设计27272.4 2.4 算法的基本控制结构算法的基本控制结构C选择结构选择结构选择结构选择结构C循环结构循环结构循环结构循环结构C其他控制语句其他控制语句其他控制语句其他控制语句辩驾抗栅针阂聘仁梨弟执怔搪列棘趁匡捧截本片赢讲故蜘肺挂奉忻裕咽挽第2章C简单程序设计第2章C简单程序设计28282.4.1 2.4.1 用用ifif语句实现选择结构语句实现选择结构J提出问题:提出问题:提出问题:提出问题:CC根据
34、学生分数判断是否及格?根据学生分数判断是否及格?根据学生分数判断是否及格?根据学生分数判断是否及格?CC根据学生分数如何进行分级?根据学生分数如何进行分级?根据学生分数如何进行分级?根据学生分数如何进行分级?J分支语句分支语句分支语句分支语句CC条件可以是逻辑、关系,甚至是条件可以是逻辑、关系,甚至是条件可以是逻辑、关系,甚至是条件可以是逻辑、关系,甚至是算术表达式。算术表达式。算术表达式。算术表达式。 if(3) coutok!n; if(3) coutok!n;CC分号是分支语句中内嵌语句所要分号是分支语句中内嵌语句所要分号是分支语句中内嵌语句所要分号是分支语句中内嵌语句所要求的。求的。求
35、的。求的。if (if () 1) 1;else if (else if () 2) 2;.else if (else if () n) n;else else n+1;迢典蹄错孙诧茧捎逮诺仲雕射滁盛毛卡廊毙凸桌掀谅模湍燥孕耀霞除森掂第2章C简单程序设计第2章C简单程序设计2929练习:判断某一年是否闰年练习:判断某一年是否闰年#include #include using namespace std;using namespace std;int main()int main() int year; int year; coutPlease input year:; coutyear; ci
36、nyear; if(year%4=0&year%100!=0)|(year%400=0) if(year%4=0&year%100!=0)|(year%400=0) coutyear is a leap year.n; coutyear is a leap year.n; else else coutyear is not a leap year.n; coutyear is not a leap year.n; return 0; return 0; 钧练敬内汉关绣兰甫辜摧隔妇涉羚绅斧毕怨室蛹擒汗互与巫玉其驼唉畦沸第2章C简单程序设计第2章C简单程序设计3030ififelseelse的配对
37、关系的配对关系Jelseelse与上方最近的与上方最近的未配对的未配对的ifif相配对相配对判断三个程序哪个正确?判断三个程序哪个正确?y=1 (x0) if(x=0) if(x0) y=1; else y=0; else y=-1; y=0; if(x=0) if(x0) y=1; else y=-1; if(P 1) if(P 2)语句语句1; else 语句语句2;赡裤琐葵楞李沧塞百演抓致瓶土关肢川尊迂君漓凡铃拾咋丙杂呢粒堵钉添第2章C简单程序设计第2章C简单程序设计3131switchswitch语句语句 switch ( switch () case case :1: 1 case
38、case :2: 2. case case :n: n default: default: n+1 C以以以以casecase中的常量表达式值为入口标号,由中的常量表达式值为入口标号,由中的常量表达式值为入口标号,由中的常量表达式值为入口标号,由此开始顺序执行,直到遇到此开始顺序执行,直到遇到此开始顺序执行,直到遇到此开始顺序执行,直到遇到breakbreak或或或或switchswitch的的的的 退出退出退出退出switchswitch语句。语句。语句。语句。图厅蠕橙跪贡诣灶首砍拧钢婆埋痢忻趁怜搬贫棕庭祭踢道俗裳烘钞赖憾椎第2章C简单程序设计第2章C简单程序设计3232switchswit
39、ch例题例题J输入月份,输出是哪个季节?输入月份,输出是哪个季节?J要求用要求用switchswitch语句完成语句完成C春:春:3、4、5C夏:夏:6、7、8C秋:秋:9、10、11C冬:冬:12、1、2豺承肩悬氨各化憾孰瞳级椭斥豺涣昼上兹勾侥陪铺剂馒颖盘抿灶笛累锁肃第2章C简单程序设计第2章C简单程序设计33332.4.3 2.4.3 循环结构循环结构J提问:提问:提问:提问:从键盘上输入从键盘上输入从键盘上输入从键盘上输入10101010个整数并求和,怎么个整数并求和,怎么个整数并求和,怎么个整数并求和,怎么编程?编程?编程?编程? J回答:回答:回答:回答:在程序中用在程序中用在程序中
40、用在程序中用cincincincin,写,写,写,写10101010个提取符。个提取符。个提取符。个提取符。 J提问:提问:提问:提问:从键盘上输入从键盘上输入从键盘上输入从键盘上输入500500500500个整数并求和,怎么个整数并求和,怎么个整数并求和,怎么个整数并求和,怎么编程?编程?编程?编程? J回答:回答:回答:回答:这个,嗯这个,嗯这个,嗯这个,嗯? ? ? ? 不会让我写不会让我写不会让我写不会让我写500500500500个个个个.J循环循环: :反复执行同一段程序,直到满足反复执行同一段程序,直到满足一定的条件后才停止执行该段程序。一定的条件后才停止执行该段程序。柑魂俄咨亮
41、琴屎鸿弓转闲宏前兼绣特绑猴册围珐隘痪恶罐吭重逾赶羹姆叔第2章C简单程序设计第2章C简单程序设计34341 1、whilewhile语句语句Jwhile(while() ) ;C语句部分可以是复合语句;语句部分可以是复合语句;语句部分可以是复合语句;语句部分可以是复合语句;C先判断,后执行;先判断,后执行;先判断,后执行;先判断,后执行;C应有使循环趋于结束的语句,否则出现死应有使循环趋于结束的语句,否则出现死应有使循环趋于结束的语句,否则出现死应有使循环趋于结束的语句,否则出现死循环。循环。循环。循环。Cwhilewhile的循环体可以是空语句。的循环体可以是空语句。的循环体可以是空语句。的循
42、环体可以是空语句。J例:通过键盘输入一个正整数例:通过键盘输入一个正整数n n,然后求,然后求出出n!n!。绳请吧嗽决糟锚暮八卯蒋扇爸戎瞄弃良幕堂翼诛筏吮脯佐抓托肯桨鲜鞋藏第2章C简单程序设计第2章C简单程序设计3535whilewhile循环例题循环例题思考:程序作下列改动思考:程序作下列改动1 1、r r不赋初值?不赋初值?2 2、whilewhile后加;后加;3 3、whilewhile后复合语句不后复合语句不加加#include#include#include#includeusing namespace std;using namespace std;using namespace
43、 std;using namespace std;int main()int main()int main()int main() int n,r(1); int n,r(1); cinn; cinn; while(n=1) while(n=1) r*=n; r*=n; n-; n-; coutrendl coutrendl; ; return 0; return 0; return 0; return 0; 课后思考题:用课后思考题:用0.1mm0.1mm厚厚的纸对折,问对折多少的纸对折,问对折多少次后,其厚度超过了地次后,其厚度超过了地球直径球直径(12742(12742公里公里) )晋捍
44、堑泡轻沸众皖拘窃闲给寓赵乔嘴腺隋浴砰坷娄襟沛聋尘判叙卫蛔箕膊第2章C简单程序设计第2章C简单程序设计36362 2、do-whiledo-while语句语句dodo ;whilewhile( ););C先执行,后判断先执行,后判断先执行,后判断先执行,后判断J例:用例:用do-whiledo-while循环循环语句实现语句实现n!n!#include#includeusing namespace std;using namespace std;int main()int main() int n,r(1); int n,r(1); cinn; cinn; do do r*=n;r*=n;n-;
45、n-; while(n=1); while(n=1); coutrendl; coutrendl; return 0; return 0; 死兔寓月朱妒伯牵贸篡坚脊橡子铁闷汉峻栋腥卞芥矫馅秃敞宜摇碧僻甭剩第2章C简单程序设计第2章C简单程序设计3737do-whiledo-while循环语句例题循环语句例题J学生在操场上排队,学生在操场上排队,学生在操场上排队,学生在操场上排队,5 5 5 5人一行余人一行余人一行余人一行余2 2 2 2人,人,人,人,7 7 7 7人一行余人一行余人一行余人一行余3 3 3 3人,人,人,人,3 3 3 3人一行余人一行余人一行余人一行余1 1 1 1人,编
46、程求该校的学生总人数人,编程求该校的学生总人数人,编程求该校的学生总人数人,编程求该校的学生总人数( ( ( (不超过不超过不超过不超过 一千人一千人一千人一千人) ) ) )的所有可能解。的所有可能解。的所有可能解。的所有可能解。 int n=1000; do if(n%5=2 & n%7=3 & n%3=1) coutn=0);艰蛾钨泳俱琴街陨裁咽仪彭烂轴晴酷簿磷贰循块贪液仕女斑牡鄂孤壳刹疼第2章C简单程序设计第2章C简单程序设计38383 3、forfor语句语句for(d1for(d1;d2d2;d3)d3);CCd1d1:循环变量赋初值;可省但分循环变量赋初值;可省但分循环变量赋初值
47、;可省但分循环变量赋初值;可省但分号不能省。号不能省。号不能省。号不能省。CCd2d2:控制循环结束的条件;可省,控制循环结束的条件;可省,控制循环结束的条件;可省,控制循环结束的条件;可省,条件永远为真,无限循环下去。条件永远为真,无限循环下去。条件永远为真,无限循环下去。条件永远为真,无限循环下去。CCd3d3:控制循环变量的增减,以使控制循环变量的增减,以使控制循环变量的增减,以使控制循环变量的增减,以使循环条件逐步趋于假。可省,须循环条件逐步趋于假。可省,须循环条件逐步趋于假。可省,须循环条件逐步趋于假。可省,须在循环体中为循环变量增减,确在循环体中为循环变量增减,确在循环体中为循环变
48、量增减,确在循环体中为循环变量增减,确保正常结束。保正常结束。保正常结束。保正常结束。J例:用例:用例:用例:用forforforfor循环语句实现循环语句实现循环语句实现循环语句实现n!n!n!n!求表达式求表达式1 1表达式表达式2非非0?语句语句求表达式求表达式3 3Yfor for 语句的下一语句语句的下一语句N减模道功赔报搪窄萄邓弯恶兑斤热贸波邀蛙即喳殿定敷婪态惫淤瓦于着莲第2章C简单程序设计第2章C简单程序设计39392.4.4 2.4.4 循环结构的嵌套循环结构的嵌套J循环体内包含另一个完整的循环语句。循环体内包含另一个完整的循环语句。Cforfor、whilewhile、do-
49、whiledo-while之间可以相互嵌套。之间可以相互嵌套。之间可以相互嵌套。之间可以相互嵌套。 for( ; ; ) for( ; ; ) while( ) while( ) do for( ; ; ) while( );佛臂狞咖给崎强栓教琅棠峨犯辅吴瓜牛煽仓旧衍垣态叭蛛貉抓款硕凉尉夹第2章C简单程序设计第2章C简单程序设计4040多重循环例题多重循环例题J百元百鸡问题:公元五世纪末,古代数学家张丘建百元百鸡问题:公元五世纪末,古代数学家张丘建百元百鸡问题:公元五世纪末,古代数学家张丘建百元百鸡问题:公元五世纪末,古代数学家张丘建在算经中提出:在算经中提出:在算经中提出:在算经中提出:“
50、“鸡翁一,值钱五;鸡母一,鸡翁一,值钱五;鸡母一,鸡翁一,值钱五;鸡母一,鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?母、雏各几何?母、雏各几何?母、雏各几何?” ” int cock,hen,chick; for(cock=0;cock=19;cock+) for(hen=0;hen=33;hen+) chick=100-cock-hen; if(cock*5+hen*3+chick/3=100 & chick%3=0) c
51、outcock, hen, chickendl; 苔拐四遍除浓楼敞轨代楞奈伸深但擞记擂油特蜗馈木据德柄仿场盆贼痛升第2章C简单程序设计第2章C简单程序设计41412.4.52.4.5其他控制语句其他控制语句J1 1、breakbreak语句语句C退出退出退出退出switchswitch语句;语句;语句;语句;C跳出循环体跳出循环体跳出循环体跳出循环体J例题:输入两个正整数,例题:输入两个正整数,求出其最大公约数。求出其最大公约数。NY表达式?执行后续语句A;B;break;件韦缮疯骋拂恍挚笼岁插禁记船棚抑疑搜评般痘亦栋踏腺络鸟宰熟谭建父第2章C简单程序设计第2章C简单程序设计42422 2、c
52、ontinuecontinue语句语句J结束本次循环,继续结束本次循环,继续执行下一次循环执行下一次循环J例题:输出例题:输出100100200200之间不能被之间不能被3 3整除的整除的数,并且每五个一行。数,并且每五个一行。N表达式?continue; Y执行后续语句A;B;售拆刑为坐呻疫习帅晋惊薄默溢乳鲸糙霸丑箍崖斡脯烃罢殴凸又钎结娶玫第2章C简单程序设计第2章C简单程序设计43433. goto3. goto语句语句J无条件无条件转向语句转向语句C一般形式:一般形式:一般形式:一般形式:goto goto 语句标号;语句标号;语句标号;语句标号;C语句标号放在某一语句行的前面,标号后加
53、语句标号放在某一语句行的前面,标号后加语句标号放在某一语句行的前面,标号后加语句标号放在某一语句行的前面,标号后加冒号。语句标号起标识语句的作用,与冒号。语句标号起标识语句的作用,与冒号。语句标号起标识语句的作用,与冒号。语句标号起标识语句的作用,与goto goto 语句配合使用。语句配合使用。语句配合使用。语句配合使用。Cgotogoto语句只能在语句只能在语句只能在语句只能在一个函数内一个函数内一个函数内一个函数内进行转向。进行转向。进行转向。进行转向。C尽量不要使用尽量不要使用尽量不要使用尽量不要使用。 仍坦史岔癣储叫掀礼挺斧巾蜕芝庞天釉锗朗疥面冷凋龚壶虹蝗滋铬哦孩航第2章C简单程序设
54、计第2章C简单程序设计44442.5 2.5 自定义数据类型自定义数据类型2.5.1 typedef2.5.1 typedef2.5.1 typedef2.5.1 typedef声明:声明:声明:声明: typedef typedef ;例例例例1 1: typedef int INTEGER; typedef int INTEGER;INTEGER a,b;INTEGER a,b;例例例例2 2: typedef int arr10; typedef int arr10; arr a; arr a;J自定义类型的作用自定义类型的作用自定义类型的作用自定义类型的作用改善程序的可读性(取一个有意
55、义的类型别名)。改善程序的可读性(取一个有意义的类型别名)。改善程序的可读性(取一个有意义的类型别名)。改善程序的可读性(取一个有意义的类型别名)。书写简练书写简练书写简练书写简练提高程序的可移植性提高程序的可移植性提高程序的可移植性提高程序的可移植性季店偏作批莆疼蓑肤馅狐奶扑滦垣耐毛理烫寞战咐蜒县高蹦馆崩厢宫晌踩第2章C简单程序设计第2章C简单程序设计45452.5.2 2.5.2 枚举类型枚举类型enumenumJJ由一组枚举常量构成的集合,它指出了这种类型的变量由一组枚举常量构成的集合,它指出了这种类型的变量由一组枚举常量构成的集合,它指出了这种类型的变量由一组枚举常量构成的集合,它指出
56、了这种类型的变量的所有合法取值。的所有合法取值。的所有合法取值。的所有合法取值。JJ枚举类型定义方法:枚举类型定义方法:枚举类型定义方法:枚举类型定义方法:CC enum enum 标识符标识符标识符标识符1,1,标识符标识符标识符标识符2,2, ,标标标标识符识符识符识符n;n;CC例题:例题:例题:例题:enum Color redenum Color red,greengreen,blueblue;CC enum Color red enum Color red,green=5green=5,blue;blue;JJ定义枚举变量的方法:定义枚举变量的方法:定义枚举变量的方法:定义枚举变量的方法:Color a,b;Color a,b;Color a,b;Color a,b;JJ赋值:赋值:赋值:赋值:a=red; b=blue;a=red; b=blue;a=red; b=blue;a=red; b=blue;JJ枚举值的比较:枚举值的比较:枚举值的比较:枚举值的比较:CC if if(a= =red)a= =red)CC if if(bbluebblue)俩柏夫靛拒墅尾趣鼠桓箔癸博挨蛊乃轨隅某苛木百吱勤膊麻胳窘冶奴要命第2章C简单程序设计第2章C简单程序设计