`
universsky
  • 浏览: 91246 次
文章分类
社区版块
存档分类
最新评论

C++语言发展历史 & 基础知识

 
阅读更多

C++语言发展历史

自从1946年第一台电子数字计算机ENIAC问世以来,随着计算机应用领域的不断扩大,促进了计算机技术的高速发展,尤其是近年来计算机的硬件和软件都是日新月异。作为应用计算机的一种工具程序设计语言,得到不断的充实和完善。每年都有新的程序设计语言问世,老的程序设计语言不断地更新换代。

20世纪60年代,Martin Richards为计算机软件人员在开发系统软件时,作为记述语言使用而开发了BCPL语言(Basic Combined Programming Language)

1970年,Ken Thompson在继承BCPL语言的许多优点的基础上发明了实用的B语言。

到了1972年,贝尔实验室的Dennis RitchieBrian kernighanB语言的基础上,作了进一步的充实和完善,设计出了C语言。

当时,设计C语言是为了编写UNIX操作系统的。

以后,C语言经过多次改进,并开始流行。C++是在C语言的基础上发展和完善的,C是吸收了其它语言的优点逐步成为实用性很强的语言

C语言的主要特点是:

1C语言是一种结构化的程序设计语言,语言本身简洁、使用灵活方便。既适用于设计和编写大的系统程序,又适用于编写小的控制程序,也适用科学计算。

2它既有高级语言的特点,又具有汇编语言的特点。运算符丰富,除了提供对数据的算术逻辑运算外,还提供了二进制的位运算。并且也提供了灵活的数据结构。用C语言编写的程序表述灵活方便,功能强大。用C语言开发的程序,其结构性好,目标程序质量高,程序执行效率高。

3程序的可移植性好。用C语言在某一种型号的计算机上开发的程序,基本上可以不作修改,而直接移植到其它型号和不同档次的计算机上运行。

4程序的语法结构不够严密,程序设计的自由度大。这对于比较精通C语言的程序设计者来说,可以设计出高质量的非常通用的程序。但对于初学者来说,要能比较熟练运用C语言来编写程序,并不是一件容易的事情。与其它高级语言相比而言,调试程序比较困难。往往是编好程序输入计算机后,编译时容易通过,而在执行时还会出错。但只要对C语言的语法规则真正领会,编写程序及调试程序还是比较容易掌握的。

随着C语言应用的推广,C语言存在的一些缺陷或不足也开始流露出来,并受到大家的关注。如:C语言对数据类型检查的机制比较弱;缺少支持代码重用的结构;随着软件工程规模的扩大,难以适应开发特大型的程度等等。

为了克服C语言本身存在的缺点,并保持C语言简洁、高效,与汇编语言接近的特点,1980年,贝尔实验室的BjarneStroustrup博士及其同事对C语言进行了改进和扩充,并把Simula 67中类的概念引入到C中。并在1983年由Rick Maseitti提议正式命名为C++C Plus Plus)。后来,又把运算符的重载、引用、虚函数等功能加入到C++中,使C++的功能日趋完善。

当前用得较为广泛的C++有:VC++ Visual C Plus Plus)、 BC++Borland C Plus Plus)、AT&T C++等。

#include <iostream.h>

void main(void)

{

cout << i=; //显示提示符

inti; //说明变量i

cin >>i; //从键盘上输入变量i的值

cout << “i的值为:” <<i<<’\n’; // 输出变量i的值

}

一般变量都是用匈牙利命名法命名的。

intnCount;

char chChoice;

整型变量:

分为有符号型与无符号型。

有符号型:

short 在内存中占两个字节,范围为-215~215-1

int在内存中占四个字节,范围为-231~231-1

long在内存中占四个字节,范围为-2-31~231-1

无符号型:最高位不表示符号位

unsigned short 在内存中占两个字节,范围为0~216-1

unsigned int 在内存中占四个字节,范围为0~232-1

unsigned long在内存中占四个字节,范围为0~232-1

实型数又称浮点数,有两种表示方式:

1)十进制形式: 23.0 24.5 3.56789

2)指数形式: 23E1 145e-1 356789e1 e前有数字,后面必须是整数。

实型变量分单精度 float 和双精度 double 两种形式:

float:占四个字节,提供7~8位有效数字。

double: 占八个字节,提供15~16位有效数字。

实数是既有整数又有小数的数。

实数可以表示成:N=S×RJ

S 称为尾数,尾数决定有效数字,即数字的精度。

J 表示指数(阶码)。

R 是基数,可取24816等,对具体机器而言,基数取好后,就不能再变了。

数有正有负, 所以设置数符; 阶码亦有正负, 所以设置阶符

字长一定,尾数越多,精度越高;阶码越多,范围越大。

当计算机中出现小于机器所能表示的最小数时,机器只能当零来处理当出现超过机器所能表示的最大数时,出现溢出现象,一旦出现溢出,就会停止运算。定点数,浮点数均会出现溢出现象。

转义字符虽然包含2个或多个字符,但它只代表一个字符。编译系统在见到字符\时,会接着找它后面的字符,把它处理成一个字符,在内存中只占一个字节。

典型转义字符:

\n’换行 \b’ 退格 '\t' 下一个输出区

若输出中包含这些特定格式,则再加一个\

#include<iostream.h>

void main(void)

{

char c1,c2,c3,c4;

char n1,n2;

c1='a'; //字符常量

c2=97; //十进制

c3='\x61'; //转义字符

c4=0141; //八进制

cout<<"c1="<<c1<<'\t'<<"c2="<<c2<<endl;

cout<<"c3="<<c3<<'\t'<<"c4="<<c4<<endl;

n1=‘\n’; //转义字符:回车

n2=‘\t’; //转义字符:下一个输出区(Tab)

cout<<"使用转义字符\n";

cout<<"c1="<<c1<<n2<<"c2="<<c2<<n1;

cout<<"c3="<<c3<<n2<<"c4="<<c4<<n1;

}

标识符常量

C++中有二种方法定义标识符常量,一种是使用编译预处理指令;另一种是使用C++的常量说明符const

例如:

#define PRICE 30

//在程序中凡是出现PRICE均用30替代

#define PI 3.1415926

#define S China

const float pi=3.1415926; //变量pi定义为常量

(举例说明)

#include<iostream.h>

#define PI 3.14156

#define S "China"

void main(void)

{

const float pi=3.14156; //变量作为常量使用

cout<<"PI="<<PI<<endl;

cout<<"10*PI="<<10*PI<<endl;

cout<<S<<endl;

// PI=PI+3;

// pi=pi+4;

cout<<"PI="<<PI<<endl;

cout<<"pi="<<pi<<endl;

}

优先级:!à&&à| |

à算术à关系à逻辑à赋值à逗号

switch(表达式)

case 常量表达式1:语句1

case 常量表达式2:语句2

… …

case 常量表达式n:语句n

default:语句n+1

void main(void)

{ int i=1,sum=0; //定义变量,初始化

while(i<=100) //构造循环

{ sum=sum+i; // 循环体,多次执行

i=i+1;

}

cout<<“sum=”<<sum<<endl; //输出结果

}

void main(void)

{ int i=1,sum=0; //定义变量,初始化

do //构造循环

{ sum=sum+i; // 循环体,多次执行

i=i+1;

}while (i<=100);

cout<<“sum=”<<sum<<endl; //输出结果

}

void main(void)

{ int i, sum;

for (i=1, sum=0; i<=100; i++)

sum=sum+i;

cout<<“sum=”<<sum<<endl;

}

写一个函数验证哥德巴赫猜想;一个不小于6的偶数可以表示为两个素数之和,如6=3+3, 8=3+5, 10=3+7……。在主函数中输入一个不小于6的偶数n,函数中输出以下形式的结果∶

34=3+31

int power(intm,int n) //m^n

{ inti,product=m;

for(i=1;i<n;i++)

product=product*m;

return product;

}

intsum_of_power(intk,int n) //n^k的累加和

{ inti,sum=0;

for(i=1;i<=n;i++)

sum+=power(i,k);

return sum;

}

void main(void)

{ intk,m;

cin>>k>>m;

cout<<"f("<<k<<","<<m<<")="<<sum_of_power(k,m)<<endl; //m^k的累加和

}

作用域是指程序中所说明的标识符在哪一个区间内有效,即在哪一个区间内可以使用或引用该标识符。在C++中,作用域共分为五类:块作用域、文件作用域、函数原型作用域、函数作用域和类的作用域。

在块作用域内可通过作用域运算符“::”来引用与局部变量同名的全局变量。

#include <iostream.h>

int i= 100;

void main(void)

{

inti , j=50;

i=18; //访问局部变量i

::i= ::i+4; //访问全部变量i

j= ::i+i; //访问全部变量i和局部变量j

cout<<”::i=”<<::i<<’\n’;

cout<<”i=”<<i<<’\n’;

cout<<”j=”<<j<<’\n’;

}

void main (void)

{ int i;

int f [20]={1,1};

for (i=2 ; i<20 ; i++ )

f [i]=f [i-1]+f [i-2];

for ( i=0; i<20; i++)

{ if (i%5= =0) cout<<“\n”;

cout<<f [i]<<‘\t’;

}

}

for (j=0; j<n-1; j++)

for (i=0; i<n-1-j; i++)

{ if (a[i]>a[i+1])

{ t=a[i];

a[i]=a[i+1];

a[i+1]=t;

}

}

有一个3×4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。

先考虑解此问题的思路。从若干个数中求最大者的方法很多,我们现在采用打擂台算法。如果有若干人比武,先有一人站在台上,再上去一人与其交手,败者下台,胜者留台上。第三个人再上台与在台上者比,同样是败者下台,胜者留台上。如此比下去直到所有人都上台比过为止。最后留在台上的就是胜者。

程序模拟这个方法,开始时把a[0][0]的值赋给变量maxmax就是开始时的擂主,然后让下一个元素与它比较,将二者中值大者保存在max中,然后再让下一个元素与新的max比,直到最后一个元素比完为止。max最后的值就是数组所有元素中的最大值。

max=a[0][0]; //使max开始时取a[0][0]的值

for (i=0;i<=2;i++) //从第0行到第2

for (j=0;j<=3;j++) //从第0列到第3

if (a[i][j]>max)//如果某元素大于max

{

max=a[i][j]; //max将取该元素的值

row=i; //记下该元素的行号i

colum=j; //记下该元素的列号j

}

cout<<row<<‘\t’<<colum<<‘\t’<<max<<endl;

C++语言规定,数组名代表数组在内存中存储的首地址,这样,数组名作函数实参,实际上传递的是数组在内存中的首地址。实参和形参共占一段内存单元形参数组中的值发生变化,也相当于实参数组中的值发生变化

struct

{ int num;

char name[20];

char sex;

int age;

float score;

char addr[30];

} student1, student2;

1、结构体类型的变量在内存依照其成员的顺序顺序排列,所占内存空间的大小是其全体成员所占空间的总和

2、在编译时,仅对变量分配空间,不对类型分配空间。

3、对结构体中各个成员可以单独引用、赋值,其作用与变量等同。

格式:变量名 . 成员名 student1 . num

struct student

{ int num;

char name[20];

char sex;

int age;

float score;

char addr[30];

} ;

struct student stu[30];

struct student

{ int num;

char name[20];

char sex;

int age;

float score;

char addr[30];

} stu[30];

struct student

{ int num;

char name[20];

char sex;

} stu[3]={ {1011, "Li Lin",'M'}, {1012,"Wang Lan",'F'},

{1013,"Liu Fang",'F'};

struct student

{ int num;

char name[20];

char sex;

} stu[ ]={ {1011,"Li Lin",'M'}, {1012,"Wang Lan",'F'},

{1013,"Liu Fang",'F'}};

分享到:
评论

相关推荐

    C++书籍集合

    本书作者也是C++语言的设计者Bjarne Stroustrup,作者在书中综合性地介绍了C++的发展历史,C++中各种重要机制的本质意义和设计背景,这些机制的基本用途和使用方法,讨论了C++所适合的应用领域及其未来的发展前景,...

    Java核心技术 卷Ⅰ:基础知识 【中文】(第八版)

    然后,简要叙述Java诞生和发展的历史。 第2章详细地论述如何下载和安装JDK以及本书的程序示例。然后,通过编译和运行三个典 型的Java程序(一个控制台应用、一个图形应用、一个applet),指导读者使用简易的JDK、可 ...

    Visual C++实践与提高-COM和COM+篇『PDF』

    9.1.1 ActiveX控件的发展历史 9.1.2 ActiveX控件基本要求 9.1.3 库存属性、方法和事件 9.1.4 ActiveX控件与包容器的通信 9.1.4.1 IOleControl接口 9.1.4.2 IOleControlSite接口 9.1.5 属性页技术 9.2 ActiveX C++...

    《计算机体系结构—软件篇3》 之 解释器、语言、算法

    本课程会向大家介绍3部分内容:...第2部分:介绍高级语言的发展历史,高级与低级语言的区别,我们应该如何面对如此之多的编程语言。第2部分:向大家介绍算法相关的基础知识,我们应用开发者应该如何面对算法这个东西。

    C/C++常用算法手册.秦姣华(有详细书签).rar

    》主要定位于有一定C/C++语言编程基础、想通过学习算法与数据结构提升编程水平的读者,也可作为具有一定编程经验的程序员以及大中专院校学生学习数据结构和算法的参考书。 第1篇 算法基础篇 1 第1章 算法概述 2 ...

    C语言在本科计算机相关专业的课程定位及学习体会-.doc

    由于 C 语言灵活、强大,初学者要全面地掌握它非常吃力,因此在学习 C 语言的过程中,一定要熟练掌握 C 语言的流程控制语句、数组、函数、指针等基础知识。可以把学习的重点放在函数的设 计框架、参数设计、返回值...

    C#微软培训资料

    18.2 在 C #代码中调用 C++和 VB 编写的组件 .240 18.3 版 本 控 制 .249 18.4 代 码 优 化 .252 18.5 小 结 .254 第五部分 附 录 .255 附录 A 关 键 字.255 附录 B 错 误 码.256 附录 C .Net 名字空间...

    精通SQL 结构化查询语言详解

    3.1 表的基础知识  3.1.1 表的基本结构  3.1.2 表的种类  3.2 SQL数据类型  3.2.1 字符型数据 3.2.2 数字型数据  3.2.3 日期数据类型 3.2.4 二进制数据类型 3.2.5 文本和图形数据类型  3.2.6 自定义...

    ChatGPT从入门到精通

    人工智能技术的初期发展阶段,机器人只能完成简单的任务,掌握基础的语言理解和表达。随着技术的进步和应用场景的扩大,人们开始要求机器人能够像人类一样进行复杂的语言交流。因此,OpenAI 公司的工程师发起了...

    精通SQL--结构化查询语言详解

    3.1 表的基础知识 37 3.1.1 表的基本结构 37 3.1.2 表的种类 38 3.2 sql数据类型 39 3.2.1 字符型数据 39 3.2.2 数字型数据 40 3.2.3 日期数据类型 41 3.2.4 二进制数据类型 43 3.2.5 文本和图形数据类型 44...

    我的编程感悟(中文PDF)(共37M二分卷)分卷二

    看了云风的研发历程,我觉得就是一部中国的游戏程序史,从最早的 Z80 , 6502 , PC8088 , 286 , 386…DOS ,保护模式, Assembler 到 C++ 的整个发展轨迹。这本书可以说横跨了游戏程序的过去、现在和未来。 书...

    我的编程感悟(中文PDF)(共37M二分卷)分卷一

    看了云风的研发历程,我觉得就是一部中国的游戏程序史,从最早的 Z80 , 6502 , PC8088 , 286 , 386…DOS ,保护模式, Assembler 到 C++ 的整个发展轨迹。这本书可以说横跨了游戏程序的过去、现在和未来。 书...

    本科毕业设计开题报告(成绩管理系统的设计与实现V3)

    本系统使用的开发语言是c++语言,C++语言是一种优秀的面向对像程序设计语言,它在C语言的基础上发展而来,但它比C语言更容易为人们学习和掌握。C++以其独特的语言机制在计算机科学的各个领域中得到了广泛的应用。...

    PHP基础教程 是一个比较有价值的PHP新手教程!

    1.1 历史 三年前,Rasmus Lerdorf为了创建他的在线简历而创造了"个人主页工具"(Personal Home Page Tools)。这是一种非常简单的语言。其后越来越多的人们注意到了这种语言并对其扩展提出了各种建议。在许多人的...

    精通DirectX.3D图形与动画程序设计.pdf

    附录a c++基础知识 a.1 类及其成员和封装 a.2 继承 a.3 this指针 a.4 虚函数、动态绑定和多态 a.5 双指针 a.6 内联函数 a.7 默认函数参数 a.8 声明变量的位置 a.9 const常量表达式  a.10 函数重载 a.11 运算符重载 ...

    ASP3《高级编程》(第一部分)

    本书第1~7章介绍了ASP的基础知识、ASP 3.0的变化、ASP的对象模型、使用ASP脚本和外部组件的所要求的基本概念。第8~12章介绍了通用数据的访问和连接问题,包括ADO、UDA和XML。第13~18章介绍了使用ASP建立组件的问题,...

Global site tag (gtag.js) - Google Analytics