第讲-基本数据类型与表达式优秀文档_第1页
第讲-基本数据类型与表达式优秀文档_第2页
第讲-基本数据类型与表达式优秀文档_第3页
第讲-基本数据类型与表达式优秀文档_第4页
第讲-基本数据类型与表达式优秀文档_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

C++程序设计基础2008年春季学期第2讲基本数据类型与表达式(上)2本章内容

作业讲解常见错误基本数据类型数组及其应用本讲作业32.2常见错误与警告1、变量未定义或定义了却从未使用2、逻辑表达式错误(||与&&)3、IF…ELSE不匹配,或IF(表达式)中少了括号4、字符串与表达式的错误,如“y=x-5”是字符串5、cin>>x,y;

cin>>x>>y>>endl;之类的错误6、函数实现的函数头处写分号的错误(见上讲程序)7、函数未能按声明、使用、定义的原则(第四讲)重复上机过程!缺少函数头(在函数实现代码如main后面加了;就会出现)m[0]=1;m[1]=2;m[2]=3;s1="abcd";//error,too!5、cin>>x,y;cin>>x>>y>>endl;之类的错误不能与程序中的其他名字如函数名等同名符号常量名不能放在赋值语句的左边。另一个是地址值(所占内存空间的起始地址)inta[5];则元素为a[0]~a[4]long(signedlong),unsignedlong:4个字节有两个值:true和false;for(i=1;i<10;i++) if(a[i]>max)max=a[i];{if(x<y)一维数组元素的下标表示如下:voidmain()注意:"0"与'0'的不同。用一个与常量相关的标识符来替代常量出现在程序中,这种相关的标识符称为符号常量。无符号:00000000~11111111可表示0到255共256个数4常见错误及改正1、单词拼写错误void—viodmain---mianiostream--iosteamcout---countendl—end12、输出<<与输入>>用错cin<<"Entertwonumbers:">>x,y;

cout<<"Entertwonumbers:";cin>>x>>y;3、main后少了(),函数体少了{}或{}不匹配54、;用错,该有的没有,不该有的却有5、中文标点用错,特别是引号#include<iostream.h>void

main()

{ doublex,y; cout<<"Entertwofloatnumber:"; cin>>x>>y; doublez=x+y; cout<<"x+y="<<z<<endl;}不是“”!应该是;此处无;

errorC2018:unknowncharacter"0xa3"肯定是中文符号错常见错误及改正66、大小写错误void–Void前面是x,后面完成X7、函数后面接(),不是{}也不是[]unknowncharacter“0xa3”:不可知字符(中文符号)syntaxerror:missing";"beforetype"double""x":undeclaredidentifier:x:是没有声明的标识符4、unexpectedtokensfollowingpreprocessordirective-expectedanewline(若在#include行尾有;则有本条错误):在预处理命令后有一个意外的符号8、常见错误常见错误及改正75、missingfunctionheader(old-styleformallist?)

缺少函数头(在函数实现代码如main后面加了;就会出现)6、subscriptrequiresarrayorpointertype

下标需要数组或指针类型,max(2,4)误写成max[2,4]!7、"max":functiondoesnottake3parameters

函数不支持3个参数8、"main":functionshouldreturnavalue;"void"returntypeassumed

main前少了void

常见错误及改正89、localvariable"x"usedwithouthavingbeeninitialized

本地变量没有初始化就使用了10、function"void_cdeclmain(void)"alreadyhasabody

在程序中有两个main函数体!不能在同一文件中放两个程序的代码,一个程序中只有一个main函数!解决办法常见错误及改正911、编译与构建时文件名称不同Debug/aa.exe:fatalerrorLNK1169:oneormoremultiplydefinedsymbolsfound解决办法:关闭工作区-选择否-重新编译、构建常见错误及改正2.3基本数据类型基本数据类型类型修饰符常用数据类型C++语言的基本数据类型有如下4种:char(字符型)int(整型)float(单精度浮点型)

double(双精度浮点型)void(空值型)1)基本数据类型如:A,b,z12,989992)类型修饰符C++语言中还有四种类型修饰符:signed(有符号)unsigned(无符号)long(长型)short(短型)是否能为负数数的范围是否更宽无符号:00000000~11111111可表示0到255共256个数有符号:11111111~01111111可表示-128到+127共256个数0代表正,1代表负,×11111113)常用数据类型允许用修饰符组合构成的常用数据类型有:char(signedchar),unsignedchar:1个字节short(signedshort),unsignedshort:2个字节int(signedint),unsignedint:4个字节long(signedlong),unsignedlong:4个字节float:4个字节(大约6位有效数字)double:8个字节(大约12位有效数字)longdouble:10个字节(大约15位有效数字)4)常量和变量常量

