C 程序设计基础_第1页
C 程序设计基础_第2页
C 程序设计基础_第3页
C 程序设计基础_第4页
C 程序设计基础_第5页
已阅读5页,还剩53页未读, 继续免费阅读

下载本文档

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

文档简介

会计学1C程序设计基础1.1C++语言概述1.C++语言与程序设计

语言:人类交流思想的工具

程序设计:就是将解决某个问题的过程用程序设计语言描述出来,计算机按这个描述去逐步实现。程序设计语言:编写程序的语言。C与C++语言

++第1页/共58页2.程序设计语言分为结构化程序设计语言(第1-4章)面向对象程序设计语言(第5-8章)解数学问题接近人的思维模式第2页/共58页Windows给软件编程带来的优缺点32位操作系统内存的管理特点软件与硬件的分离本教程的一个缺点:没有介绍操作系统原理好多DOS的观点第3页/共58页1.2C++程序开发过程:出错编辑源程序预处理程序编译程序连接程序装入程序输出结果执行程序输入、修改源程序出错出错磁盘输入数据为什么要装入第4页/共58页1.3C++程序实例

例1:在屏幕输出Hello,youarewelcome!/*Helloprogram*/#include<iostream.h>voidmain(){cout<<″Hello,youarewelcome!″;//你好,欢迎你!}程序说明:两种注释为什么要注释?

编译预处理行main()函数:void、函数体{…}、程序执行处语句:一行可以写若干条语句,每个语句用“;”作为结束。第5页/共58页例2:编写程序从键盘任意输入2个数,输出这2个数的和。#include<iostream.h>voidmain(){inta,b,n;cout<<″请输入两个数:″;cin>>a>>b;n=a+b;cout<<″a+b=″<<n<<endl;}程序说明:第3行为变量定义

第4行是输出语句第5行输入

第6行是赋值运算

第7行中endl也可以用“\n”代替,表示换行。

输入:123456第6页/共58页例3:

由两个函数组成的C++程序

#include<iostream.h>intfmax(inta,intb){if(a>b)returna;elsereturnb;}main(){intv1,v2;cout<<“请输入两个数:”;cin>>v1>>v2;cout<<“两个数中较大数是:”<<fmax(v1,v2)<<endl;return0;}第7页/共58页1.4基本数据类型

程序中处理的数据分为不同的类型。类型不同,存储方式和使用的场合也不同。

数据类型基本数据类型整型(int)字符型(char)符点型(float、double)布尔型(bool)非基本数据类型构造类型指针类型空类型(void)数组类型结构类型(struct)联合类型(union)枚举类型(enum)类类型(class)第8页/共58页基本数据类型:C++系统已定义的类型。可以直接利用这些类型名来定义数据。

类型名说明

字节

取值范围

bool布尔型

1true,false[signed]char有符号字符型

1-128~+127unsignedchar无符号字符型

10~255[signed]shortint有符号短整型

2-32768~32767unsignedshortint无符号短整型

20~65535[signed]int有符号整型

4-2147483648~+2147483647unsignedint无符号整型

40~4294967295[signed]longint长整型

4-2147483648~+2147483647unsignedlongint无符号长整型

40~4294967275)float浮点型

4(3.4×10-38~3.4×10+38)double双浮点型

8(1.7×10-308~1.7×10+308)longdouble长双浮点型

10(1.2×10-4932~1.2×10+4932)shortlongDOSC遗留第9页/共58页1.5常量、变量及引用

1.5.1

常量程序中可以直接使用的常数称为常量inta;a=3;常量分为:

整型浮点型字符型字符串常量布尔常量第10页/共58页1)整型常量十进制整数:

由0~9数字组成的正负整数,如0、15、-247。八进制整数:

以数字0开头的整数,由数字0~7组成,如015,0237。十六进制整数:

以0x或0X开头的整数,由数字0~9和字母a~f(或大写A~F)组成。例如:0x516,0x8AB,0xb2ff。八进制和十六进制只能表示无符号整数.任一整型常数后跟字母l(或L)时,为长整型.如:12345L任一整型常数后跟字母u(或U)时,为无符号整型.如:7895u

第11页/共58页浮点型数由整数部分和小数部分组成。浮点型常数有两种形式:

小数形式:3.14159,-0.55,-123.0。指数形式:+5.25e-80.5678e05、

