信息学奥赛课课通-第2单元 电子课件_第1页
信息学奥赛课课通-第2单元 电子课件_第2页
信息学奥赛课课通-第2单元 电子课件_第3页
信息学奥赛课课通-第2单元 电子课件_第4页
信息学奥赛课课通-第2单元 电子课件_第5页
已阅读5页,还剩79页未读 继续免费阅读

下载本文档

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

文档简介

第2单元顺序结构程序设计信息学奥赛课课通(C++)2021/5/91第1课cout语句学习目标1.理解C++中的标准输出流。2.掌握C++中cout语句的使用。2021/5/92流(stream)在C++中,所有的数据输入、输出都是以“流(stream)”的形式。流是一个处于传输状态的字节序列,是字节在对象之间的“流动”。流的操作包括输入与输出。使用输入/输出流,必须加上以下头文件:#include<iostream>。2021/5/93cout语句是C++中实现输出功能的语句。其格式为:cout<<项目1<<项目2<<…<<项目n;如果项目是表达式,则输出表达式的值;如果项目加引号,则输出引号内的内容;如果项目是endl,则表示换行。2021/5/94例1、阅读并上机调试以下程序,体会cout语句的使用。//p2-1-1#include<iostream>usingnamespacestd;intmain(){cout<<2+4<<endl;cout<<“ABCD”<<endl;inta=10,b=5;cout<<a+b<<endl;return0;}2021/5/95例2、阅读并上机调试以下程序,观察程序运行的结果。//p2-1-2#include<iostream>usingnamespacestd;intmain(){cout<<"*\n";//"\n"也表示换行cout<<"***\n";cout<<"*****\n";cout<<"*******\n";cout<<"***\n";cout<<"***\n";cout<<"***\n";cout<<"***\n";cout<<"***\n";return0;}2021/5/96例3、已知梯形的上底长为15,下底长为20,高为12,编程输出该梯形的面积。【问题分析】

根据梯形面积的计算公式:(上底+下底)*高/2,直接计算面积并输出。//p2-1-3#include<iostream>usingnamespacestd;intmain(){inta,b,h,s;a=15;b=20;h=12;s=(a+b)*h/2;cout<<s<<endl;return0;}2021/5/97实践巩固2021/5/98第2课数据类型学习目标1.熟知C++中的常用数据类型。2.学会根据具体需求使用不同的数据类型。2021/5/99数据有数据类型、取值范围、运算类型三个要素。在C++程序中,使用的各种变量都应“先声明,后使用”。变量声明又会涉及数据类型、初始值和作用域等。2021/5/9102021/5/9112021/5/912//p2-2-1#include<iostream>usingnamespacestd;intmain(){inta,b,c;doubled,e;a=5;b=6;d=2.53;c=a+b;e=c+d;cout<<a<<“+”<<b<<“=”<<c<<endl;cout<<c<<“+”<<d<<“=”<<e<<endl;return0;}例1、阅读并上机调试以下程序,观察运行结果。运行程序,输出:5+6=1111+2.53=13.53程序中定义了a、b、c三个整型变量和d、e两个实型变量,并进行了赋初值和加法运算。需要注意的是,整型数据和实型数据进行混合运算,得到的结果是实型数据。2021/5/913说明

整数还有“无符号”类型,其取值只会是正数和0,范围扩大一倍。例如unsignedint类型的取值范围为0~4294967295。

还可以通过sizeof函数,输出各种数据类型的字节数,例如:cout<<sizeof(int)<<endl;

数据溢出:C++程序中出现这类错误时,编译和运行过程中并不报错。所以,需要特别细心,注意范围检查。

2021/5/914//p2-2-2#include<iostream>usingnamespacestd;intmain(){inta=2147483647;a=a+1;cout<<"a="<<a<<endl;return0;}//运行程序,输出:a=-2147483648。

例2、阅读并上机调试以下程序,观察运行结果,体会int类型的数据范围。2021/5/915//p2-2-3#include<iostream>usingnamespacestd;intmain(){intb=0,a=100;charch='A';b=a+ch;cout<<ch<<""<<int(ch)<<""<<b<<endl;return0;}//运行程序,输出:A65165。