是指在程序中不被改变的量变量

指在程序中其值可以被改变的量5)常量常量是指在程序中不被改变的量。常量有各种不同的数据类型,这由它的表示方法决定。1、整型常量2、浮点型常量3、字符型常量4、字符串常量5、符号常量1、整型常量有3种表示方式:十进制整数八进制整数(以0开头的整数)十六进制整数(以0X或0x开头的整数)如:123,-34,00123(=1*82+2*81+3*80)//等于数83

0X123//等于数291

-024,-0X32//不正确123L//长整型数123LU//无符号长整型数5)常量有两种表示:定点数形式和指数形式如://定点数形式//指数形式要注意E或e的前面要有数字,且E的后面的指数必须为整数。

E2,2.1E3.5,e//不合法实型常数分为单精度、双精度和长双精度3类。如:在C++中,一个实型常数未说明则表示是double型。2、浮点型常量5)常量是用单引号括起来的一个字符。如'a'、'!'等。转义序列表示方法:以反斜线(\)开头,后跟字符的ASCII码值;如'\n'

,它表示一个换行符。转义字符中可将反斜杠同八进制或十六进制数值结合使用,以表示相应于该数值的ASCII码。用八进制数表示时,所能表示的范围为'\000'~'\377',即从0~255。用十六进制数表示时,表示的范围是'\x00'~'\xff'。3、字符型常量5)常量C++中常用转义序列符5)常量4、布尔常量有两个值:true和false;在定义数组时,同时给各元素赋初值,这称为数组元素的初始化。&(a[0][0]+2*4+1)minv=min(x,min(y,z)); //计算最小值如变量名something和Something为不同的名字。另一个是地址值(所占内存空间的起始地址)用八进制数表示时,所能表示的范围为'\000'~'\377',即从0~255。注意:"0"与'0'的不同。inta[5];则元素为a[0]~a[4]字符串常量"a"在内存中doublez=x+y;inta[4]={1,2,3,4};例如:inta,b,c;doublex,y,z;表示定义了一个名为B的一维数组,其中有5个元素,类型都为整型。#include<iostream.分别设计一个求最大值与最小值的函数,求出最大、最小值及中间值,并输出;允许用修饰符组合构成的常用数据类型有:是由一对双引号括起来的字符序列。如:

"

Howdoyoudo?"

、"

hello"字符常量和字符串常量在存储方式上是不同的。字符常量只占一个字节的空间,而字符串常量除字符序列中每个字符占一个字节外,还要在最后多占一个字节空间用来保存一个'\0'字符(空字符)称为字符串结束标志符号。它是系统自动增加的。如:

"

hello"的长度为6,占6个内存单元。注意:

"0"与'0'的不同。5、字符串常量5)常量5)常量由一个字符型变量存放由一维数组存放字符常量字符串常量用单引号括起用双引号括起字符串有一个结束符,该结束符用'\0'表示字符常量'a'在内存中用一个字节字符串常量"a"在内存中占用两个字节可进行加、减法运算可进行连接、拷贝运算5、符号常量用一个与常量相关的标识符来替代常量出现在程序中,这种相关的标识符称为符号常量。定义方法须用类型说明符const。如:

constfloatpi=3.14159;定义成符号常量后,程序中对其值只能读而不能改变,否则出现编译错误。由于其常量值不可改变,所以该常量定义时必须初始化。注:符号常量名不能放在赋值语句的左边。5)常量地址值名字类型值三要素数据值地址值intc;c=5;内存5......c地址值1000H变量类型变量名数据值可以在程序中随时定义变量,只要在该变量被使用前定义即可;定义格式:<类型><变量名表>;例如:inta,b,c;doublex,y,z;变量是指在程序中其值可以被改变的量。6)变量<1>变量名C++将大写和小写的字母认为是不同的字母。如变量名something和Something为不同的名字。命名变量名的规则为:不能为关键字遵循标识符的命名规则不能与程序中的其他名字如函数名等同名一般讲究见名知意一般变量名全用小写字母。如myBook,theFox。6)变量必须先定义其类型才能使用该变量。如:unsignedmyAge,myWeight;floatmyScore;可用赋值运算符给变量赋值。如:intx(0);unsignedshortwidth;width=5;也可在定义时直接给变量赋值。这时所赋的一般是初始值,称为变量初始化。如:unsignedshortwidth=5;<2>变量类型6)变量如:inta;a=300;注意有两个值的概念:一个是数据值(存放在内存空间中的数据)另一个是地址值(所占内存空间的起始地址)<3>变量值内容起始地址空间大小由类型决定与变量名A关联对应变量值100110051009100d3006)变量2.4数组数组的定义数组的赋值字符数组数组的定义数组是一种用一个名字来标识一组有序且类型相同的数据组成的派生数据类型,它占有一片连续的内存空间。一维数组的说明形式为:类型说明符数组名[常量表达式];起始地址内容B100110051009100d1011对应元素值与数组名关联如:

intB[5];表示定义了一个名为B的一维数组,其中有5个元素,类型都为整型。定义时方括号内必须为常量形式,不能为变量。如:intsize=50;voidmain(){intarray[size];//error…}应为:constintsize=50;数组的定义数组的赋值1、数组元素的表示数组的赋值是给数组的各个元素赋值。数组的元素可以被赋值也可被赋初值。一维数组元素的下标表示如下:<数组名>[<下标表达式>]

如:

inta[5];则元素为a[0]~a[4]注意:a[5]不属于该数组的空间范围。又如:

intb[3][4];则元素为b[0][0]~b[2][3]。12345a[0]a[1]a[2]a[3]a[4]2、数组元素的赋初值在定义数组时,同时给各元素赋初值,这称为数组元素的初始化。规定:数组元素的个数不能少于初始值的个数。如:

inta[4]={1,2,3,4};inta[4]={2,3};//默认值为0inta[4]={1,2,3,4,5};//errorintb[2][3]={{1,2,3},{4,5,6}};intb[2][3]={1,2,3,4,5};intb[2][3]={{1,3},{2,4}};数组的赋值3、数组元素的赋值即用赋值表达式给每个数组元素赋值。如:

intm[3];m[0]=1;m[1]=2;m[2]=3;注意:m[3]=4;

//error也可用循环语句实现:如:

inta[5];for(inti=0;i<5;i++)a[i]=i*2+1;12345a[0]a[1]a[2]a[3]a[4]13579数组的赋值例如:计算由键盘输入的五个人的平均年龄#include<iostream.h>voidmain(){

intage[5];//数组声明intsum=0;for(inti=0;i<5;i++)

{cin>>age[i];//给数组赋值sum+=age[i];//累加数组元素之和cout<<"Enteranotherage:";

}cout<<"theaverageis:"<<sum/5.0<<endl;

}数组的应用举例字符数组字符数组是指数组类型为char的一种数组。如:

chars1[4]={'a','b','c','d'};chars2[5]={'a','b','c','d','\0'};chars2[5]="abcd";chars3[5]="abcde";//errorchars3[]="abcde";

//元素个数由初始值的个数决定charss[2][3]={{'a','b','\0''},{'c','d','\0'}};charss[2][3]={"ab","cd"};ss[0,0]ss[0,1]ss[0,2]ss[1,0]ss[1,1]ss[1,2]ab\0cd\0注意:

chars1[5];s1[5]="abcd";//error

s1="abcd";//error,too!

初始化时允许直接用字符串常量赋值,而在一般赋值时严禁直接对数组名操作,而只能对其中的元素逐个操作(因为数组名是一个指针常量!)。如:staticinta[]={1,2,4,8,16};for(inti=0;i<5;i++)

cout<<a[i]<<"";cout<<endl;

结果为:124816注意字符数组cout<<"最大值"<<"中间值"<<"最小值"<<endl;a[i]=rand()/300;//rand()值的范围是0-32768八进制整数(以0开头的整数)intsize=50;#include<iostream.#include<a[4]={1,2,3,4,5};//errorfor(i=0;i<10;i++)字符常量只占一个字节的空间,而字符串常量除字符序列中每个字符占一个字节外,还要在最后多占一个字节空间用来保存一个'\0'字符(空字符)称为字符串结束标志符号。&(a[0][0]+2*4+1)m[0]=1;m[1]=2;m[2]=3;cin>>x>>y;cout<<"Enteranotherage:";#include"iostream.h"voidmain(){inta[12];for(inti=0;i<12;i++)

