东南大学网安考研复试准备C++程序分享

东南大学考研网安复试C++程序代码分享

23级考研复试资料

前言

提示:包含历年真题、练习题、知识点总结

一、基础练习题

在这里插入图片描述

二、知识点练习题

在这里插入图片描述

对类的理解

经典例题重现

新编C++ ,复试专业书籍的例题详细解析

历年真题可执行代码

知识点总结

新编C++复试–复试制定教材

在这里插入图片描述

真题

#include<stdio.h>
#include
#include
#include<math.h>
using namespace std;

/*
输入n个十进制数字转换成二进制输入到文件,n是随机
负数的二进制表示有补码和反码,默认输入正数
*/

//5= 0100
int string_binary(char*s,int num)
{
int i=0;
char c[100];
// 4=100,5=101, 0=0
do{
if(num%2==0)c[i++]=‘0’;
else c[i++]=‘1’;
num/=2;
}while(num);

// 0-i-1,1-i-2, 字符串逆置
for(int j=0;j<i;j++)
s[j]=c[i-j-1];

return i;

}

void fun1()
{
fstream file;
file.open(“data.dat”,ios::out);

if(!file)
{
cout<<“文件不可打开\n”;
exit(0);
}
int n,num,size;
char c[100];
cout<<“输入n\n”;
cin>>n;

while(n)
{
cout<<“输入数字\n”;
cin>>num;
size=string_binary(c,num);
file.write(c,sizeof(char)*size);
file<<endl;
n–;
}
file.close();
}

/*
2个模版函数:插入排序法的迭代实现与递归实现

int s[5]={4,3,1,2,5};

// sort1(s,5);
for(int i=1;i<5;i++)
{
if(s[i-1]>s[i])sort2(s,5,s[i],i);
}
for(int i=0;i<5;i++)
cout<<s[i];

insertsort(s,5);
for(int i=0;i<5;i++)
cout<<s[i];
*/

template

void sort1(T*s,int n)
{
// 小-大
for(int i=1;i<n;i++)
{
if(s[i]<s[i-1])
{
T tem=s[i];
int j=i;
for(;j-1>=0;j–)
{
if(s[j-1]>tem) // 判断前一个是否比tem大
s[j]=s[j-1];
else break;
}
s[j]=tem;

    }
}

}

template

void sort2(T*s,T tem,int i)
{ // tem 是固定

if(i-1>=0)// s[i-1]可以移动
{
    if(s[i-1]>tem){s[i]=s[i-1];sort2(s,tem,i-1);}
    else s[i]=tem;
}
else if(i==0)s[i]=tem; // i=0

}

template
void insertsort(T *b,int n)
{
if(n>0)
{
insertsort(b,n-1);
sort2(b,b[n-1],n-1); // n=1时 开始第一个执行
}
}

/*
(010)(15012345678)|123|(430070)
字符串按照
区号|电话|城市编号|邮箱输出
*/

void fun3()
{
fstream file;
file.open(“data2.txt”,ios::in);

char s[50];
file>>s;

string c[4]={"字符串按照区号","电话","城市编号","邮箱输出"};

int count=0;
for(int i=0;s[i]!='\0';i++)
{
    if(s[i]=='('||s[i]==')'||s[i]=='|')count++;
    else cout<<s[i];
    switch (count)
    {
    case 2:case 4:case 6:
        cout<<"| ";
        break;
    
    default:
        break;
    }
}
count=0;

file.close();

}

/*
递归实现倒序输出数组

int a[]={1,2,3,4,5,6,7,8,9,0};

fun4(a,0,10);

*/

void fun4(int *a,int cur,int n)
{
if(cur<=n-2)// 有多于1个数字
{
fun4(a,cur+1,n);//往前移动,不输出
}
cout<<a[cur];
}