程序中定义了b、a两个整型变量和一个字符型变量ch,并进行了初始化。需要注意的是,在C++中,字符型数据可以直接参与整型或者实型数据的运算,按照其ASCII码值使用。int(ch)表示把ch字符强制转换成int类型。例3、阅读并上机调试以下程序,观察运行结果。2021/5/916实践巩固2021/5/917第3课常量与变量学习目标1.区分C++中的常量与变量。2.学会常量和变量的定义使用。2021/5/918在程序中参与运算的量分为常量和变量。2021/5/919常量是在程序运行过程中,其值保持不变的量。C++中定义一个符号常量的格式如下:类型名const常量名;或const类型名常量名;例如:intconstA=100;constfloatPI=3.1415926;使用符号常量是为了方便程序的修改,增强程序的读性。为了更清晰地区别常量和变量,常量名通常用大写字母表示。常量2021/5/920变量是指在程序运行过程中,其值可以改变的量。C++中定义一个变量的格式如下:类型名变量名1,变量名2,…,变量名n;

例如:intsum,total;doublearea;变量2021/5/921(1)变量名程序中的常量名、变量名、函数名等都称之为“标识符”。C++中的标识符命名规则如下:1)标识符不能和系统里的关键字同名。2)标识符只能包括字母、数字和下划线“_”,并且开头只能是字母或下划线。3)标识符必须先定义、后使用。4)在同一作用域内,标识符不能重复定义。5)标识符是区分大小写的,如A和a、sum和Sum都是不同的标识符。6)标识符要尽量做到“见名知义”,增强程序的可读性。2021/5/922Mr.Wang,sum,Day,school_name,a>=b,¥1234lotus_1_2,sum123_,_day,234NUM,#34,int例1、找出符合C++规则的标识符。【问题分析】

符合C++规则的标识符有:sum,Day,school_name,lotus_1_2,sum123_,_day。2021/5/923(2)变量的初始化变量在定义的同时,可以给它指定一个初始值,称为变量的初始化。(3)变量的赋值在C++中,可以通过“赋值”语句来修改变量的值。赋值语句的格式如下:变量名=值或者表达式;其中,“=”称为“赋值号”。2021/5/924//p2-3-2#include<iostream>usingnamespacestd;intmain(){inta;a=3;cout<<a<<endl;a=10;cout<<a<<endl;a=a*5;cout<<a<<endl;return0;}例2、阅读并上机调试以下程序,观察运行结果,体会变量的含义。2021/5/925实践巩固2021/5/926第4课字符与字符串学习目标1.体会字符型变量的使用。2.体会字符串的含义和简单使用。3.理解转义字符的含义和使用。2021/5/927存放单个字符的变量,称为字符变量。字符变量的值是用一对单引号括起来的一个字符,如‘a’和‘?’等。存放一串有若干字符的变量,称为字符串变量。字符串变量的值是用一对双引号括起来的字符序列,如“GoodMorning!”和“a”等。如果双引号内什么都没有,称为空字符串,与双引号内有一个空格的字符串是不一样的。字符和字符串2021/5/9281.字符变量定义字符变量的格式如下:char标识符1,标识符2,…,标识符n;字符变量在内存中占用1个字节。在C++中,字符数据在内存中实际存储的是其ASCII码值。2021/5/929例1、阅读并上机调试以下程序,观察运行结果,体会字符变量的输入与输出。//p2-4-1#include<iostream>usingnamespacestd;intmain(){charc1,c2,c3;c1=48;c2=65;c3=97;cout<<c1<<““<<c2<<““<<c3<<““;cout<<int(c1)<<““<<int(c2)<<““<<int(c3)<<endl;return0;}//运行程序,输出“0Aa486597”。2021/5/930例2、阅读并上机调试以下程序,观察运行结果,体会字符变量的运算。//p2-4-2#include<iostream>usingnamespacestd;intmain(){charc1,c2,c3;c1=‘a’;c2=‘Z’;c1=c1-32;c2=c2+32;c3=‘0’+9;cout<<c1<<“”<<c2<<“”<<c3<<endl;return0; }//运行程序,输出:Az9。2021/5/931C++中定义了一些字符前加“\”的特殊字符,称为转义字符。字符输入函数:getchar(输入字符);字符输出函数:putchar(输出字符)。2.转义字符2021/5/932例3、阅读并上机调试以下程序,观察运行结果,体会getchar和putchar的使用方式。//p2-4-3#include<cstdio>usingnamespacestd;intmain(){chara=‘A’;putchar(a);//输出一个Aputchar(‘\\’);//输出‘\’putchar(‘\n’);//输出回车换行charc;c=getchar();putchar(c+1);//输入一个字符,输出它在ASCII码表中的后一个字符return0;}2021/5/933在C++中,可以用字符数组chars[]存放字符串,也可以用STL中的string类型。每一个字符串的结尾都要加一个“字符串结束标志”,而且是系统自动添加上去的,C++规定以转义字符“\0”作为字符串结束标志。字符串输入、输出函数gets()和puts()。3.字符串变量2021/5/934例4、阅读并上机调试以下程序,观察运行结果,体会puts()和gets()的使用方式。//p2-4-4#include<cstdio>usingnamespacestd;chars[20];//定义一个长度为20的字符数组sintmain(){gets(s);puts(s);return0;}//运行程序,若输入:abcd123,则输出:abcd123。2021/5/935实践巩固2021/5/936第5课算术运算符学习目标1.熟知算术运算符。2.熟练掌握算术表达式的书写。3.了解一些常用的数学函数。2021/5/937算术运算符2021/5/938表达式及其运算规则

