中农大AutoCAD及计算机图学基础课件第10章 C++语言基础_第1页
中农大AutoCAD及计算机图学基础课件第10章 C++语言基础_第2页
中农大AutoCAD及计算机图学基础课件第10章 C++语言基础_第3页
中农大AutoCAD及计算机图学基础课件第10章 C++语言基础_第4页
中农大AutoCAD及计算机图学基础课件第10章 C++语言基础_第5页
已阅读5页,还剩85页未读 继续免费阅读

下载本文档

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

文档简介

C++简单程序设计C++语言程序设计1本章主要内容C++语言概述基本数据类型和表达式数据的输入与输出算法的基本控制结构自定义数据类型2C++语言的产生C++是从C语言发展演变而来的,首先是一个更好的C。引入了类的机制,最初的C++被称为"带类的C"。1983年正式取名为C++。C++语言的标准化工作从1989年开始,于1994年制定了ANSIC++标准草案。以后又经过不断完善,成为目前的C++。C++语言概述3C++的特点全面兼容C它保持了C的简洁、高效和接近汇编语言等特点对C的类型系统进行了改革和扩充C++也支持面向过程的程序设计,不是一个纯正的面向对象的语言支持面向对象的方法C++语言概述4C++程序实例—例2-1#include<iostream.h>//1.包含命令voidmain(void)//2.有且只能有一个主函数{//3.函数体、复合语句包含在一对花括弧内

cout<<“Hello!\n”;//4.每条语句以分号结束

cout<<"Welcometoc++!\n";}5.cout是输出流对象6.运算符<<:将紧随其后的双引号中的字符串输出到标准输出设备

C++语言概述5C++程序实例运行结果:Hello!Welcometoc++!C++语言概述6C++字符集大小写的英文字母:A~Z,a~z数字字符:0~9特殊字符:

空格 ! # % ^ & *

_(下划线)+ = - ~

< > / \ ' " ; . , () [] {}C++语言概述7词法记号关键字

C++预定义的单词。标识符程序员声明的单词,它命名程序正文中的一些实体。文字在程序中直接使用符号表示的数据操作符用于实现各种运算的符号。分隔符用于分隔各个词法记号或程序正文:(){},:;空白:空格、制表符(TAB键产生的字符)、换行符(Enter键所产生的字符)和注释的总称。C++语言概述8关键字基本数据类型:boolcharunsignedsignedshortintlongfloatdouble构造数据类型:structunionenum存储类型:autostaticextern控制语句:ifelseswitchcasefordowhilegotoreturnbreak类专用词:publicprivatefriendprotected9标识符的构成规则以大写字母、小写字母或下划线(_)开始。可以由以大写字母、小写字母、下划线(_)或数字0~9组成。大写字母和小写字母代表不同的标识符。C++语言概述10二、基本数据类型和表达式数据类型基本类型整型字符型单精度类型双精度类型实型布尔型构造类型数组结构体共用体指针类型空类型112.1基本数据类型布尔型bool(flase,true):1字节整型:unsignedshort2字节0~65535

signedshort2字节–32768~32767

unsignedint4字节0~4294967295

signedint4字节–2147483648~2147483647

unsignedlong4字节

signedlong4字节122.1基本数据类型实型(1)单精度型float4字节3.4×10-38~3.4×1038(2)双精度型double8字节1.7×10-308~1.7×10308

(3)长双精度型longdouble8字节1.7×10-308~1.7×10308字符型charunsignedchar1字节0~255

signedchar1字节-128~127

132.2常量和变量一、常量:程序运行过程中不能改变的量

1.整型常量:正整数、负整数、零表示形式:(1)十进制:[±][若干个0~9数字]注意:数字部分不以0开头(2)八进制:[±][0][若干个0~7数字](3)十六进制:[±][0x][若干个0~9数字及A~F

的字母(大小写均可)]

