【C++】考研408代码题【必会】【收藏】

简介: 【C++】考研408代码题【必会】【收藏】

现在时间

#include<iostream>
#include<ctime>
using namespace std;
int main()
{
    int totalSeconds = time(0);
    int CurrentSecond = totalSeconds%60;
    int totalMinutes = totalSeconds/60;
    int CurrentMinutes = totalMinutes%60;
    int totalHours = totalMinutes/60;
    int CurrentHours = (totalHours+8)%24;
    cout << "Current time is " << ":" << CurrentHours << ":" << CurrentMinutes << ":" 
    << CurrentSecond << "GMT" << endl ;
    system("pause");
    return 0;
}


布尔值不必再测试


if (even == true)---------if (even)


常见错误 两浮点值的相等性测试


浮点有精度限制 一旦涉及计算 就会导致舍入,所以 要用数学表达

非常接近

就是||<epsilon


减法练习


#include<iostream>
#include<ctime>
#include<cstdlib>//for rand and srand fuction
using namespace std;
int main()
{
    srand(time(0));
    int number1 = rand() % 10;
    int number2 = rand() % 10;
    if (number1 < number2)
    {
        int temp = number1;
        number1 = number2;
        number2 = temp;
    }
    cout << "题目是:" << number1 << "-" << number2 << endl
    << " 你的答案是:";
    int ans;
    cin >> ans;
    if(ans == number1 - number2)
        cout << "yes!";
    else
        cout << "wrong!";
    system("pause");
    return 0;
}


十六进制转十进制


#include<iostream>
#include<cctype>//测试和转换字符
using namespace std;
int main()
{
    cout << "enter a digit :";
    char hexDigit;
    cin >> hexDigit;
    hexDigit = toupper(hexDigit);//daxie
    if (hexDigit <= 'F' && hexDigit >= 'A')
    {
        int value = 10 + hexDigit - 'A';
        cout << hexDigit << "is" << value;
    }
    system ("pause");
}


String 是一个对象类型

// Forward declarations -- C++ --
// Copyright © 2001-2018 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.
// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
// http://www.gnu.org/licenses/.
/** @file bits/stringfwd.h
This is an internal header file, included by other library headers.
Do not attempt to use it directly. @headername{string}
*/
//
// ISO C++ 14882: 21 Strings library
//

写入文件

#include<iostream>
#include<fstream>
using namespace std;
int main()
{
    ofstream output;
    output.open("numbers.txt");
    output << 95 <<" "<< 56 << " " << 88;
    output.close();
    cout << "Done" << endl;
    system ("pause");
}


const int NUMBER_OF_QUESTIONS = 5;


输入和输出重定向–键盘输入太过于笨拙 Sentinel value.exe > output.txt


#include<iostream>
#include<fstream>
using namespace std;
int main()
{
    ifstream input("numbers.txt");
    double sum = 0;
    double number;
    while(!input.eof())
    {
        input >> number;
        cout << number <<" " ;
        sum += number;
    }
    input.close();
    cout << "Done" << sum << endl;
    system ("pause");
}



函数—和c一致


和c一致


–传值方式


函数的重载–同名不同参数


函数原型 prototype – int max (int num1, int num2)后面再实现

缺省参数–设置一个缺省值 --默认值 int max (int num1 ,int num2=5)–只能后面的缺省

内联函数-提高性能-避免函数调用压栈的开销

inline void f(int a)
{
cout << a;
}


static int x = 1;— 会一直驻留在内存

引用传参-特殊变量 引用变量

int& a;
#include<iostream>
using namespace std;
void swap(int& num1,int& num2)
{
    int temp;
    temp = num1;
    num1 = num2;
    num2 = temp;
}
int main()
{
    int num1=1,num2=2;
    cout << num1 << " " << num2 <<endl;
    swap(num1, num2);
    cout << num1 << " " << num2;
    system ("pause");
}


常量引用传递 int max (const int& num1)—不可改变


设置桩函数–自顶向下设计—逐步求精

一维数组array和C字符串


shuffling 洗牌 数组—数组 天生的 引用传递