将常量、变量、算术运算符、括号以及函数连接在一起的计算式,称为算术表达式。

当一个算术表达式中包含多个运算符时,遵循的计算顺序(运算优先级)为:先算“括号”里的,再算“乘法、除法、模”,最后算“加法、减法”,同一级别的按照类型从左往右依次计算。

表达式的计算结果称为表达式的值。2021/5/939例1、输入长方形的长和宽(整型数据),计算并输出长方形的周长和面积。例如,输入“83”,输出“2224”。//p2-5-1#include<iostream>usingnamespacestd;intmain(){inta,b,c,s;cin>>a>>b;//从键盘输入两个整数给a和bc=2*(a+b);s=a*b;cout<<c<<””<<s<<endl;return0;}2021/5/940例2、求任意一个三位数的三个数字之和。例如,输入897,输出24。//p2-5-2#include<iostream>usingnamespacestd;intmain(){intn,a,b,c;cin>>n;//从键盘输入一个整数给na=n%10;b=n/10%10;c=n/100;cout<<a+b+c<<endl;return0;}2021/5/9412021/5/942例3、在一个直角坐标系中存在两个点。输入两个点的坐标(整数),输出它们连成的线段长度。

例如,输入3922115,输出32.7567。//p2-5-3#include<iostream>#include<cmath>//使用数学函数前必须添加cmath或者math.h

usingnamespacestd;intmain(){doublex1,y1,x2,y2;cin>>x1>>y1>>x2>>y2;cout<<sqrt(pow(x1-x2,2)+pow(y1-y2,2));return0;}2021/5/943实践巩固2021/5/944第6课cin语句学习目标掌握cin语句的格式和应用。2021/5/945cin是C++中实现输入功能的语句,其格式一般为:cin>>项目1>>项目2>>…>>项目n;在使用cin语句从键盘输入多个数据项的时候,一定要注意三个一致:数据个数一致、输入顺序一致、数据类型一致。2021/5/946例1、阅读下列程序,体会cin语句的使用。//p2-6-1#include<iostream>usingnamespacestd;intmain(){inta,b,c;cin>>a>>b>>c;chard,e;cin>>d>>e;floatf;cin>>f;cout<<”a=”<<a<<”b=”<<b<<”c=”<<c<<endl;cout<<”d=”<<d<<”e=”<<e<<”f=”<<f<<endl;return0;}2021/5/947例2、编程从键盘输入一个小写字母,将它转换成大写字母输出。//p2-6-2#include<iostream>usingnamespacestd;intmain(){charch1,ch2;cin>>ch1;ch2=ch1-32;cout<<ch2<<endl;//cout<<ch1-32<<endl;可以直接输出ch2的ASCII码return0;}2021/5/948例3、从键盘输入一个梯形的上底、下底和高(整型数据),输出该梯形的面积(保留小数点后2位)。例如,输入:587,则输出:45.50。//p2-6-3#include<iostream>#include<iomanip>usingnamespacestd;intmain(){inta,b,h;floatarea;cin>>a>>b>>h;area=(a+b)*h/2.0;cout<<setprecision(2)<<fixed<<area<<endl;return0;}2021/5/949实践巩固2021/5/950第7课赋值语句学习目标掌握赋值语句的使用方法。2021/5/951在C++中,可以通过“赋值语句”来修改变量的值。赋值语句的格式如下:变量名=值或者表达式;其中,“=”称为“赋值号”。需要注意的是:a=b与a==b是完全不同的意义,“==”是关系运算符。2021/5/952//p2-7-1#include<iostream>usingnamespacestd;intmain(){inta,b,s,d;booll,e;a=3;b=3;s=a+b;d=a/b;l=a<b;e=a==b;cout<<s<<‘‘<<d<<‘‘<<l<<‘‘<<e<<endl;return0;}例1、阅读程序,写出程序的运行结果。运行程序,输出:6101。计算时,“a<b”和“a==b”的结果分别是bool类型的值0和1。2021/5/953在C++中,赋值语句非常灵活,有多种复合写法。(1)算术复合:a=a+x;写成a+=x;