142.2常量和变量2实型常量一般形式:[整数部分][小数点][小数部分]如12.5-12.5指数形式:[尾数][E][指数部分]规则:E前必须有数字,E后必须是整数如1.25E1-1.25E1152.2常量和变量字符常量定义:单引号括起来的单个字符,如‘a’,‘D’转义字符课本p25表2-2字符串常量定义:双引号括起来的字符序列字符串的长度,应有一字符串结束标志布尔常量

true(真)和false(假)162.2常量和变量二、变量(程序运行过程中可以改变的量)变量的声明格式存储类型数据类型变量名1,变量名2,...,变量名n存储类型包括:autoregisterexternstatic初始化:在声明变量的同时,可以初始化172.2常量和变量三、符号常量(给常量起个有意义的名字)格式:const数据类型说明符常量名=常量值;或数据类型说明符const常量名=常量值;注意:符号常量在声明时赋初值,程序中间不能赋值18数据类型

——常量与变量#include<iostream.h>voidmain(void){constintPRICE=30;

intnum,total;floatv,r,h;num=10;total=num*PRICE;cout<<total<<endl;r=2.5;h=3.2;v=3.14159*r*r*h;cout<<v<<endl;}常量变量变量先定义后使用符号常量Page19基本数据类型和表达式19#include<iostream.h>voidmain(void){constintPRICE=30;

intnum,total;floatv,r,h;num=10;

total=num*PRICE;cout<<total<<endl;r=2.5;h=3.2;v=3.14159*r*r*h;cout<<v<<endl;}数据类型

——整型数据整型常量shortunsignedshort2字节int、unsignedint

4字节longunsignedlong4字节整型变量整型变量声明基本数据类型和表达式20数据类型

——变量赋初值例:

inta=3;

doublef=3.56;

charc='a';

intc=5;Page21基本数据类型和表达式21数据类型—不同类型数据混合运算时的类型转换不同类型数据进行混合运算时,C++编译器会自动进行类型转换。为了避免不同的数据类型在运算中出现混淆,应尽量使用同种类型数据。可以采用强制类型转换:

例如:

floatc;

inta,b;

c=float(a)/float(b);或c=(float)a/(float)b;基本数据类型和表达式22变量的存储类型auto存储类属于一时性存储,其存储空间可以被若干变量多次覆盖使用。register存储类存放在通用寄存器中。extern存储类在所有函数和程序段中都可引用。static存储类在内存中是以固定地址存放的,在整个程序运行期间都有效。基本数据类型和表达式23运算符和表达式初等运算符:()[].->单目运算符:++--算术运算符:关系运算符:逻辑运算符:条件运算符(三目运算符)赋值运算符逗号运算符

高优先级低

单目、三目和赋值运算符的结合方向是自右向左,其他自左向右24算术运算符与算术表达式基本算术运算符+-*/%(取余)

(若整数相除,结果取整)优先级与结合性先乘除,后加减,同级自左至右++,--(自增、自减)

例:i++;j--;Page25基本数据类型和表达式25赋值运算符和赋值表达式

简单的赋值运算符"="举例:

n=n+5类型:

等号左边对象的类型值:

等号左边对象被赋值后的值Page26基本数据类型和表达式26赋值运算符和赋值表达式

复合的赋值运算符有10种复合运算符:

+=,-=,*=,/=,%=,

<<=,>>=,&=,^=,|=例:a+=3等价于a=a+3

x*=y+8等价于x=x*(y+8)基本数据类型和表达式27赋值运算符和赋值表达式

——赋值表达式举例a=5 表达式值为5a=b=c=5 表达式值为5,a,b,c均为5a=5+(c=6) 表达式值为11,a为11,c为6a=(b=4)+(c=6)

表达式值为10,a为10,b为4,c为6a=(b=10)/(c=2)

