计算机 第二章_第1页
计算机 第二章_第2页
计算机 第二章_第3页
计算机 第二章_第4页
计算机 第二章_第5页
已阅读5页,还剩91页未读 继续免费阅读

下载本文档

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

文档简介

第二章C++基础知识西南交通大学软件学院计算机基础教研室计算机程序设计基础与VisualC++8/19/20231教学内容1.C++程序的基本框架2.C++程序运行与调试方法3.变量与常量4.各种运算符与表达式5.类型转换2C++基本程序框架示例:

编写程序:在计算机屏幕上显示:

Hello,C++!3源程序清单://屏幕输出Hello,C++!#include<iostream>//预编译命令usingnamespacestd;//using命令voidmain()//主函数名{ //表示函数的开头cout<<"Hello,C++!"<<endl;//函数体}//表示函数的结束注释预编译命令主函数输出语句4一、程序基本结构

1.注释程序中“//”符号表明本行后续字符为注释信息,该信息与程序的运行无关,在编译时被忽略。另一种注释方法: /**/夹在“/*”与“*/”之间的所有字符为注释信息。52.预编译命令

#include文件名 预编译命令编译程序时把指定的文件的内容插入到该行的位置。 #include<iostream>表示把库文件iostream中的内容包含到该程序文件中来。

库文件是系统提供的能实现某些特定功能的文件,如本例中用到系统提供的输出功能。多条#include命令必须分行书写。6包含库文件时有两种可能形式: #include<iostream> usingnamespacestd;或 #include<iostream.h> 早些系统实现是将标准库功能定义在全局空间中,声明在带.h后缀的头文件中 C++标准程序库中的所有标识符都定义在名为std的名称空间中7 指出包含的文件名可以使用<>和“”两种符号 #include<iostream> #include“c:\jys\iostream”<>表示只在系统目录中寻找要包含的文件“”表示在指定的路径中寻找要包含的文件83.主函数

C++程序由一个或多个函数组成,其中,主函数main必须有且只有一个。

voidmain() {函数体}(1)void称为空类型,表示函数没有返回值;(2)函数名之后必须有一对小圆括号(),括号中可以有参数。9(3)“{”与“}”必须配对使用,“{}”之间的内容为函数体,函数体内可以包含任意多行语句。(4)C++规定每个语句的最后以“;”结束。(5)C++程序的书写很灵活,一行可书写多个语句,一个语句可以写成多行,但书写时首先应该考虑程序的可读性。10 通常采用缩进格式:按不同层次的结构,从不同的起始位置写起 intabc() { …; …; for() { …; if() { …; } } }11主函数的书写也可以是如下形式: intmain() { 函数体 return0; }

int表示函数返回一个整型的数据12C++程序可以由多个函数组成,main函数在程序中位置可以任意,但主函数main代表了程序执行的起始点和终止点,即程序总是从主函数main的第一条语句开始执行,并结束于主函数的最后一条语句。

13cout语名用于输出,使用格式为:

cout<<输出内容cout是一个标准输出流对象,表示标准输出设备——计算机屏幕。符号“<<”是插入运算符,它指示计算机把其右端的内容送到屏幕。

注意:C++区分大小写,所有标点必须使用西文标点,只有双引号、注释里可使用中文。

4.输出语句14#include<iostream>usingnamespacestd;voidmain(){

…… 语句部分}.. 其他函数.