#include<iostream>
#include<ctime>
using namespace std;
void shuffling(int team[], int arraySize)
{
    srand(time(0));
    for(int i=arraySize-1; i>0; i--)
    {
        int j = rand()%(i + 1);
        int temp = team[i];
        team[i]=team[j];
        team[j]=temp;
    }
}
int main()
{
    int team[100];
    for(int i = 0; i < 100 ; i ++ )
    {
        team[i] = i;
    }
    shuffling(team, 100);
    for(int i = 0; i < 100 ; i ++ )
    {
        cout << team[i] << " ";
    }
    system("pause");
}


防止数组修改 void f( const int list【】,int arraySize)


数组作为返回值–反转array


#include<iostream>
#include<ctime>
using namespace std;
void reverse(int team[],int newteam[],int size){
    for(int i=0,j=size-1;i<size;i++,j--){
        newteam[j]=team[i];
    }
}
void printArray(int team[], int size){
    for(int i = 0; i < 100 ; i ++ )
    {
        cout << team[i] << " ";
    }
}
int main()
{
    int team[100];
    int newteam[100];
    for(int i = 0; i < 100 ; i ++ )
    {
        team[i] = i;
    }
    reverse(team, newteam, 100);
    printArray(newteam,100);
    system("pause");
}


二分搜索


#include<iostream>
#include"ShufflingArray.cpp"
using namespace std;
void reverse(int team[],int newteam[],int size){
    for(int i=0,j=size-1;i<size;i++,j--){
        newteam[j]=team[i];
    }
}
void printArray(int team[], int size){
    for(int i = 0; i < 100 ; i ++ )
    {
        cout << team[i] << " ";
    }
}
int binarySearch(int team[],int size,int key)
{
    int low=0,high=size-1;
    while(low<=high)
    {
    int mid=(low+high)/2;
    cout << low << " " << mid << " "<< high<< endl; 
    if(team[mid]>key){
        high=mid-1;
    }
    else if (team[mid == key]){
        return mid;
    }
    else{
        low=mid+1;
    }
    }
    return -1;
}
int main()
{
    int team[100];
    int newteam[100];
    for(int i = 0; i < 100 ; i ++ )
    {
        team[i] = i;
    }
    shuffling(team,100);
    int key = 33;
    int a = binarySearch(team,100,key);
    cout << a;
    //reverse(team, newteam, 100);
    //printArray(newteam,100);
    system("pause");
}


选择排序


#include<iostream>
#include"ShufflingArray.cpp"
using namespace std;
void printArray(int team[], int size){
    for(int i = 0; i < 100 ; i ++ )
    {
        cout << team[i] << " ";
    }
}
void selectionSort(int team[], int size){
        for(int i = 0; i < size ; i ++ )
        {
            int currentMin = team[i];
            int currentMinIndex = i;
            for(int j = i + 1 ; j < size ; j ++)
            {
                if(currentMin > team[j]){
                    currentMin = team[j];
                    currentMinIndex = j;
                }
            }
            if(currentMinIndex != i)
            {
                team[currentMinIndex] = team[i];
                team[i] = currentMin;
            }
        }
}
int main()
{
    int team[100];
    for(int i = 0; i < 100 ; i ++ )
    {
        team[i] = i;
    }
    shuffling(team,100);
    selectionSort(team,100);
    printArray(team,100);
    system("pause");
}


c的字符串 string—结尾是’\0’

itoa()


二维数组做参数----------需要a【】【column_size】–


