0


原来用心学C++后,刷数据结构题跟喝水一样

🎉每一个不曾起舞的日子都是对生命的辜负🎉

CSDN话题挑战赛第1期
活动详情地址:https://marketing.csdn.net/p/bb5081d88a77db8d6ef45bb7b6ef3d7f
参赛话题:大学生技术学习方法分享
话题描述:大学生该如何学习技术呢?无论是考研还是就业,都面对这众多的技术需要学习,那我们应该如何有序规范化的进行学习呢?

一、C++发展历程与背景

早期的计算机程序语言计算计算机控制指令,每条指令是一组二进制数,不同的计算机都有不同的计算机指令集。使用二进制指令集是件很头痛的事,程序员需要记住大量的二进制数,为了便于记忆,人们将二进制数用字母组合代替。以字符串关键字代替二进制机器码的编程语言称为汇编语言,汇编语言被称为是低级语言,虽然比机器码容易记忆,但仍然具有可读性差的缺点,大量的跳转指令和地址值很难让程序员在很短的时间理解程序的意思,于是编程语言进入了高级语言时代。

第一个高级语言是美国尤尼法克公司在1952年研制成功的Short Code,但被广泛使用的高级语言是FORTRAN,它是由美国科学家巴克斯设计并在IBM公司的计算机上实现的,但FORTRAN语言和ALGOL60主要应用于科学和工程计算,随后出现了Pascal和C语言。C语言是在其他语言基础上发展起来的。首先是Richard Martin开发的一种高级语言BCPL,随后Ken Thompson对BCPL语言进行了简化,形成一门新的语言——B语言,但B语言没有类型的概念,Dennis Ritchie对B语言进行研究和改进,在B语言基础上添加了结构和类型,并将这个改进后的语言命名为C语言,寓意和简单,因为字母C是字母B的下一个字母,预示着语言的发展。

C++语言是从C语言发展过来的。Stroustrup经过钻研,在C语言中加入类的概念,C++最初的名字是C with class,到1983年12月由Rick Mascitti建议改名为CPlusPlus,即C++。

最开始提出类概念的语言是Simula,它具有很高的灵活性,但无法胜任比较大型的程序,此后在Simul语言基础上发展的语言Smalltalk才是真正的面向对象语言,但Smalltalk-80不支持多继承。

二、C++知识点推荐

1.在网站找视频资源

在b站我最喜欢看黑马程序员创作的C++入门视频,因为他针对初学者非常友好,讲的非常基础且全面,还有案例来巩固知识点,有时候我们受不了代码学习的枯燥,那么为何不从小做起呢,跟着他的视频,我们自己做出来不同的程序,也有成就感支持我们继续学下去。不过我在学习的同时会发散思维,如果自己开头了解了,那我会先按照自己的思路把程序完成再去和他讲的做对比,很有趣也有成就感,例如,他在讲猜数字游戏的时候,我自己弄出了一个抽自己班级同学学号的案例,随机抽取,公平公正,很舒服的,代码展示一下:

#include<iostream>
#include<ctime>
using namespace std;
int main()
{                                        /*注:1.本程序的学号均为整数类型。
                                               2.学号太大的话会不适用,可以去掉高位重复的数字,用尾号代表学号*/
    int n = 1, x = 0, y = 0, z = 0, t = 0;
    cout << "请输入区间范围,填一个整数即可:";
    cin >> x;
    cout << "请输入第一个学号:";
    cin >> y;
    cout << "请输入一次抽取的个数:";
    cin >> z;
    cout << "请输入需要抽取的次数:";
    cin >> t;
    srand((unsigned int)time(NULL));
    while (1)
    {
        int i = 1;
        for (; i <= z; i++) {
            int Num = rand() % x + y;
            cout << "此次抽到的学号为:" << Num << endl;
        }
        cout << "一次抽奖完成" << endl;
        cout << "----------------" << endl;
        n++;
        if (n > t)
        {
            cout << "抽奖结束,如果有重复请多次抽取,选择学号不重复的一组学号" << endl;
            break;
        }
    }
    system("pause");
}

有兴趣的可以拿去抽抽数字,为平凡的一天增加乐趣!!!

2.结合数据结构线性表

可以利用C++来定义结构体,分文件编写,分化大项目等等,来一个测试线性表的案例。

#pragma once
#include<stdio.h>  
#include<stdlib.h>  
#include<malloc.h>
#define LIST_INIT_SIZE  10  
#define LISTINCREMENT   10    
#define OK              1  
#define ERROR           0  

typedef struct SqList {
    int* elem;
    int len;
    int size;
}SqList;
int InitList_Sq(struct SqList* L);//初始化顺序表
int ListInsert_Sq(struct SqList* L, int i, int e);// 向顺序表中插入数据
int ListDelete_Sq(struct SqList* L, int i, int* e);//删除顺序表中的数据  
void ListShow_Sq(struct SqList* L, const char* s);//输出顺序表中的数据  
void DestroyList(SqList* L);//销毁表

运行效果图示:

三、技术应用项目

C++可用于服务端开发,游戏,虚拟现实,数字图像处理等领域,相较于C语言语言简洁,输入输出可用IO流,使用方便、灵活;拥有丰富的运算符;支持面向对象过程和面向对象的方法。C++语言能应用于大应用的底层代码,比起Python有运行快速的特点。

项目代码

/*解析一个 JSON 字符串至一个 document (DOM),对 DOM 作出简单修改,最终把 DOM 转换(stringify)至 JSON 字符串。*/

// rapidjson/example/simpledom/simpledom.cpp`
#include "rapidjson/document.h"
#include "rapidjson/writer.h"
#include "rapidjson/stringbuffer.h"
#include <iostream>
 
using namespace rapidjson;
 
int main() {
    // 1. 把 JSON 解析至 DOM。
    const char* json = "{\"project\":\"rapidjson\",\"stars\":10}";
    Document d;
    d.Parse(json);
 
    // 2. 利用 DOM 作出修改。
    Value& s = d["stars"];
    s.SetInt(s.GetInt() + 1);
 
    // 3. 把 DOM 转换(stringify)成 JSON。
    StringBuffer buffer;
    Writer<StringBuffer> writer(buffer);
    d.Accept(writer);
 
    // Output {"project":"rapidjson","stars":11}
    std::cout << buffer.GetString() << std::endl;
    return 0;
}
//注意此例子并没有处理潜在错误。

四、学习总结

学过C++,我对类和对象的继承方面还欠缺实战巩固,不过我会不断找到对应例子攻克,作为计算机专业的学生,就要咬得动代码,坐的住板凳,我会把C++入门知识都写进我的博客,期待你和我共同进步!!!

CSDN话题挑战赛第1期
活动详情地址:https://marketing.csdn.net/p/bb5081d88a77db8d6ef45bb7b6ef3d7f


本文转载自: https://blog.csdn.net/m0_58618795/article/details/124675719
版权归原作者 对象new不出来 所有, 如有侵权,请联系我们删除。

“原来用心学C++后,刷数据结构题跟喝水一样”的评论:

还没有评论