5.程序的基本框架结构为:变量定义语句;输入语句;算法语句;输入语句;15二、开发过程中涉及到的程序1.源程序:用源语言写的,有待翻译的程序2.目标程序:也称为"结果程序",是源程序通过翻译程序加工以后所生成的程序。3.翻译程序:是指一个把源程序翻译成等价的目标程序的程序。16源程序源程序目标程序翻译程序汇编程序编译程序解释程序 是把用汇编语言写成的源程序,转换成机器语言形式的目标程序。 将高级程序设计语言所写的程序,一次性完全转换成机器语言形式的目标程序 将高级语言源程序转换成机器指令的目标程序。它的特点在于:边翻译边执行17C++程序运行与调试方法1、编辑将源程序输入到计算机中,生成后缀为.cpp的程序文件。2、编译将程序的源代码转换为机器语言代码,生成后缀名为.obj的文件。一、C++程序编辑与运行过程183、链接将多个源程序文件以及库中的某些文件连在一起,生成一个后缀为.exe的可执行文件。4、运行调试19二、VC++集成环境及操作1、VisualC++6.0的安装 书P236~P244页2、基本操作(书P19~P24页) 1)创建项目 2)在项目中添加源文件 3)编辑 4)保存 5)编译 6)调试 7)链接 8)执行20常量与变量 程序处理的对象是数据,数据有数值数据、文字数据、图像数据、声音数据等多种形式,最基本、最常用的数据是数值数据和文字数据。21不同类型的数据占据不同长度的存储单元 例如: char1字节

int4字节不同类型的数据对应不同的值域范围 例如:short2字节 -32768~32767 int 4字节-2147483648~2147483647不同类型的数据对应不同的操作(运算)及规则22C++数据类型基本数据类型非基本数据类型整型实型双精度型字符型布尔型数组指针引用类结构联合枚举不同种类的数据是通过数据类型来表示的23根据程序运行过程中,值是否可以改变,C++中的数据可分为常量和变量两大类。值可以改变的量称为变量,值不能被改变的量称为常量。一、常量常量有字面值常量和符号常量两种,字面值常量又称为常数或直接常量,是在程序直接使用的值。C++中的字面常量有整型、实型、字符型、布尔型、字符串型五类241、字面值常量

1)整型常量整型常量包括正整数、负整数和零。C++中的整型常量可以用十进制、八进制和十六进制表示:①十进制:如15,-235,0②八进制:以0打头,如07,0327,-02③十六进制:以0X或0x打头,如-0x7,OX5bf25例如: 15+30= 015+030= 0x15+0x15=453742了解:长整型常量的表示方法是加后缀字母l或L,如712l,0x5fL

无符号型整型常量的表示方法是加后缀字母u或U,如712u,0x5fU262)实型常量(浮点数或实型常数)

小数形式(一般形式):由正负号、数字和小数点组成,必须有且仅有一个小数点。 例如: 0.0,1.0,-2.68,3.141593, 637.312,-32768.0,...27

科学记数形式(指数形式):用字母e或者E表示10的幂次。 注意:E前后必须有数字,指数部分必须为整数。 例如:

0.0E0,-6.226e-4,1.267E20,... 实型(浮点型)常量只有十进制。尾数e或E指数28 实型常量分单精度(float)、双精度(double)和长双精度(longdouble)三种:

不加说明(隐含)的实型常量是double型;

float型常量必须在实数后加F(或f);

longdouble型常量须在实数后加L(或l)。 如:-1.5是双精度常量 0.4E3f是单精度常量 4.5e2L是长双精度常量293)字符型常量 单个字符的ASCII码,是一个整型数值。 程序中直接使用ASCII码值很不直观,如:ASCII码为48和97分别代表字符0和a。 C++引入了一套助记符号来表示ASCII码:

普通字符常量:字母、数字和标点符号等可见字符,其助记码就是在该符号两边加上单引号。 例如:'a','A','1','+',...30

转义字符常量:控制字符等不可见字符及其他一些特殊字符采用由一个反斜杠符和一个符号组成的转义字符表示:字符表示功能字符表示功能\a响铃\f换页\v垂直制表符\\字符“\”\t水平制表符\"双引号\n换行\'单引号\b退格\nnn用八进制数表示\r回车\xnn用十六进制数表示31附录IASCII代码表32

示例:#include<iostream>usingnamespacestd;voidmain(){ cout<<'\''<<endl; cout<<'\"'<<endl; cout<<'\"'<<'\b'<<'a'<<endl; cout<<'\\'<<endl; cout<<'\a'<<endl; cout<<'\141'<<endl; cout<<'\x61'<<endl;}//输出单引号//输出双引号//退格//反斜杠//响铃//输出字符a//输出字符a334)字符串型常量即用双引号括起来的一串字符。如:

"VisualC++","12.34",

"Thisisastring.\n",...

字符串常量在内存占用的实际存储字节数要比字符串中的字符个数多1个,即在字符串的尾部还要添加一个'\0'字符,用以表示字符串的结束。

"CHINA"

"a"

'a'CHINA\0a

\0a34[例]编程输出下列文本**********2008北京欢迎你!**********源程序清单:#include<iostream>usingnamespacestd;voidmain(){ cout<<"**********"<<endl; cout<<"2008北京欢迎你!"<<endl; cout<<"**********"<<endl;}35示例:#include<iostream>usingnamespacestd;voidmain(){cout<<12345<<endl; cout<<"12345\n"; cout<<"'VC++6.0'是\"VisualC++6.0\"的缩写\n";}//输出数值//输出字符串//输出字符串:'VC++6.0'是"VisualC++6.0"的缩写365)布尔型常量布尔型数据的取值:

只有false和true两种布尔型数据也可以和数值型数据参与运算,此时:true相当于1false相当于0这种情况下,vc++6.0编译系统会给出警告信息,建议不要这样使用布尔型数据372、符号常量 关键字const用来说明属于某种数据类型的符号常量,定义方法为:

const数据类型说明符常量名=常量值; 或:数据类型说明符const常量名=常量值; constdoublePI=3.141592653; constcharOP=‘+’;

38注意:符号常量的名称习惯使用大写字母;在定义符号常量时必须赋值;定义了的符号常量只能读取它的值,而不能再改变它的值。若数据类型为int,则类型可省略39[例]编程实现:求圆的面积和周长。算法描述:

定义符号常量PI定义double变量r,area、circum输入半径值到变量r;计算圆面积area=PI*r*r计算圆周长circum=2*PI*r输出圆面积和周长40#include<iostream>usingnamespacestd;voidmain(){

}constdoublePI=3.141592653;doubler,area,circum;area=PI*r*r;circum=2*PI*r;cout<<"面积为:"<<area<<endl;cout<<“周长为:“<<circum<<endl;cin>>r;41二、变量变量是用于临时存放数据的内存单元,在程序运行的过程中该内存单元的内容可以改变 变量必须“先定义,后使用”。变量在定义时必须指出变量名、变量的数据类型。变量名就是对应内存空间的名称,而变量的数据类型指出了分配的内存空间的大小。421、变量的名称①不同语言系统可使用的字符有所不同,C++中可使用的字符集: 大小写的英文字母:A~Z,a~z 数字字符:0~9 特殊字符: 空格! # % ^ & * _(下划线)+ = - ~< > / \ ' " ; . , () [] {}43②变量的命名必须遵循C++的标识符命名规则。 所谓标识符就是指在程序中声明变量、数组、函数和标号等的名称。分为系统保留字和用户自定义标识符。 系统保留字又叫关键字(参见附录P245页),有预定的含义,不允许用户重新定义,也不允许用户定义的标识符与其同名。44③用户自定义标识符的规则:标识符只能包含字母、数字和下划线;必须以字母或下划线开头;不能使用关键字;大小写敏感;例如:sum_1 2max short452、变量的数据类型

内存单元可存储的数据数据类型占用内存字节数取值范围整型短整型short2-32768~32767整型int4-2147483648~2147483647长整型long4-2147483648~2147483647实型单精度型float4±3.4e-38~±3.4e38双精度型double8±1.7e-308~±1.7e308长双精度型longdouble10±3.4e-4932~±1.1e4932字符型char1一个字符布尔型bool1true,false46变量的数据类型还可分为有符号型和无符号型(加前缀unsigned),默认为有符号型,无符号型数据将符号位用于表示数值,扩大了变量的表数范围