#include <iostream>
#include <cmath>
using namespace std;
double getDistance(double x1, double y1, double x2, double y2)
{
    return sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
}
int main()
{
    const int NUMBER_OF_POINTS = 8;
    double points[NUMBER_OF_POINTS][2];
    cout << "Enter " << NUMBER_OF_POINTS << " points:";
    for (int i = 0; i < NUMBER_OF_POINTS; i ++)
    {
        cin >> points[i][0] >> points[i][1];
    }
    int p1=0,p2=1;
    double shortestDistance = getDistance(points[p1][0], points[p1][1]
            , points[p2][0], points[p2][1]);
    for (int i = 0; i < NUMBER_OF_POINTS; i++)
    {
        for (int j = i+1; j < NUMBER_OF_POINTS; j++)
        {
            double distance  = getDistance(points[i][0], points[i][1]
            , points[j][0], points[j][1]);
            if(shortestDistance > distance)
            {
                shortestDistance = distance;
            }
            cout << shortestDistance;
        }
    }
    cout << "shortest:" << shortestDistance;
    system("pause");    // 防止运行后自动退出,需头文件stdlib.h
    return 0;
}


对象和类


初始化列表来初始化数据域

Circle ::Circle()
  :radius(1)
{
}


Circle ::Circle()
{
  radius = 1;
}


类定义实现分离


。h ---------意味 头head

相同名字 不同扩展名

::二元作用域解析符号 -binary scope resolution operator

std ::cout<< “hello”;


1668177889606.jpg


避免多次包含-包含保护 inclusion guard


1668177906590.jpg


类中的 内联函数—内联定义


1668177922173.jpg


面对对象思想


数字转字符串 ss.str()

类的设计–内聚 。。。


指针 动态内存管理–原来如此 为什么当初我的老师要这样教我,让我产生如此巨大的误解!-指针也不过是个变量 用四个字节存一个地址


#include<iostream>
using namespace std;
int main()
{
    int count = 5;
    int* pCount = &count;
    cout << count <<endl;
    cout << pCount<<endl;
    cout << &count << endl;
    cout << *pCount << endl;
    system ("pause");
}


#include<iostream>
using namespace std;
int main()
{
    int count = 5;
    int* pCount = &count;//*用于声明
    cout << count <<endl;
    cout << pCount<<endl;
    cout << &count << endl;
    cout << *pCount << endl;//*用于解引用
    system ("pause");
}


常量数据 常量指针


const double* const pValue = &radius;


数组名实际上是 指向数组第一个元素的常量指针

指针从 list +0 开始 所以数组下标从0开始


指针交换


#include<iostream>
using namespace std;
void swap3(int* p1, int* p2)//交换指针的值
{
    int temp = *p1;
    *p1 = *p2;
    *p2 = temp;//把指针指向的变量换了
}
int main()
{
    int num1 = 1;
    int num2 = 2;
    swap3(&num1,&num2);//传进去指针变量
    cout << num1 << num2;
    system ("pause");
}


动态持久内存分配//局部变量在栈中 new分配在堆中–动态数组


#include<iostream>
using namespace std;
int* reverse(const int* list,int size)
{
    int* result = new int[size];
    for (int i = 0 , j=size-1; i < size ; i++,j--)
    {
        result[i]=list[j];
    }
    return result;
}
void printArray(int team[], int size){
    for(int i = 0; i < size ; i ++ )
    {
        cout << team[i] << " ";
    }
}
int main()
{
    int list[]={1,2,3,4,5,6};
    int* p = reverse(list, 6);//动态数组:int* list =new int【size】;
    printArray(p, 6);
    system ("pause");
}


this指针—指向被调用对象本身-访问被屏蔽的数据域–局部变量同名,所以屏蔽对象本身的变量

访问被屏蔽的数据域

1668178025480.jpg


析构函数destructor

每个类都有一个析构函数 , 当一个对象销毁时候自动调用该析构函数

1668178036685.jpg1668178048682.jpg



delete circle1;


模板、向量、栈


模板栈

template<class T>
class Stack
{
private:
    class Node
    {
    public:
        T x;
        Node* next;
        Node(){}
        Node(T t,Node* next){
            this->x = t;
            this->next = next;
        }
        Node(Node& node){
            this->x = node.x;
            this->next = node.next;
        }
    };
    Node* top;
    int num;
public:
    Stack(){
        top = new Node(0,nullptr);
        num = 0;
    }
    ~Stack(){
        while(top->next!=nullptr){
            Node* temp = top->next;
            top->next = top->next->next;
            delete temp;
        }
        delete top;
        num = 0;
    }
    void push(T t){
        Node* oldfirst = top->next;
        Node* newfirst = new Node(t,nullptr);
        newfirst->next = oldfirst;
        top->next = newfirst;
        num++;
    }
    T pop(){
        if(top->next!=nullptr){
            Node* temp = top->next;
            top->next = top->next->next;
            T val = temp->x;
            delete temp;
            num--;
            return val;
        }
    }
    int getlength(){
        return num;
    }
};

