抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

今天把后面大题做一下就开始第二章拉!

第一章程序设计题

  1. 编写一个程序,将从键盘输入的n个字符串保存在一个一维数组A中。在输入字符串之前,先输入n的值。要求,数组A需要动态申请空间,程序运行结束前再释放掉。
#include <iostream>

using namespace std;

int main() {
    int n;
    cin >> n;
    string *A = new string[n];  // clion: Use auto when initializing with new to avoid duplicating the type name
    for (int i = 0; i < n; ++i) {
        string t;
        cin >> t;
        A[i] = t;
    }
    delete[] A;
}

clion这里提示我要用更现代化的auto来声明变量,好吧!

  1. 在题目一的基础上,输出n个字符串中最长的和最短的串,计算n个串的平均长度并输出结果。
#include <iostream>

using namespace std;

int main() {
    int n;
    cin >> n;
    auto *A = new string[n];
    for (int i = 0; i < n; ++i) {
        string t;
        cin >> t;
        A[i] = t;
    }
//    将所有串的长度统计到sLen
    auto *sLen = new int[n];
    for (int i = 0; i < n; ++i) {
        sLen[i] = int(A[i].length());
    }
//    遍历sLen计算三个值
    int maxIndex = 0, minIndex = 0;
    float avg = 0;
    for (int i = 0; i < n; ++i) {
        if (sLen[maxIndex] < sLen[i]) {
            maxIndex = i;
        }
        if (sLen[minIndex] > sLen[i]) {
            minIndex = i;
        }
        avg += (float) sLen[i];
    }
    
    cout << "最小的:" << A[minIndex] << endl;
    cout << "最大的:" << A[maxIndex] << endl;
    cout << "平均:" << avg / (float) n << endl;
    delete[] sLen;
    delete[] A;
}

// i&o:
/*
    3
    sunzehui
    haha
    xi
    最小的:xi
    最大的:sunzehui
    平均:4.66667
*/

写的好烂啊,什么时候学了cpp的hashmap再来!

面向对象基本概念

书上讲的实在是太繁琐了,一堆专业名词。。。

结构化程序设计

在结构化程序设计中,采用自顶向下、逐步求精及模块化的思想,将复杂的大问题层层分解为许多简单的小问题。

结构化程序设计存在的问题:

  • 当开发大型项目,需要多人开发时,每个模块没有很好地封闭起来,实现业务通常要通过读写全局变量,这样大家的代码合并后,要搞清楚所有的全局变量以及哪些函数会访问哪些全局变量,是很麻烦的事。
  • 将代码写成函数,在一定程度上实现了代码的复用,但这仅仅是语句层面上的复用。在有些情况下,有些函数实现的功能也是类似的,函数体的语句也相差不多,不过,结构化程序设计语言没能提供方便的机制。
  • 总之,在代码规模庞大的时候,代码会变得难以理解、难以扩充、难以差错和难以复用。

面向对象程序设计概念和特点

面向对象程序设计方法是20世纪90年代以来软件开发方法的主流。

面向对象技术把问题看成是相互作用的事物的集合,也就是对象的集合。其两个特性:状态、行为,对应了对象的属性和方法。

面向对象程序设计4个基本特点:抽象、封装、继承、多态

(下面这个知识点有点反智,我不知道问这个有什么意义???)

对象结构图中有对象名没有类名,类模型结构图中有类名而没有对象名。

(最奇葩的是这题还是课本上的例题)

类的初步认识

C++基本数据类型有:bool、char、int、float、double

在C++中,类定义的一般格式如下:

class 类名{
访问范围说明符:
    成员变量
    成员函数
}

类体可以为空,可以说定义一个空类。

访问范围说明符有三个:public、private、protected

成员变量的写法同声明变量一样,成员函数的写法同声明函数一样

类只是一个声明,不能在类里给变量赋初值,静态变量除外(静态变量要加const才能赋初值)。

成员函数既可以在类里实现,也可以在类外实现(要现在类里声明),写法如下:

class student {
public:
    void h();
};

void student::h() {
    cout << 'x';
}

创建类对象的基本形式

// 定义普通对象的两种方法
// 第一种
类名 对象名;
类名 对象名(参数);
类名 对象名 = 类名(参数);
// 可以扩展为多个对象
类名 对象名1,对象名2,...;
类名 对象名1(参数),对象名2(参数),...;

// 另一种方法:
类名 *对象指针名 = new 类名;		// 调用无参构造函数
类名 *对象指针名 = new 类名();	// // 调用无参构造函数
类名 *对象指针名 = new 类名(参数);

// 声明对象引用
类名 &对象引用名 = 对象;
// 声明对象指针
类名 *对象引用名 = 对象的地址;
// 声明对象数组
类名 对象数组名[数组大小];

类不占用内存,创建对象会给对象分配内存,使用类作为模板

编译器为每个对象的成员变量分配内存,而成员函数代码是共享的,并不会每个对象的内存中各存一份。

tmd不学了,学vue3去,有空再来收拾cpp的烂摊子

评论