表达式值为5,a为5,b为10,c为2a+=a-=a*a相当于:a=a+(a=a-a*a)Page28基本数据类型和表达式28逗号运算和逗号表达式格式:表达式1,表达式2求解顺序及结果:先求解1,再求解2,最终结果为表达式2的值例a=3*5,a*4

最终结果为60Page29基本数据类型和表达式29关系运算与关系表达式关系运算是比较简单的一种逻辑运算,优先次序为:

<<=>>=

==!=

优先级相同(高)优先级相同(低)关系表达式是一种最简单的逻辑表达式其结果类型为bool,值只能为true或false。例如:a>b,c<=a+b,x+y==3基本数据类型和表达式30逻辑运算与逻辑表达式逻辑运算符:

!(非)&&(与)||(或)

优先次序:高→低逻辑表达式

例如:(a>b)&&(x>y)

其结果类型为bool,值只能为true或false。基本数据类型和表达式31条件运算符与条件表达式一般形式:表达式1?表达式2:表达式3表达式1必须是bool

类型执行顺序:先求解表达式1,若表达式1的值为true,则求解表达式2,表达式2的值为最终结果若表达式1的值为false,则求解表达式3,表达式3的值为最终结果基本数据类型和表达式32条件运算符与条件表达式注意:条件运算符优级高于赋值运算符,低于逻辑运算符结合方向为自右至左表达式2、3的类型可以不同,条件表达式的最终类型为2和3中较高的类型。基本数据类型和表达式33sizeof操作符语法形式

sizeof(类型名)

或sizeof(表达式)结果值:

“类型名”所指定的类型或“表达式”的结果类型所占的字节数。基本数据类型和表达式34混合运算时数据类型的转换

——隐含转换一些二元运算符(算术运算符、关系运算符、逻辑运算符、位运算符和赋值运算符)要求两个操作数的类型一致。在算术运算和关系运算中如果参与运算的操作数类型不一致,编译系统会自动对数据进行转换(即隐含转换),基本原则是将低类型数据转换为高类型数据。

charshortintunsignedlongunsignedlongfloatdouble

低高基本数据类型和表达式35混合运算时数据类型的转换

——隐含转换参与运算的操作数必须是bool型,如果操作数是其它类型,编译系统会自动将非0数据转换为true,0转换为false。位运算的操作数必须是整数,当二元位运算的操作数是不同类型的整数时,也会自动进行类型转换,赋值运算要求左值与右值的类型相同,若类型不同,编译系统会自动律将右值转换为左值的类型。基本数据类型和表达式36混合运算时数据类型的转换

——强制类型转换语法形式:类型说明符(表达式)或(类型说明符)表达式强制类型转换的作用是将表达式的结果类型转换为类型说明符所指定的类型。基本数据类型和表达式37赋值语句格式:赋值表达式;赋值语句与赋值表达式的区别:赋值表达式可以包含在其它表达式中,

而赋值语句不可。例:if((a=b)>0)t=a;不可写为:if((a=b;)>0)t=a;38简单的输入、输出向标准输出设备(显示器)输出例:intx;

cout<<“x=“<<x;从标准输入设备(键盘)输入例:intx;

cin>>x;39顺序结构选择结构循环结构算法的基本控制结构40流程图的标准符号准备决策数据输入输出预定义过程开始和结束联系准备流线41顺序结构顺序结构举例设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积圆周长l=2πr圆柱体积vz=πr2h圆面积s=πr2圆球表面积sq=4πr2圆球体积vq=3

πr2/442开始输入r,hl=2*π*rs=π*r*rsq=4*π*r*rvq=3/4*π*r*r*r11vz=π*r*r*h输出l,s,sq,vq,vz结束43源程序#include<iostream.h>constdoublePI=3.1415926535897;voidmain(){doubleh,r,l,s,sq,vq,vz;cout<<r<<h;l=2*PI*r;s=r*r*PI;sq=4*PI*r*r;cout<<l<<s<<sq;}44例2输入x,y,然后交换x,y中值#include<iostream.h>voidmain(){