其中:+5.25e-8表示+5.25×10-8

0.5678e+05表示0.5678×105

2)浮点型常量(又称实型)指数形式表示浮点型数时e(或E)前可以是整数或小数,但e后的指数部分必须是整型数。浮点型数总是按double类型存储的,只有在数的后面加上f才按float类型存储,如1.234E-6f。长双精度(longdouble)型常量通常在双精度数后面加上l或L表示,如

1.2345e-12L。说明:第12页/共58页3)字符型常量

字符型常量是用单引号括起来的单个字符

例如:′A′、′S′、′*′、′a′、′\n′

说明:

字符型常量中的单引号作为定界符,不是字符型常量内容。字符型常量具有数值,其值就是该字符的ASCII码值。而且值可以作为整数参与运算:如‘a’+5结果为字符‘f’如‘9’-6结果为数字字符‘3’如‘A′+32结果为’a‘

‘f’

–‘d’结果为整数2。可以是ASCII字符集中任意可打印字符,包括空格.转义字符(见表1-3)

第13页/共58页4)字符串常量

用双引号括起来的一串字符。例如:″Thisisastring″″a″

″ABC

xyz\n″″1234″″中国_天津″

说明:字符串中可以包含空格、转义字符、中文字符等。双引号作为字符串的定界符,计算字符串长度时双引号不计算在内。编译程序在存储字符串常量时自动在字符串最后加一个‘\0’作为一个字符串的结束标志,‘\0’占一个字节位置。一个字符占一个字节,一个汉字占两个字节。在程序设计中字符串通常用字符数组或字符指针存放。字符串常量等价于首地址第14页/共58页5)布尔常量布尔常量仅有两个值,即true(真)和false(假)。

第15页/共58页

6)符号常量

为常量起一个名字,称为符号常量。符号常量在使用前必须进行说明。符号常量的说明形式为:const数据类型名

常量名=常量值;或数据类型名

const常量名=常量值;

例如:

constintm=100;constfloatpi=3.14159;说明:符号常量在说明时一定要赋初值,其值程序中不能修改。符号常量名不要和一般变量名重名。使用符号常量可以提高程序的可读性,增强程序的可维护性。

第16页/共58页1.5.2变量

1)标识符用来为变量、符号常量、数组、函数、类型等命名。强调变量对应于内存中的一段空间命名标识符有以下规则:

必须由字母、下画线和数字组成第1个字符应是字母或下画线字符例如:a、x1、data_5、count等为合法的标识符

标识符的长度视具体的编译系统而定。不能使用C++的关键字作为标识符,例如:int、for等C++中变量名区分大小写,因此ex1和EX1是两个不同的变量名

第17页/共58页2)变量

——在程序中可以改变值的量称为变量。每个变量在内存中占有一定的存储单元,该存储单元中存放变量的值。在程序设计中可以根据需要改变变量的值。每个存储单元都有一个地址。

12.345变量名X1变量值存储单元第18页/共58页3)定义变量程序中的变量名在使用之前必须定义。例如:chara,b,c;

//定义a、b为字符型变量intx,y;

//定义x、y为整型变量longints1,s2;

//定义s1、s2为长整型变量floatdata_1,data_2;

//定义data1_1、

data_2为浮点型变量doublew1,w2//定义w1、w2为双精度型变量unsignedm,n;

//定义m、n为无符号整型变量

原因是使用前要得到内存第19页/共58页4)变量的初始化

——变量在定义的同时可以给其赋值。

例如:chara=‘A’;

intx=0,y=12;

doublew1=12.3456,w2=-0.4567e-4;

charch(‘B’);longintx1(1),y1(100);doubledata1(12.056),data2(-0.12345e-4);第20页/共58页程序举例:#include<iostream.h>voidmain(){intd1=5,d2=20;doublex1=12.5,x2=-5.0;charch1(‘*’),ch2(‘A’);cout<<d1+d2<<endl;cout<<x1-x2<<endl;cout<<ch1<<““<<ch2+3<<endl;}2517.5*D运行结果:第21页/共58页1.5.3引用

——程序中定义过的变量名再给它另一个名字,这个名字称为引用(reference)。

说明引用的形式为:数据类型

&引用名=变量名;或数据类型

&引用名(变量名);其中:变量名是已经定义过的一个变量名;