例如:unsignedshort0~65535 short-32768~32767选择数据类型时应考虑溢出问题,即存放的数据超出了存储范围,使得结果出错473、变量的定义格式: 向变量内存放相应类型的数据称为变量的赋值。变量定义完成之后、参与运算之前,必须为其赋值。变量的赋值语句格式为:数据类型 变量名1(,...变量名n);变量名1=值1;变量名2=值2;...变量名n=值n;48 也可以在定义变量的同时为变量赋值,称为变量的初始化。此时变量的定义语句格式为:数据类型 变量名1=值1(,…变量名n=值n);数据类型 变量名(初值);49

1)整型变量 整型变量用来存放整型的数值;整型变量的数据类型有:

short,int,long 如: inti,j,k=1;//说明了3个整型变量

longlen; //说明了1个长整型变量

50

2)实型变量(浮点型变量) 实型变量用来存放实数值;实型变量的数据类型有:

float,double,longdouble 如: floataverage,sum; //说明了两个浮点类型变量。 doubledistance,weight(52.5); //说明了两个双精度类型的变量。51

3)字符型变量 字符型变量用来存放单个字符;字符型变量的数据类型为:

char

如: chara,b;

52

4)字符串型变量: 字符串型变量用来存放字符串(一串字符);它不是C++的基本数据类型,是在string库文件中定义的一种扩展类型,其数据类型名称为:

string53 使用string声明字符型变量需加文件包含命令:

#include<iostream> #include<string> usingnamespacestd; 不能用 #include<iostream.h> 例: stringname,address;54 5)布尔型变量 布尔型变量的数据类型为:

bool 布尔型变量只能取两种值:

true/false或1(非0)/0. 如: boolt,f; t=true;t=1;t=false;t=0; 布尔型数据可以和数值型数据参与运算,此时: true相当于1;false相当于0。 但通常不这样用布尔型数据。55三、数据的输入输出C++使用数据流来执行标准输入输出操作 计算机屏幕是标准输出流设备,称为cout,把cout流看作是通过计算机屏幕发往用户的字符系列。 键盘是标准输入流设备,称为cin,把cin流看作是通过键盘发给计算机的字符系列。Page56561.数据的输入输入语句格式为:

cin>>V1>>V2>>…>>Vn;其中:V1,V2,…Vn为变量名 ">>"称为析出(提取)操作符作用:等待从键盘输入数据,接收后依次存入各变量V1,V2,…Vn。57

例如: 假设变量my_name、myAge、birthday均已定义;则从键盘输入my_name的C++语句为: cin>>my_name; 输入my_name、myAge、birthday的C++语句为: cin>>my_name>>myAge>>birthday;58 为增加程序的可读性,通常在输入语句前增加一条输出语句,这条输出语句输出一个字符串常量,用于提示操作者输入几个什么类型的数据。 例如: intx; cout<<"请输入一个整数:"; cin>>x;59

执行输入操作时应注意: 输入几个数据时,要用空格、回车或Tab键分隔开。 cin>>a>>b>>c; 运行时从键盘输入:3.52.1-4.3 3.5,2.1,-4.3错误

输入的数据个数、类型要与接收变量匹配。

inti,j;//定义为整型变量cin>>i>>j; 运行时从键盘输入:2 -82.5 -8错误 输入完所有数据后,用回车键表示输入结束602.数据的输出输出操作格式为:

cout<<E1<<E2<<…<<Em;其中:E1,E2,…,Em为表达式 "<<"称为插入操作符作用:将各表达式的值输出(显示)到屏幕上当前光标位置处。61例如: 在屏幕上输出TodayisSunday cout<<"TodayisSunday"; 屏幕上输出已计算好的变量grade的值: cout<<grade; 或: cout<<"grade="<<grade; 屏幕上输出2092+378的值: cout<<2092+378;62 在输出语句中,endl起换行输出的作用。例如: cout<<a<<endl; cout<<b<<endl; cout<<c<<endl;或: cout<<a<<endl<<b<<endl<<c<<endl;和endl起相同作用效果的表达方式有?63[例]求键盘输入的两个数的和