intx,y,t;cout<<“Pleaseinputxandy:\n”;cin>>x>>y;t=x;x=y;y=t;cout>>x>>y;}45选择结构条件

ABYN条件

AYN46根据表达式的值进行选择ABMN...p=p1p=p2p=pmp=pn47选择结构if语句--–三种形式1.if(表达式)语句条件

AYN举例:两个数比较大小,输出大者#include<iostream.h>voidmain(){

intx(3),y(5),max;max=x;if(y>max)max=y;cout<<max;}482.if(表达式)语句1else语句2表达式语句1语句2YN举例:两个数比较大小,输出大者#include<iostream.h>voidmain(){

intx(3),y(5),max;if(x>y)max=x;elsemax=y;cout<<max;}493.if(表达式1)语句1

elseif(表达式2)语句2

elseif(表达式3)语句3

else语句n

表达式1表达式2假表达式3假表达式4假假语句1语句3语句4语句5语句2真真真真50给定函数关系:xyx<0 x-1x=0 xx>0 x+151x<0x=0假假y=x-1y=xy=x+1真真输入x开始输出y结束52源程序#include<iostream.h>voidmain(){

intx,y;cin>>x;if(x<0)y=x–1;elseif(x==0)y=x;elsey=x+1;cout<<y;}53说明:if后的表达式一般为逻辑表达式或关系表达式如果if和else内嵌多个语句时,将这几个语句用{}括起来,构成复合语句

举例:输入3个数,要求按照从小到大的顺序输出54一般形式if()if()语句1

else语句2elseif()语句3

else语句4注意语句1、2、3、4可以是复合语句,每层的if与else配对,或用{}来确定层次关系。if语句

——嵌套算法的基本控制结构55switch语句-多分支选择结构switch(表达式){

case常量表达式1:语句1

case常量表达式2:语句2...

case常量表达式n:语句ndefault:语句n+1}当表达式的值与case后的某一个常量表达式的值相等,就执行该case后的语句;若没有匹配的常量表达式,执行default后的语句56使用switch语句应注意的问题case分支可包含多个语句,且不用{}。表达式、判断值都是int型或char型。若干分支执行内容相同可共用一组语句。算法的基本控制结构57特殊的多分支结构例2-4输入一个0~6的整数,转换成星期输出。算法的基本控制结构58#include<iostream.h>voidmain(void){ intday;

cin>>day; switch(day) { case0: cout<<"Sunday"<<endl; break; case1: cout<<"Monday"<<endl; break; case2: cout<<"Tuesday"<<endl; break;

59case3:cout<<"Wednesday"<<endl; break; case4: cout<<"Thursday"<<endl; break; case5: cout<<"Friday"<<endl; break; case6: cout<<"Saturday"<<endl; break; default:

cout<<"DayoutofrangeSunday..Saturday"

<<endl; break; }}60如何有效地完成重复工作例2-5求自然数1~10之和分析:本题需要用累加算法,累加过程是一个循环过程,可以用while语句实现。算法的基本控制结构61#include<iostream.h>voidmain(){inti(1),sum(0);while(i<=10){sum+=i;i++;}cout<<"sum="<<sum

<<endl;}运行结果:sum=5562while语句形式while(表达式)语句

可以是复合语句,其中必须含有改变条件表达式值的语句。执行顺序先判断表达式的值,为true时,再执行语句。算法的基本控制结构63先执行循环体,后判断条件的情况例2-6输入一个整数,将各位数字反转后输出。算法的基本控制结构64#include<iostream.h>voidmain(void){ intn,right_digit,newnum=0; cout<<"Enterthenumber:"; cin>>n;

cout<<"Thenumberinreverseorderis"; do { right_digit=n%10; cout<<right_digit; n/=10; } while(n!=0);