“&”是说明引用的符号;数据类型是被引用变量名的类型。例如:inta;int&refa=a;变量名和引用名是对同一个存储单元的操作

注意:问;为什不是整型变量定义第22页/共58页程序举例:#include<iostream.h>voidmain(){inta(5);int&rea=a;cout<<a<<″

″<<rea<<endl;rea=10;cout<<a<<″

″<<rea<<endl;}输出结果:5510

105area10area存储单元示意:第23页/共58页1.5.4枚举类型

将一些可能取值的量一一列举出来,称为枚举类型。

说明枚举类型的形式为:

enum枚举类型名{枚举元素};其中:enum是用于说明枚举类型的关键字。每个枚举元素就是枚举常量值。例如:

enum

colour{red,yellow,blue,white,black};定义枚举型变量形式:

enumcolour{red,yellow,blue,white,black}c1,c2;或enumcolour

m1,m2;第24页/共58页枚举型使用说明:1)枚举元素在说明后都自动有一个整数值。

例如:colour中,red的值为0,yellow的值为1,……,

black的值为4。

可以在说明枚举类型时另指定一个整数值,指定元素后边的各元素值按增1的顺序重新排列,而没有指定的元素值仍按系统自动给定的值。

例如:enum

d{east,west,south=10,north};

south的值10,north的值为11,east的值为0,west值为1。

2)仅能给枚举变量赋枚举元素值。

3)枚举变量可以进行增1或减1,可以进行比较运算。

4)枚举变量不能用于输入,输出时仅输出枚举值的顺序号。

第25页/共58页1.6运算符与表达式

表达式由操作数和运算符组成

操作数:常量、变量及函数调用。运算符:对操作数进行的运算和处理。

C++的表达式既可以单独作为语句使用,也可以在其他语句中作为测试的条件以及调用函数的参数使用。

C++提供了丰富的运算符。以下分别介绍。

第26页/共58页1.7.1算术运算符与算术表达式

算术运算符包括:

+(加)-(减)*(乘)/(除)%(取余)

使用规则:

+、-、*、/与一般数学运算相同,其中“-”可作一元运算符使用,表示取负。优先级为:先*、/、%,后+、-。两个整型数相除,取商的整数部分。例如:8/5结果为1,5/8结果为0。两实型数相除,结果为实型数,例如:8.0/5.0结果为1.6。%用于求两个整数相除的余数,例如:8%5为3,而10%5为0。参加运算的两个操作数的类型不同时,按由低到高规则转换后计算。

第27页/共58页inta=10,b=4;doublex=1.5;charc1=’A’;longw=12345;表达式

1:(a+b)*x-w/c1表达式

2:a*x-b*x+w/15+(c1+4)算术表达式举例:

表达式1和表达式2的计算过程及最后类型。讨论:第28页/共58页1.7.2位操作运算符

——用于对二进制数值的位进行运算

位操作运算符分为逻辑位操作运算符和移位运算符:逻辑位操作运算符:

&

按位“与”,两操作数逐位求“与”|

按位“或”,两操作数逐位求“或”∧

按位“异或”,两操作数逐位相加不进位~

求反,一元运算符,将操作数逐位取反移位运算符:<<

二进制左移,将操作数左移指定位数>>

二进制右移,将操作数右移指定位数低级语言的特点不讲第29页/共58页使用规则:

参加位操作的操作数必须是整型常数或整型变量。逻辑位操作运算符的使用形式为:操作数1

&

操作数2操作数1

|

操作数2操作数1

∧

操作数2~操作数移位运算符的使用形式为:操作数1<<操作数2

将操作数1左移操作数2指定的位数操作数1>>操作数2将操作数1右移操作数2指定的位数例如:

inta=15,b=125;0000111101111101a&b;//a和b按位与0000110113a^(~b);//a和非b按位或

b<<2;//b左移2位500第30页/共58页1.6.3赋值运算符与赋值表达式

1)简单赋值运算符,形式为:

变量=操作数其中:操作数可以是常量、变量和C++任意合法的表达式.

例如:

inta(15);

doubledata,s;data=-8.1245;

//将-8.1245存入data变量

s=a*50+data/3;//将表达式a*50+data/3结果存入

赋值号“=”左边必须是变量。赋值表达式的值和类型为“=”号左边变量的值和类型。说明:赋值是写内存第31页/共58页2)复合赋值运算符