向量类vector–更灵活vector intVector(10); 使用intVector【0】=5;要保证里面有元素!

#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main()
{
    vector<int> intVector;
    for(int i = 0; i<3;i++)
        intVector.push_back(i+1);
    cout << intVector[0];
    vector<string> stringVector;
    stringVector.push_back("Dalao");
    cout << stringVector[0];
    system ("pause");
}


向量表示二维数组


#include<iostream>
#include<vector>
using namespace std;
int main()
{
    vector<vector<int> > matrix(4);
    for(int i = 0; i<4;i++)
        matrix[i]=vector<int>(3);
    matrix[0][0]=1;
    system ("pause");
}
相关文章
|
1天前
|
存储 安全 C语言
C++ String揭秘:写高效代码的关键
在C++编程中,字符串操作是不可避免的一部分。从简单的字符串拼接到复杂的文本处理,C++的string类为开发者提供了一种更高效、灵活且安全的方式来管理和操作字符串。本文将从基础操作入手,逐步揭开C++ string类的奥秘,帮助你深入理解其内部机制,并学会如何在实际开发中充分发挥其性能和优势。
|
3月前
|
算法 安全 C++
提高C/C++代码的可读性
提高C/C++代码的可读性
90 4
|
4月前
05(数据结构考研)树相关操作代码
05(数据结构考研)树相关操作代码
40 0
|
4月前
|
算法
04(数据结构考研)串相关操作代码
04(数据结构考研)串相关操作代码
27 0
|
4月前
03(数据结构考研)队列相关操作代码
03(数据结构考研)队列相关操作代码
51 0
|
4月前
02(数据结构考研)栈相关操作代码
02(数据结构考研)栈相关操作代码
21 0
|
4月前
01(数据结构考研)线性表相关操作代码
01(数据结构考研)线性表相关操作代码
105 0
|
4月前
|
Linux C语言 C++
vsCode远程执行c和c++代码并操控linux服务器完整教程
这篇文章提供了一个完整的教程,介绍如何在Visual Studio Code中配置和使用插件来远程执行C和C++代码,并操控Linux服务器,包括安装VSCode、安装插件、配置插件、配置编译工具、升级glibc和编写代码进行调试的步骤。
634 0
vsCode远程执行c和c++代码并操控linux服务器完整教程
|
5月前
|
C++
继续更新完善:C++ 结构体代码转MASM32代码
继续更新完善:C++ 结构体代码转MASM32代码
|
5月前
|
C++ Windows
HTML+JavaScript构建C++类代码一键转换MASM32代码平台
HTML+JavaScript构建C++类代码一键转换MASM32代码平台

热门文章

最新文章

  • 1
    2024重生之回溯数据结构与算法系列学习之串(12)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】
    48
  • 2
    2024重生之回溯数据结构与算法系列学习之栈和队列精题汇总(10)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
    45
  • 3
    2024重生之回溯数据结构与算法系列学习之单双链表精题详解(9)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
    50
  • 4
    2024重生之回溯数据结构与算法系列学习(8)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
    53
  • 5
    2024重生之回溯数据结构与算法系列学习之王道第2.3章节之线性表精题汇总二(5)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
    39
  • 6
    2024重生之回溯数据结构与算法系列学习之单双链表【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
    71
  • 7
    2024重生之回溯数据结构与算法系列学习之顺序表习题精讲【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
    37
  • 8
    2024重生之回溯数据结构与算法系列学习之顺序表【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
    46
  • 9
    2024重生之回溯数据结构与算法系列学习【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
    43
  • 10
    通义灵码在考研C语言和数据结构中的应用实践 1-5
    126