cout<<endl;

}65运行结果:Enterthenumber:365Thenumberinreverseorderis56366do-while语句一般形式do语句while(表达式)可以是复合语句,其中必须含有改变条件表达式值的语句。执行顺序先执行循环体语句,后判断条件。

表达式为true时,继续执行循环体与while语句的比较:While语句执行顺序

先判断表达式的值,为true时,再执行语句算法的基本控制结构67对比下列程序:程序1:#include<iostream.h>voidmain(){inti,sum(0);cin>>i;while(i<=10){sum+=i;i++;}cout<<"sum="<<sum<<endl;}算法的基本控制结构程序2:#include<iostream.h>voidmain(){inti,sum(0);cin>>i;do{sum+=i;i++;}while(i<=10);cout<<"sum="<<sum<<endl;}68for语句语法形式for(表达式1;表达式2;表达式3)语句

循环前先求解非0时执行循环体每次执行完循环体后求解算法的基本控制结构69例2-8输入一个整数,求出它的所有因子。算法的基本控制结构70#include<iostream.h>voidmain(void){ intn,k; cout<<"Enterapositiveinteger:"; cin>>n; cout<<"Number"<<n<<"Factors"; for(k=1;k<=n;k++) if(n%k==0) cout<<k<<"";cout<<endl;}71运行结果1:Enterapositiveinteger:36Number36Factors123469121836运行结果2:Enterapositiveinteger:7Number7Factors1772循环结构的嵌套#include<iostream.h>voidmain(){ inti(1),a(0); for(;i<=5;i++) { do{ i++; a++; }while(i<3); i++; } cout<<a<<”,”<<i<<endl;}算法的基本控制结构73例2-9编写程序输出以下图案*************************算法的基本控制结构74#include<iostream.h>voidmain(){inti,j,n=4;for(i=1;i<=n;i++)//输出前4行图案{for(j=1;j<=30;j++)cout<<'';//在图案左侧空30列

for(j=1;j<=8-2*i;j++)cout<<'';for(j=1;j<=2*i-1;j++)cout<<'*';cout<<endl;}

75

for(i=1;i<=n-1;i++)//输出后3行图案{for(j=1;j<=30;j++)cout<<'';//在图案左侧空30列

for(j=1;j<=7-2*i;j++)cout<<'*';cout<<endl;}}76循环结构与选择结构相互嵌套#include<iostream.h>voidmain(){

intn; for(n=100;n<=200;n++) { if(n%3!=0) printf(“%d”,n); }}算法的基本控制结构77例2-10读入一系列整数,统计出正整数个数i和负整数个数j,读入0则结束。分析:需要读入一系列整数,但是整数个数不定,要在每次读入之后进行判断,因此使用while循环最为合适。循环控制条件应该是n!=0。由于要判断数的正负并分别进行统计,所以需要在循环内部嵌入选择结构。算法的基本控制结构78#include<iostream.h>voidmain(){inti=0,j=0,n;cout<<"请输入若干整数(输入0则结束):";

cin>>n;while(n!=0){if(n>0)i+=1;if(n<0)j+=1;cin>>n;}cout<<"正整数个数:"<<i<<"负整数个数:"<<j<<endl;}79break和continue语句break语句使程序从循环体和switch语句内跳出,继续执行逻辑上的下一条语句。不宜用在别处。continue语句结束本次循环,接着判断是否执行下一次循环。算法的基本控制结构80typedef语句为一个已有的数据类型另外命名语法形式typedef已有类型名新类型名表;例如typedefdoublearea,volume;typedefint

natural;naturali1,i2;areaa;volumev;自定义数据类型81结构体——结构的声明结构的概念结构是由不同数据类型的数据组成的集合体。声明结构类型

struct结构名{数据类型成员名1;数据类型成员名2;:数据类型成员名n;};自定义数据类型82结构体——结构的声明举例:structstudent//学生信息结构体{

intnum;//学号

charname[20];

温馨提示

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

评论

0/150

提交评论