C++语言发展历史
自从1946年第一台电子数字计算机ENIAC问世以来,随着计算机应用领域的不断扩大,促进了计算机技术的高速发展,尤其是近年来计算机的硬件和软件都是日新月异。作为应用计算机的一种工具—程序设计语言,得到不断的充实和完善。每年都有新的程序设计语言问世,老的程序设计语言不断地更新换代。
20世纪60年代,Martin Richards为计算机软件人员在开发系统软件时,作为记述语言使用而开发了BCPL语言(Basic
Combined Programming Language)。
1970年,Ken Thompson在继承BCPL语言的许多优点的基础上发明了实用的B语言。
到了1972年,贝尔实验室的Dennis Ritchie和Brian
kernighan在B语言的基础上,作了进一步的充实和完善,设计出了C语言。
当时,设计C语言是为了编写UNIX操作系统的。
以后,C语言经过多次改进,并开始流行。C++是在C语言的基础上发展和完善的,而C是吸收了其它语言的优点逐步成为实用性很强的语言。
C语言的主要特点是:
1、C语言是一种结构化的程序设计语言,语言本身简洁、使用灵活方便。既适用于设计和编写大的系统程序,又适用于编写小的控制程序,也适用科学计算。
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 是基数,可取2,4,8,16等,对具体机器而言,基数取好后,就不能再变了。
数有正有负, 所以设置数符;
阶码亦有正负,
所以设置阶符
字长一定,尾数越多,精度越高;阶码越多,范围越大。
当计算机中出现小于机器所能表示的最小数时,机器只能当零来处理,当出现超过机器所能表示的最大数时,出现溢出现象,一旦出现溢出,就会停止运算。定点数,浮点数均会出现溢出现象。
转义字符虽然包含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]的值赋给变量max,max就是开始时的擂主,然后让下一个元素与它比较,将二者中值大者保存在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++概述、发展历史和未来、与其它语言的比较、面向对象的概念、VC上机过程等。同时,本资源还对C++语言的字符集、数据类型、运算符、表达式、语句、关键字、标识符、标点符号等...
### C++语言基础知识点概述 #### 一、C/C++的发展历史 - **C语言**:C语言由Dennis M. Ritchie于1972年至1973年间在AT&T贝尔实验室开发完成。最初是为了描述和实现UNIX操作系统提供一种工作语言而设计的。 - **C++...
《C++语言基础》是北京大学工硕教材,由吕凤翥编著的第二版,它系统地介绍了C++编程的基础知识。本教材旨在帮助学习者掌握C++这门强大而灵活的面向对象编程语言,为深入学习软件开发打下坚实的基础。 首先,我们来...
适用人群:零基础或已有少量编程经验想要深入学习C++语言的学习者。 使用场景及目标:①初学者可通过此文系统地了解并练习C++编程,从最基础的内容起步直到掌握高级特性;②为有兴趣参与高性能软件开发(如游戏开发...
《C++语言程序设计》是清华大学郑莉教授主讲的一门课程,主要涵盖了C++编程的基础知识、面向对象编程的概念以及程序开发的整个流程。在深入学习这门课程时,我们将探讨以下几个重要的知识点: 1. **计算机程序设计...
无论是C++的基础语法,还是其面向对象的高级特性,都是每一个希望深入学习C++语言的开发者需要熟练掌握的知识点。通过学习和实践,可以更好地理解C++语言的强大功能,以及如何在实际的软件开发项目中有效地应用这门...
《C++语言程序设计》由谭浩强编著,作为中国高等院校计算机基础教育课程体系规划教材,本书系统地介绍了C++编程的基础知识和高级概念,是学习C++语言的优质教程。C++作为一种广泛应用于系统软件和应用软件开发的编程...
本教程将深入浅出地介绍C++的基础知识,旨在帮助初学者掌握C++的核心概念和技术。 1. **C++概述**: - C++的历史:C++于1983年由Bjarne Stroustrup在AT&T贝尔实验室首次提出,是C语言的一个扩展。 - C++的特点:...
Visual C++ 6.0是基于C++语言的,由AT&T贝尔实验室的B语言发展而来,由Dennis Ritchie设计并命名为C语言。在Windows环境下,微软推出了可视化版本的Visual C++,从1.0版本逐步发展至6.0,提供了一套完整的集成开发...
### C++的基础知识——类 #### 一、面向对象的思想发展历程及核心概念 **1. 面向对象思想的历史背景** 面向对象编程(Object-Oriented Programming, OOP)的概念和实践经历了漫长的发展历程,从最初的萌芽到最后...
C++语言基础知识点大全 C++语言是当前最流行的编程语言之一,具有强大、灵活、可移植等特点。下面是C++语言基础知识点的总结: 一、C++的特点 * 面向对象的概念:数据的封装和隐藏、继承、多态 * 发展历史和未来...
内容概要:本文详述了C++的发展历史,从1979年由Bjarne Stroustrup创立,历经C++98、C++11、C++14、C++17和C++20等多个标准版本的演变,涵盖了C++的核心特点、创新点以及与其他编程语言(如C、Java、Python)的比较...
4. **C++语言基础**:涵盖变量、数据类型、运算符、流程控制语句等基本编程元素。 5. **类和对象**:详细介绍如何定义和实例化类,以及对象的生命周期和作用域。 6. **函数和成员函数**:讨论函数的定义、调用以及...
通过阅读《C++语言的设计和演化》,开发者不仅可以掌握C++的基础知识,还能深入了解C++的哲学思想和设计理念,这对于成为一位熟练的C++程序员至关重要。该书适合有一定C++基础并希望深入理解语言本质的读者。
作为C++的基础知识,我们首先要理解它的历史背景。C++是由Bjarne Stroustrup在1979年基于C语言的基础上发展起来的,旨在提供一种面向对象的编程能力,同时保留C语言的效率。 1. **基础语法**:C++的基础语法与C语言...
2. 历史背景:C++是作为一种系统编程语言发展起来的,它的前身是C语言,并在C语言基础上加入了面向对象等特性。 3. 应"运"而生:C++的发展是为了解决日益复杂的软件开发需求,使程序能够更高效地管理和维护。 4. ...
本基础课件旨在全面介绍C++的基础知识,帮助初学者理解和掌握C++编程的基本概念和技术。 课件内容可能涵盖以下几个关键知识点: 1. **C++简介**:介绍C++的历史、特点和适用领域,以及与C语言的区别。 2. **基本...
本资源摘要信息是关于C++programming language的知识点总结,主要介绍了C++语言的起源、主要特性、面向对象编程思想、C++语言的发展历史、Bjarne Stroustrup的贡献、C++语言的优点和缺点、C++语言与C语言的关系、C++...
### C++基础知识 - **语言历史与背景**:了解C++的发展历程及其在软件工程中的地位。 - **语法基础**:包括变量声明、数据类型、运算符等基本概念。 - **控制结构**:介绍条件语句(如if-else)、循环语句(如for、...