还有-=、*=、/=,%=(2)赋值复合:C++支持在一个表达式里出现连续的赋值号,即一次给几个变量赋同一个值。此时计算顺序是从右到左,有括号存在的,先计算括号内的表达式。(3)逗号表达式:在C++中,允许用逗号连接几个表达式,构成一个更大的表达式,称为“逗号表达式”。

其格式如下:表达式1,表达式2,…表达式n;

各个表达式的计算顺序是从左往右,最终整个表达式的值是“表达式n”的值。2021/5/954//p2-7-2#include<iostream>usingnamespacestd;inta,b;intmain(){cin>>a>>b;a+=b;b-=1;cout<<a<<“”<<b<<endl;a/=2;b*=b;cout<<a<<“”<<b<<endl;a%=b;b%=10;cout<<a<<“”<<b<<endl;return0;}例2、阅读程序,写出程序的运行结果。运行程序,输入:10056输出:156557830257852021/5/955//p2-7-3#include<iostream>usingnamespacestd;inta,b;intmain(){ a=b=5; cout<<a<<''<<b<<endl; (a=b)=10; cout<<a<<''<<b<<endl; (a+=b)=20; cout<<a<<''<<b<<endl; return0;}例3、阅读程序,写出程序的运行结果。运行程序,输出:551052052021/5/956//p2-7-4#include<iostream>usingnamespacestd;intmain(){intj=10,k=1000;inti=(k+1,j+100,999+j);cout<<i<<endl;return0;}例4、阅读程序,写出程序的运行结果。运行程序,输出:1009。

给i赋值的语句中赋值号右边的括号是必须要加的,因为逗号运算符的优先级低于赋值号的优先级。2021/5/957实践巩固2021/5/958第8课复合运算符学习目标理解并学会使用C++中的复合运算符。2021/5/959在C++中,复合运算符实际上是赋值语句的一种缩写形式,使得修改变量值的操作更加简洁。2021/5/960自加运算符和自减运算符自加运算符“++”有两种写法,即i++或者++i。在单独使用时,其作用相同,都相当于i=i+1。自减运算符“--”也有两种写法,即i--或者--i。例如:inta,b=5;b++;//b的值变为6++b;//b的值变为7a=b++;//a的值为7,b的值变为8a=++b;//b的值变为9,a的值也为92021/5/961//p2-8-1#include<iostream>usingnamespacestd;intmain(){inti=3,j;j=++i;cout<<j<<i<<endl;j=i++;cout<<j<<i<<endl;return0;}例1、阅读程序,写出程序的运行结果。运行程序,输出:44452021/5/9622.复合算术赋值复合算术赋值,如+=、-=、*=、/=、%=。复合算术赋值运算的优点是程序更精炼,编译效率高。inta,b;a=b=5;//a的值为5,b的值为5a+=b;//a的值为10,相当于a=a+ba-=b;//a的值为5,相当于a=a-ba*=b;//a的值为25,相当于a=a*ba/=b;//a的值为5,相当于a=a/ba%=b;//a的值为0,相当于a=a%b