思路分析:本题未指定数据类型,为避免数据溢出,数据类型最好定义为double型。算法描述:

定义三个double型变量a、b、sum提示输入两个数从键盘输入一个数到a变量从键盘输入第二个数到b变量计算a与b的和放到sum变量中将sum的值输出到屏幕64#include<iostream>usingnamespacestd;voidmain(){}源程序清单doublea,b,sum;cout<<"请输入两个数:";cin>>a>>b;sum=a+b;cout<<a<<"+"<<b<<"="<<sum<<endl;65运算符与表达式我们把运算符、运算量(也称操作数)构成的用于计算的公式称为表达式。执行表达式所规定的运算得到的结果值便是表达式的值。C++提供了丰富的运算符。从功能上分可分为算术运算符、条件运算符、逻辑运算符、赋值运算符,逗号运算符、条件运算符等;从表现形式上可分为单目运算符、双目运算符及三目运算符等。

66单目运算符,又称为一元运算符

运算符操作数

(- !--++)双目运算符,又称为二元运算符

操作数1运算符操作数2

(+-*/%)三目运算符 条件运算符(问号运算符)67 C++中的运算符具有优先级和结合性

优先级是指当表达式中运算符的执行顺序。在C++中,优先级以阿拉伯数字表示,数值越小级别越高。计算机按照优先级由高到级逐一运算处理。一般而言,单目运算符的优先级高于双目运算符。

结合性是指当表达式中的多个运算符优先级相同时,是按照从左至右的顺序执行,还是从右至左的顺序执行,从左至右称为左结合,从右至左称为右结合。68一、算术运算符与算术表达式基本算术运算符的功能、优先级别:Page69运算符运算优先级别()改变正常优先级1-负号2*,/,%乘法、除法、求余运算3+,-加、减法4691.*号不能省略乘号:(x+y)(x-y)应写成(x+y)*(x-y)2./号两整数相除时,结果为整数:8/3=23.求余(取模)运算符:% 求余运算只能用于整型常量或整型变量所组成的表达式中。 10%3得1;13%5得3;12%4得0; 23.3%4非法Page7070示例: 设inta=5,b=2;floatc=5.0,d=2.0;分别求a/b,a%b,c/d,a+a%b/b,a%d的值。 解: a/b= a%b= c/d= a+a%b/b= a%d=22.515非法表达式71示例:1)已知inta=3467,写出计算其个、十、百、千位的表达式。 解: 2)写出奇数、偶数的通式。解:偶数: 奇数:a%10a/10%10a/100%10a/1000%10x%2为0;x%2为172[例]求键盘输入的两个非0整数的和、差、积以及平均数

算法描述Page73定义int型变量a,b,sum,sub,mul定义一个double型变量avg提示输入两个整数从键盘输入变量a、b的值求和sum=a+b;求差sub=a-b;求积mul=a*b;求平均数avg=(a+b)/2.0;输出sum,sub,mul,avg的值73源程序清单#include<iostream>usingnamespacestd;voidmain(){

}

inta,b,sum,sub,mul;doubleavg=0;cout<<"请输入两个非0整数:";cin>>a>>b;sum=a+b; sub=a-b;mul=a*b; avg=(a+b)/2.0;cout<<a<<"+"<<b<<"="<<sum<<endl;cout<<a<<"-"<<b<<"="<<sub<<endl;cout<<a<<"*"<<b<<"="<<mul<<endl;cout<<"平均数="<<avg<<endl;也可以按书上所述,不定义输出变量,直接将表达式的值输出。744.自增自减运算符

C++提供了自增(++)、自减(--)运算符,作用是使变量的值增加1或减少1。自增(++)、自减(--)运算符只能用于变量,不能用于常量。++、--结合方向自右向左。 如-i++表示 -(i++)75根据++、--在变量的前后位置不同,分为前置运算和后置运算两种:

前置运算 ++j或--jj的值先变,再将已变的j值作为表达式的值;