/*
多项式类Polynomial
构造函数、复制构造、析构、赋值、实现2个多项式相加
x2+x3
x4+2x2
x
指数相同,系数相加
int s[];
index=指数
s[index]=系数

Polynomial p(0,1),q(0,2),u;
double data[5]={1,2,-3,4,-5};
u=p+q;
u.disp();
u.set(data,5);
u.disp();
*/

class Polynomial
{
protected:
int count;//最高指数
double s[50]={0};

public:
Polynomial(){ count=0;};//构造函数
Polynomial(int e,double n)//构造函数
{
s[e]+=n;
count=e;
}

Polynomial(const Polynomial&a)//复制构造
{ count=a.count;
for(int i=0;i<=count;i++)
s[i]=a.s[i];
}

void set(int e,double n)
{
s[e]+=n;
count=count>=e? count:e;
}
void set(double data[],int n)// n=数组大小
{
for(int i=0;i<n;i++)
{
s[i]+=data[i];
}

count=count>=n-1? count:n;

}
void operator =(const Polynomial&a)//赋值
{
count=a.count;
for(int i=0;i<=count;i++)
s[i]=a.s[i];
}

// 成员函数返回值=引用, 类有指针数据=使用引用传递参数
Polynomial& operator +(const Polynomial&b) //实现2个多项式相加
{
static Polynomial t;

int max=count>b.count? count:b.count;

for(int i=0;i<=max;i++)
{
    if(i<=count&&i<=b.count)t.s[i]=s[i]+b.s[i];
    else if(i<=count)t.s[i]=s[i];
    else if(i<=b.count)t.s[i]=b.s[i];
}

t.count=max;
return t;

}

void disp()
{
for(int i=0;i<=count;i++)
{
if(s[i]!=0)
{ if(s[i]>0)cout<<“+”;
cout<<s[i]<<“x^”<<i;
}
}
cout<<endl;
}

~Polynomial()//析构
{
cout<<“~\n”;
}
};

/*
Vehicle,car,streetwheel,brake
car 继承Vehicle

car 内定义 streetwheel、brake 并有数据成员

*/

class Vehicle
{
public:
Vehicle(){cout<<“Vehicle\n”;}
Vehicle(){cout<<"Vehicle\n";}
};

class car:public Vehicle
{
protected:

class streetwheel
{
public:
streetwheel(){cout<<“streetwheel\n”;}
streetwheel(){cout<<"streetwheel\n";}
}str1;

class brake
{
public:
brake(){cout<<“brake\n”;}
brake(){cout<<"brake\n";}
}bra1,bra2;

public:
car(){cout<<“car\n”;}
car(){cout<<"car\n";}

};

/*
基类shape
继承shape,写一个二维图形类和三位图形类
形状
边数、面积
面数、体积

d2 d(“长方形”);
d.set();
d.disp();

d3 t(“长方体”);
t.set();
t.disp();
*/

class shape
{
protected:
char name[50];

public:
shape(){};
shape(const char*s)
{
strcpy(name,s);
}
virtual void set()=0;
virtual void disp()=0;
};

class d2:public shape
{
protected:
double area;
int num;

public:
d2(){};
d2(const char*s):shape(s){};
virtual void set()
{
cout<<name<<endl;
cout<<“输入边数量:\n”;
cin>>num;
cout<<“输入面积:\n”;
cin>>area;
}

virtual void disp()
{
cout<<“边数量:”<<num<<“面积:”<<area<<endl;
}
};

class d3:public shape
{
protected:
int num;
double volume;

public:
d3(){};
d3(const char *s):shape(s){};

virtual void set()
{
cout<<name<<endl;
cout<<“输入面数量:\n”;
cin>>num;
cout<<“输入体积:\n”;
cin>>volume;
}
virtual void disp()
{
cout<<“面数量:”<<num<<“体积:”<<volume<<endl;
}
};

int main()
{

return 0;
}

总结

程序均可执行,附加可执行文件,重要代码有中文注释,真实的复试资料,适合补基础的同学,认真阅读代码的思路,调试代码,理解代码.
有需要的同学添加QQ:3680845693

  • 35
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Miracle&Elephant

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值