{ a[i]=i+1;//元素赋值 if(i%4==0)cout<<endl;cout<<a[i]<<"\t";

}}123456789101112a[12]pa[0]a[1]a[2]a[9]a[10]a[11]给一维数组赋值,并按每行4个元素输出数组的应用举例2.5枚举类型枚举模式和枚举变量枚举变量的值枚举模式和枚举变量枚举类型是若干个有名字的整型常量的集合。枚举类型的定义格式为:

enum<枚举类型名>{<枚举常量表>};

如:

enumday{sun,mon,tue,wed,thu,fri,sat};这时,枚举常量所对应的常量值默认为0~6。枚举变量的定义格式为:enum<枚举类型名><枚举变量名表>;如:enumdayd1,d2,d3;也可连在一起写:

enumday{sun,mon,tue,wed}d1,d2,d3;如:

enumday{sun,mon,tue,wed,thu,fri,sat}d1,d2,d3;enumcolor{red,blue,yellow,black,white}c1,c2,c3;

则有:

d1=sun;d2=sat;c1=red;c2=blue;

但无:

d3=yellow;//集合中无该枚举常量值

c3=3;//枚举常量值并不能直接对应整型值若输出某个枚举变量的值则总是整型数值,而不是枚举符。如:cout<<d1<<c2;则输出:01若要输出sun和blue,则要通过编程实现。枚举变量的值随机生成数组的10个元素,求它们的最大值及平均值#include<iostream.h>#include<stdlib.h> //srand()及rand()函数#include<time.h> //包含time()函数voidmain(){inti,a[10],sum=0,max;srand((unsigned)time(NULL)); //使种子数随时间变化,否则每次运行结果相同//数组元素用随机函数赋值for(i=0;i<10;i++)

数组的应用举例a[i]=rand()/300;//rand()值的范围是0-32768//数组元素累加求和for(i=0;i<10;i++)sum=sum+a[i];//求数组的最大值(打擂算法)max=a[0];for(i=1;i<10;i++) if(a[i]>max)max=a[i];

//数组按每行5列输出for(i=0;i<10;i++)

{ if(i%5==0)cout<<endl; cout<<a[i]<<"\t"; }cout<<"\nmaxofarraya[]is"<<max<<endl;}数组的应用举例给二维数组a[3][4]赋值,并按每行4个元素输出123456789101112a[0][0]a[1][0]a[2][0]a[0][0]a[0][1]a[0][2]a[0][3]a[2][0]a[2][1]a[2][2]a[2][3]123456789101112a[2][3]a[0][0]a[i][j]是一维数组中的第几个元素?如a[2][1]:以首元素为基准,前面有2行(2*4个),有1列故有2*4+1=9,其地址为:&(a[0][0]+2*4+1)数组的应用举例给二维数组a[3][4]的第0行赋值a[0][0]a[0][1]a[0][2]a[0][3]123456789101112a[2][3]a[0][0]for(inti=0;i<4;i++) a[0][i]=i+1;for(inti=0;i<4;i++) a[1][i]=5+i;for(inti=0;i<4;i++) a[2][i]=9+i;给1行赋值给2行赋值数组的应用举例给二维数组a[3][4]的各行赋值a[0][0]a[0][1]a[0][2]a[0][3]for(inti=0;i<3;i++)//外循环,控制行

{

for(intj=0;j<4;j++)

//内循环,控制列{a[i][j]=4*i+j+1;cout<<a[i][j]<<"\t";}cout<<endl;}

2

3

45

6

7

89

10

11

12可把a[i][j]改为*(*(a+i)+j)数组的应用举例2.6本讲作业从键盘上输入三个整数,求出其中的最大与最小值(用条件运算符?:);分别设计一个求最大值与最小值的函数,求出最大、最小值及中间值,并输出;用for循环编程输出以下图形:******************************************4、编程求Sum=1!+2!+3!+…+10!之和。*************************voidmain(){ doub

温馨提示

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

评论

0/150

提交评论