后置运算 j++或j--先将j的值作为表达式的值,再变化j76示例:1)y=2,x=y++;2)y=2,x=y--;3)y=2,x=++y;4)y=2,x=--y;5)已知:inta=8,b=10;写出顺次执行c=--a;d=b--;e=a--;f=--b;后a至f的值。先将y的值赋给x,y再自加1得3,结果为x=2,y=3先将y的值赋给x,y再自减1得1,结果为x=2,y=1y先自加1得3,然后将y的值赋给x,结果为x=3,y=3y先自减1得1,然后将y的值赋给x,结果为x=1,y=1解:a、b、c、d、e、f的值为6、8、7、10、7、8

77

示例:写出下面程序的输出结果#include<iostream>usingnamespacestd;voidmain(){ inta(4),b(5),c,d; c=(++a)*7/3+(b--)*3; cout<<"c="<<c<<endl; d=(a++)*2+(--b)/4*8; cout<<"d="<<d<<endl;} //c=26//d=1078二、赋值运算符与赋值表达式在程序运行中要改变变量的值,可以使用赋值语句。“=”为赋值运算符,当程序运行时,先求出赋值号右边表达式的值,然后再将结果存入赋值运算符左边的变量。(1)不能用赋值语句给常量赋值。(2)表达式的数据类型必须和要赋值变量的数据类型匹配,否则系统将进行隐式类型转换,编译时出现警告信息。79a=b=c=5; a=5+(c=6); a=(b=4)+(c=6);

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

表达式值为5,a为5,b为10,c为2(3)变量每次只能存储一个值,当另一个值赋给该变量后,新值会取代原有的值。(4)可用一条语句给多个变量赋值。示例:Page80表达式值为5,a,b,c均为5表达式值为11,a为11,c为680[例]编程计算奖金数额,奖金按销售额的5%计算

算法描述:

定义两个double型变量sales,bonus输出提示信息从键盘输入变量sales的值计算bonus=sales*0.05输出sales,bonus81源程序清单

#include<iostream>usingnamespacestd;doublesales=0.0;doublebonus=0.0;cout<<"请输入销售额:"<<endl;cin>>sales;cout<<"销售额为:"<<sales<<endl;cout<<"奖金为:"<<bonus<<endl;bonus=0.05*sales;voidmain(){}82部分复合赋值运算符 +=,-=,*=,/=,%=例如: a+=3;等价于a=a+3;

x*=y+8;等价于x=x*(y+8);inta(2),b(3),c(4);a*=b/=c-=a; a-=b*=c+=3; a=b=c=1;c=(a*=2)+(b+=3)+2;a+=a-=a*a;Page83//a=2,b=1,c=2//a=-3,b=5,c=5//a=2,b=4,c=8相当于:a=a+(a=a-a*a);a=-4 为了简化程序,在赋值运算符“=”之前加上其他运算符,构成复合赋值运算符83三、逗号运算符与逗号表达式

逗号运算符的使用格式为: 表达式1,表达式2,……表达式n运行时依次求解各个表达式的值,最后一个表达式n的值作为整个表达式的值。使用逗号表达式的目的一般只是想分别得到各个表达式的值,而并非一定需要得到和使用整个逗号表达式的值。逗号运算符是所有运算符中级别最低的运算符。已学运算符的优先级顺序为:算术运算符>赋值运算符>逗号运算符84[例]写出程序运行结果

#include<iostream>usingnamespacestd;voidmain(){intx=0,y=2;inta=5,i=0,j=0;x=(a=3*5,a*4);y=(i=2,j=2,i++,--j);cout<<x<<endl<<y<<endl;}60185类型转换

一、字符型数据的类型转换 由于字符型数据存放的实际上是相应字符的ASCII码的码值,可以把字符型数据可归类成整型。 字符数据和整型数据之间可以互相赋值、也可以运算。86 例如: intj; charm; j='a'; m=97; intc='A'+2; charc=65; intj='A'; cout<<c<<","<<j<<endl;能否m=“a”;?87例:阅

温馨提示

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

评论

0/150

提交评论