需要注意的是,“a*=b+8”等价于“a=a*(b+8)”。复合算术赋值运算的优点是程序更精炼、编译效率高。2021/5/963//p2-8-3#include<iostream>usingnamespacestd;intmain(){inta=10,b,c,t=0,s=100;a+=20;c=b*=b=a;(s/=c)%=a;t+=(a+b)*c;cout<<a<<''<<b<<''<<c<<''<<s<<''<<t<<endl;return0;}例3、阅读程序,写出程序的运行结果。运行程序,输出:3090090008370002021/5/964实践巩固2021/5/965第9课运算规则学习目标1.掌握C++的运算规则(优先级和结合性)。2.掌握数据类型的自动转换和强制转换。2021/5/966在C++中,整型数据和实型数据可以混合运算,字符型数据可以和整型数据通用。但是,在具体计算时,编译系统会自动将不同类型的数据转换成同一类型,再进行运算,称为数据类型的“自动转换”。2021/5/967C++语言还规定了运算符的优先级和结合性。在表达式求值时,先按运算符的优先级别高低次序执行,例如先乘除后加减。如果一个运算对象两侧的运算符的优先级别相同,如a-b+c,则按规定的“结合方向”处理。算术运算符的结合方向为“先左后右”,又称之为“左结合性”。有些运算符的结合方向为“自右向左”,即右结合性,例如赋值运算符。2021/5/9682021/5/969在赋值运算中,赋值号两边数据的类型不同时,赋值号右边量或者表达式值的类型将自动转换为左边量的类型。在C++中,除了“自动转换”外,还可以“强制类型转换”。格式为:(类型名)(表达式)(类型名)变量例如:(double)a将a强制转换成double型(int)(x+y)将x+y的值强制转换为int型(float)(4%3)将4%3的值强制转换成float型2021/5/970//p2-9-1#include<iostream>usingnamespacestd;intmain(){floatpi=3.14159;ints,r=4;s=r*r*pi;cout<<s<<endl;return0;}例1、阅读并上机调试程序,观察运行结果,体会赋值语句中的自动类型转换。运行程序,输出:502021/5/971//p2-9-2#include<iostream>usingnamespacestd;intmain(){intx;floata=15.75;doubleb=323.01;cout<<(int)a<<endl;cout<<(int)(b+0.5)%10<<endl;cout<<(int)b%(int)a+1<<endl;return0;}例2、阅读并上机调试程序,观察运行结果,体会强制类型转换的应用。运行程序,输出:15392021/5/972实践巩固2021/5/973第10课格式控制学习目标1.了解C++的格式控制。2.学会scanf和printf函数的使用。3.知晓scanf、printf与cin、cout的区别。2021/5/974C++语言兼容C语言中的基本语句语法。scanf和printf是C语言中的输入输出函数(语句),在C++语言环境中也可以使用。

“f”是format(格式)之意,就是要按照指定的格式输入输出值,所以,又称为格式输入输出函数。

对于大数据的输入输出,使用scanf和printf,比C++中的输入输出流语句(cin和cout)效率更高、速度更快。scanf和printf是标准库函数,使用前需要加上cstdio头文件。2021/5/9751.printf函数printf函数的格式为:printf(格式控制字符串,输出列表);2021/5/976使用说明1)输出整数形式可以用%d或%md,m为指定的输出字符的宽度,输出数据右对齐。2)输出长整型可以用%ld,一个int型数据可以用%d或%ld格式输出。3)输出字符串用%s,如“printf(“%s”,“hello”);”。4)“%ms”,输出的字符串占m列,如字符串本身长度大于m,则突破m的限制,将字符串全部输出;若串的长度小于m,则左补空格。2021/5/977使用说明5)“%-ms”,若串长小于m,则在m列范围内,字符串向左靠,右补空格。6)“%m.ns”,输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格。7)“%-m.ns”,m、n含义同上,n个字符输出在m列范围的左侧,右补空格,如果n>m,则m自动取n值,即保证n个字符正常输出。8)“%m.nf”,输出浮点数,占m列,其中有n位小数,如果数值长度小于m,则左补空格。9)“%-m.nf”,同上,只是使输出的数值向左端靠齐,右端补空格。2021/5/978例1、阅读并上机调试程序,体会printf函数的使用。//p2-10-1#include<cstdio>usingnamespacestd;intmain(){printf(“%d”,1);//输出1printf(“%o”,8);//输出10printf(“%x”,17);//输出11printf(“%u”,12);//输出12printf(“%c”,49);//输出1printf(“%s”,”1ab11”);//输出1ab11printf(“%f”,0.14);//输出0.140000printf(“%e”,0.1);//输出1.000000e-001printf(“%lld”,21473648);//输出21473648}2021/5/9792.scanf函数scanf函数的格式为:

温馨提示

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

评论

0/150

提交评论