作业(练习)
练习:要求在堆区连续申请5个int的大小空间用于存储5名学生的成绩,分别完成空间的申请、成绩的录入、升序排序、成绩输出函数以及空间释放函数,并在主程序中完成测试
要求使用new和delete完成
#include <iostream>
using namespace std;
//要求在堆区连续申请5个int的大小空间用于存储5名学生的成绩,分别完成空间的申请、
//成绩的录入、升序排序、成绩输出函数以及空间释放函数,并在主程序中完成测试
double *shengqin() //空间申请函数
{
double *ptr = new double[5]{-1,-1,-1,-1,-1};
return ptr;
}
void release(double *ptr) //释放空间
{
delete []ptr;
ptr = NULL;
}
void enter(double *ptr) //成绩录入功能
{
int i=0;
while(i!=5)
{
cout<<"输入成绩:第"<<i<<"位"<<endl;
double a;
cin>>a;
ptr[i] = a;
i++;
}
}
void asort(double *ptr) //升序排序
{
for(int i=0;i<(5-1);i++)
{
int m=i,b;
bool c = 0;
b=ptr[i];
for(int j=0;j<5;j++)
{
if(ptr[j]<b)
{
m=j;
c = 1;
}
}
//交换
if(c==1)
{
int temp1;
temp1 = ptr[i];
ptr[i] = ptr[m];
ptr[m] = temp1;
}
}
cout<<"交换完成:\t"<<'\t'<<endl;
}
void myprintf(double *ptr)
{
cout<<"成绩如下:"<<endl;
for(int i=0;i<5;i++)
{
cout<<ptr[i]<<endl;
}
}
int main()
{
double *ptr = shengqin(); //空间申请
enter(ptr); //成绩录入
myprintf(ptr);
asort(ptr); //升序排序
myprintf(ptr); //输出
release(ptr); //释放空间
ptr = NULL;
return 0;
}
笔记
一、C++的引入
1.1 C++的介绍
开发者:本贾尼---斯特劳斯特鲁普
Simula语言:被称为世界上第一个引入类体系(面向对象)的语言
Algol:研究的是关于算法结构
贝尔实验室:改进C语言
1983年,贝尔实验室(Bell Labs)的Bjarne Stroustrup发明了C++。 C++在C语言的基础上进行了扩充和完善,是一种面向对象程序设计(OOP)语言。
Stroustrup说:“这个名字象征着源自于C语言变化的自然演进”。还处于发展完善阶段时被称为“new C”,之后被称为“C with Class”。 C++被视为C语言的上层结构,1983年Rick Mascitti建议使用C++这个名字,就是源于C语言中的“++”操作符(变量自增)。
而且在共同的命名约定中,使用“++”以表示增强的程序。
支持面向对象编程、泛型编程和过程化编程。
编程领域广泛:常用于系统开发,引擎开发等应用领域,是最受广大程序员喜爱的编程语言之一。
历史:“C with Class”阶段,C语言基础上的特征主要有:类及派生类、共有和私有成员、构造函数和析构函数、友元、内联函数、赋值运算符的重载,等等。
1985年1.0版新增加:虚函数的概念、函数和运算符的重载、引用、常量,等等。
1989年2.0版新增加:类的保护成员、多重继承、对象的初始化与赋值的递归机制、抽象类、静态成员函数、const成员函数,等等。
1.2 C++属于半面向过程半面向对象编程语言
面向过程程序设计(Procedural Programming)和面向对象程序设计(Object-Oriented Programming, OOP)是两种常见的编程范式,它们各有特点和适用场景。
1> 面向过程:
面向过程程序设计是一种编程范式,它侧重于编写一系列计算步骤或过程的代码,每个过程都可以完成特定的任务。在这种范式中,程序被视为一系列函数的集合,数据在函数之间传递。
主要特点包括:
结构化:程序被分解为可重用的函数或过程。
功能划分:每个函数负责一个具体的任务。
顺序执行:程序按照代码的顺序执行操作。
局部变量和全局变量:数据通过参数传递给函数,函数内部通常使用局部变量,也可以使用全局变量。 面向过程编程的典型语言包括C语言。
2> 面向对象:
面向对象程序设计是基于“对象”的概念,其中对象是数据和操作数据的方法的集合。这种范式强调将现实世界的实体作为对象进行模拟,每个对象都可以接收消息、处理数据和发送消息到其他对象。
主要特点包括:
封装:隐藏对象的内部状态和实现细节,只暴露有限的操作接口。
继承:允许新的对象类继承现有对象类的属性和方法。
多态性:允许不同类的对象对同一消息做出响应。
对象实例:程序定义为对象的集合,每个对象都可以具体实例化。
面向对象编程的典型语言包括Java、C++和Python。
3> 比较
维护性:面向对象程序设计通常更易于维护和扩展,因为它强调封装和模块化。
复用性:面向对象程序设计通过继承和多态提高代码复用性。
开发效率:面向对象程序设计在处理复杂系统时,可以更快地开发,因为它提供了更多高级抽象。
1.3 C++是对C的扩充
1> C++是对C语言的扩充,C语言的所有语法及函数,C++都能继续使用,并且在该基础上进行了扩充
2> C语言的编译器是gcc,而C++的编译器是g++,并且g++编译器比gcc编译器更加严格
3> C++程序的后缀一般为 .cpp .cxx .cc .C .hpp
4> C++中的头文件,一般不以.h结尾,C++中的头文件名,就是类名
5> C语言的头文件,在C++中依然可以使用,但是C++对C语言的头文件进行了二次封装
#include -----> #include
#include -----> #include
#include<stdio.h> //在g++编译器中,如果没有加头文件,会直接报错
int main(int argc, const char *argv[])
{
printf("hello a\n");
int num = 520; //定义一个普通整形变量
void * vptr = #
char * cptr = (char *)vptr; //将万能指针转换为char*的指针,g++编译器要求必须强转
return 0;
}