东南大学考研网安复试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