——将算术运算和赋值放在一起的缩写形式包括:+=

-=*=

/=

%=例如:

a+=b;

相当于

a=a+b;a-=b;

相当于a=a+b;a*=b;

相当于

a=a*b;

a/=b;

相当于

a=a/b;

a%=b;

相当于

a=a%b;

使用说明:

由于有存储功能,复合赋值运算符左边必须是变量名。以下是错误的:

a+=b+=c+d=12;当复合赋值运算的右边是表达式时,将表达式视为一个整体,例如a-=x+y;相当于:a=a-(x+y)C+d不对第32页/共58页1.6.4自增和自减运算符

自增自减运算符有如下4种形式:

++i

前置自增,将i的值先加1,再使用i的值。

i++

后置自增,先使用i的值,然后i的值加1。

--i

前置自减,将i的值先减1,再使用i的值。

i--

后置自减,先使用i的值,然后i的值减1。

使用说明:

因为有加减和赋值的功能,运算对象必须是变量,不能是常数或表达式。单独作为一个语句使用时,前置增1(减1)或后置增1(减1)是一样的,但若和其他运算符组合使用,采用前置或后置就会产生不同的结果。运算符++(或--)是一个整体,使用时两个+(或-)之间不要有空。++(或--)运算符是单目运算符.第33页/共58页自增自减运算符举例:#include<iostream.h>voidmain(){inta(2),b(2),d1,d2;a++;b--;cout<<“a=“<<a<<“b=“<<b<<endl;d1=++a;cout<<“a=”<<a<<“d1=“<<d1<<endl;d2=b--;cout<<“b=“<<b<<“d2=“<<d2<<endl;}

a=3b=1a=4

d1=4b=0d2=1输出结果:第34页/共58页1.6.5关系运算符与关系表达式关系运算符用于比较两个数的大小,共有6个运算符:

<小于<=小于等于>大于>=大于等于==等于!=不等于使用说明:

关系表达式的值是整数值0和1,当关系式成立时为1;否则为0。关系运算符两边操作数可以是整型、浮点型、字符型、指针及枚举型。关系运算符可以在一个关系式中连续使用,但若用-1<=x<=1式判断是否在[-1,1]区间,则是错误的。注意区别“=”和“==”。注意==和!=运算符的优先级比其它关系运算符低。

第35页/共58页关系运算符使用举例:输出结果为:#include<iostream.h>voidmain(){inta=5,b=6;cout<<"a>b:"<<(a>b)<<'\n';cout<<"a<=b:"<<(a<=b)<<'\n';cout<<"a==b:"<<(a==b)<<'\n';cout<<"a!=b:"<<(a!=b)<<'\n';}a>b:0a<=b:1a==b:0a!=b:1第36页/共58页1.6.6逻辑运算符与逻辑表达式

逻辑运算符用于对操作数进行逻辑操作。逻辑运算符是:&&

逻辑“与”

||

逻辑“或”

!

逻辑“非”(一元运算符)逻辑运算符的使用形式是:

操作数1&&

操作数2

操作数1||

操作数2

!操作数使用说明:

逻辑表达式的值取值为1或0。逻辑运算符两边的操作数可以是任意基本数据类型,只要是0或非0值即可。任何非0值的数据都作为1参与逻辑运算。注意多个&&或||符使用时的“短路操作”。第37页/共58页逻辑运算符使用举例:#include<iostream.h>voidmain(){inta,b,c,x,y;a=1;b=2;c=0;cout<<a++-1<<endl;cout<<(a&&b||!c)<<endl;cout<<b/++a<<endl;x=++a||++b&&++c;//短路cout<<a<<b<<c<<x<<endl;a=b=c=-1;y=++a&&++b&&++c;//短路cout<<a<<b<<c<<y<<endl;}0104201

0-1-10

输出结果为:短路的作用第38页/共58页1.6.7其它运算符

1)条件运算符与条件表达式

条件运算符是三元运算符,形式为:e1?e2:e3

其中:e1一般为关系或逻辑式;e2和e3为任意表达式。

e1e2的值e3的值非00a=x>y?x+y:x-y;

功能:条件表达式举例:第39页/共58页2)逗号运算符与逗号表达式逗号表达式:用逗号“,”将几个表达式隔开的式子。逗号表达式的形式为:

e1,e2,…,en作用:从左到右计算各表达式值,并以最后一个表达式的值作为逗号表达式的值。

x=(a=1,b=3,++b,a+b);

逗号表达式举例:注:任何一表达式都有值第40页/共58页3)求字节运算符求字节运算符是个一元运算符,形式为:

sizeof(e)其中:e可以是任意类型的变量、类型名或表达式。作用:求e在内存中占用的字节数。例如:

inta,b,i;

doublex;a=sizeof(x);b=sizeof(float);i=sizeof(a*x)+100;第41页/共58页4)类型转换符利用类型转换符强制转换成所需要的类型。使用格式是:(类型名)表达式或类型名

(表达式)作用:将“表达式”的值转换成“类型名”所指定的类型。例如:inta,b;doublex(10.5),y(3.8);a=int(x+y)-10;b=(int)x+y-10;整数转换为字符型,则去掉多余的高位;长整型转换为一般整型时,去掉多余高位;浮点型转换成整型时,去掉小数部分;双精度型转换成单精度时,按单精度型位数舍入。转换后数据的精度受到影响。

转换原则:第42页/共58页1.6.8运算符的优先级和结合性

优先级:

不同操作符之间进行操作的先后顺序。

几种不同的运算符出现在一个表达式中时,优先级别高的先计算,优先级别低的后计算。算术运算关系运算逻辑运算结合性:当连续几个相同级别的运算符进行计算时,有的是由左到右逐个运算,有的是由右到左逐个运算。

单击见表1–4第43页/共58页1.7基本输入/输出

输入输出又称I/O(Input/Output)操作。输入:指在程序运行时由输入设备(常指键盘)向程序提供数据;输出:是指将程序的运行结果在输出设备(常指显示器)上显示。

输入输出第44页/共58页1)cin的使用形式:

cin>>变量1>>变量2>>……>>变量n;使用cin一次可以输入多个值。可以输入任何基本类型的数据。用空格、制表符或回车作为输入的两个数据之间的分隔。

例如:

inta,b,c;doublex1,y1;cin>>a>>b>>c;

cin>>x1>>x2;

输入、输出流对象:cincout基于类和对象的概念第45页/共58页2)cout的使用形式:

cout<<e1<<e2<<……<<en;其中:每个ei可以是:

常量、变量、表达式、字符串、函数调用等。

当是表达式时,输出表达式结果的值;若是函数调用,则输出函数调用后的结果;当是字符串时,将字符串原样输出。例如:

intn=10;

cout<<3.14159<<″

″<<n<<′\n′;

cout<<″n=

″<<n<<endl;使用cin和cout在程序开始处要写入预编译命令:#include<iostream.h>注意:第46页/共58页

输入输出格式:默认格式输出:

输出一个整型数或字符时,原样输出值;输出一个floatdouble型数时,默认6位有效数字。

第47页/共58页#include<iostream.h>voidmain(){inta=123;longintb=1234567;floatx1=12.34,x2=23.456789;doubley=12.34567890123;cout<<”a=”<<a<<’\n’<<”b=”<<b<<endl;cout<<”x1=”<<x1<<”“<<”x2=”<<x2<<endl;cout<<”y=<<y<<endl;}默认格式输出举例:a=123b=1234567x1=12.34x2=23.4568y=12.3457

输出结果:第48页/共58页

在输入输出流中使用控制符C++提供控制符控制输出数据的格式。常用的几个控制符:

dec转换为十进制数输入/输出

hex转换为十六进制数输入/输出

oct转换为八进制数输入/输出

setw(int)设置输出的宽度

setprecision(int)设置浮点数输出的有效数字位数

setfill(char)设置填充字符

endl插入换行符使用以上格式控制符时,要加上头文件:

#include<iomanip.h>注意:第49页/共58页输出结果:使用格式控制符举例:#include<iomanip.h>#include<iostream.h>voidmain(){intx=24;doubley=12.3456789;cout<<dec<<x<<"";cout<<hex<<x<<"";cout<<oct<<x<<'\n';cout<<dec;//以下仍按十进制输出

cout<<setw(8)<<x<<","<<x<<endl;cout<<setw(8)<<setfill('*')<<x<<endl;cout<<setprecision(5)<<y<<endl;}24183024,24******2412.346第50页/共

温馨提示

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

评论

0/150

提交评论