1.函数重载编程练习
编写重载函数add(),实现对int型,double型,Complex型数据的加法。在main()函数中定义不同类型
数据,调用测试。

 #include<iostream>
using namespace std;
struct Complex
{
double real;
double imag;
};
void add(int x,int y)
{
cout<<"和 为:"<<x+y<<endl;
cout<<endl;
}
void add(double x,double y)
{
cout<<"和 为:"<<x+y<<endl;
cout<<endl;
}
void add(Complex x,Complex y)
{
Complex h;
h.real=x.real+y.real;
h.imag=x.imag+y.imag;
if(h.imag>=) cout<<"和 为:"<<h.real<<"+"<<h.imag<<"i"<<endl;
else cout<<"和 为:"<<h.real<<h.imag<<"i"<<endl;
cout<<endl;
}
int main()
{
int x1,y1;
double x2,y2,x31,x32,y31,y32; cout<<"请 输入两个int类型的数:";
cin>>x1>>y1;
add(x1,y1); cout<<"请 输入两个double类型数:";
cin>>x2>>y2;
add(x2,y2); cout<<"请 输入两个complex类型数: "<<endl;
cout<<"请 输入第一个数的实部:";
cin>>x31;
cout<<"请 输入第一个数的虚部:";
cin>>x32;
cout<<"请 输入第二个数的实部:";
cin>>y31;
cout<<"请 输入第二个数的虚部:";
cin>>y32;
add({x31,x32},{y31,y32});
return ;
}

2.函数模板编程练习
编写实现快速排序函数模板,并在main()函数中,定义不同类型数据,调用测试。

头文件quick.h

 #ifndef QUICK_H
#define QUICK_H
#include<iostream>
using namespace std;
void PaiXu(double a[],int low,int high)
{
int x=low,y=high,i;double t=a[x];
if(low<high)
{
while(x<y)
{
while(a[y]>t&&x<y)
y--;
if(x<y){a[x]=a[y];x++;}
while(a[x]<t&&x<y)
x++;
if(x<y){a[y]=a[x];y--;}
}
a[x]=t;
PaiXu(a,x+,high);PaiXu(a,low,x-);
}
}
void QuickPai(double a[],int n)
{
int i;
PaiXu(a,,n-);
cout<<"排 序后为:";
for(i=;i<n;i++)
cout<<a[i]<<" ";
}
#endif

主程序

 #include<iostream>
#include"quick.h""
using namespace std;
int main()
{
int n=,n1,i;
double a[],t;
cout<<"请 输入数组并以 -1 结束:";
while()
{
cin>>t;
if(t==-) break;
a[n]=t;
n++;
}
cout<<"请 输入你想要排序的数组长度:";
while()
{
cin>>n1;
if(n1<=n) break;
cout<<"长 度过长,请重新输入:";
}
QuickPai(a,n1);
return ;
}

3.设计并实现一个用户类User,并在主函数中使用和测试这个类。具体要求如下:
每一个用户有用户名(name), 密码(passwd),联系邮箱(email)三个属性。
支持设置用户信息setInfo()。允许设置信息时密码默认为6个1,联系邮箱默认为空串。
支持打印用户信息printInfo()。打印用户名、密码、联系邮箱。其中,密码以6个*方式显示。
支持修改密码changePasswd(),。在修改密码前,要求先输入旧密码,验证无误后,才允许修改。
如果输入旧密码时,连续三次输入错误,则提示用户稍后再试,暂时退出修改密码程序。
在main()函数中创建User类实例,测试User类的各项操作(设置用户信息,修改密码,打印用户信
息)

 #include<iostream>
#include<string.h>
using namespace std;
class user
{
public:
void setInfo();
void printInfo();
void changePasswd();
private:
string name="bot";
string passwd="";
string email="";
} ;
void user::setInfo()
{
string x;
cout<<"请 输入用户名:";
cin>>name;
cout<<"请 输入密码:";
cin>>passwd;
cout<<"请 输入邮箱地址:";
cin>>email;
cout<<"修 改成功!"<<endl;
}
void user::printInfo()
{
cout<<"用 户名:"<<name<<endl;
cout<<"密 码:******"<<endl;
cout<<"邮 箱地址:"<<email;
}
void user::changePasswd()
{
string t;
int n=;
do
{
cout<<"请 输入旧密码,默认密码为111111:";
cin>>t;
if(t.compare(passwd)==) break;
else{n--;cout<<"请 重新输入,剩余次数为: "<<n<<endl;}
}while(n!=); if(n!=) {cout<<"请 输入新密码:";cin>>passwd;cout<<"修 改成功!"<<endl;}
else cout<<"请 稍后重试,暂时退出修改密码!"<<endl;
}
int main()
{
user us;
int x,k=;
cout<<"1 为设置用户信息,2为打印用户信息,3为修改密码,4为退出菜单:"<<endl;
while()
{
cout<<endl;
cout<<"请 输入指令:";
cin>>x;
switch(x)
{
case :if(k==)
{
us.setInfo();
k=;
break;
}
else
{
cout<<"请 勿重复设置用户信息!"<<endl;
break;
}
case :us.printInfo();cout<<endl;break;
case :if(k==)
{
us.changePasswd();break;
break;
}
else
{
cout<<"尚 未设置用户信息!"<<endl;
break;
}
case :cout<<"谢 谢使用!"<<endl;return ;break;
default:cout<<"无 效的指令,请重新输入:"<<endl;
}
}
return ;
}

实验总结与体会:

1、感谢大佬的代码给了我思路;

2、递归问题要多加练习;

3、上学期要求做的oj的题目大多没什么思想内涵;

4、写了个好玩的程序,c环境的,可以输出253!的结果。

 /*运用列竖式做乘法的方法计算大数位数,
cheng用于大数位乘法,jinwei用于十进制进位,qu将被乘数转化为数组,
a[]存储原本数,b[]用于计算,c[]存储乘数*/ #include<stdio.h>
#define N 500
int cheng(int [],int [],int,int);
void jinwei(int [],int); /*做乘法*/
int cheng(int a[],int c[],int n,int w)
{
int b[N][N]={},i,j,i1,j1;
for (i=;i<w;i++)
for (j=;j<n;j++)
b[i][i+j]=a[j];
for (i=;i<w;i++)
{
for (j=;j<n;j++)
b[i][i+j]*=c[i];
jinwei(b[i],i+j);
}
if (b[i-][i+j-]!=) j++;
for (j1=;j1<i+j-;j1++)
{
for (i1=;i1<w;i1++)
b[][j1]+=b[i1][j1];
}
jinwei(b[],j1);
if (b[][j1]!=) j1++;
for (i=;i<j1;i++)
a[i]=b[][i];
return j1;
} /*十进制进位*/
void jinwei(int b[],int j)
{
int i1;
for (i1=;i1<=j||b[i1]!=;i1++)
if (b[i1]>)
{
b[i1+]+=(b[i1]/);
b[i1]%=;
}
} /*把数转换为数组*/
int qu(int *p,int x)
{
int n=;
while(x)
{
*(p+n)=x%;
x/=;
n++;
}
return n;
} /*做阶乘*/
int jiecheng(int x)
{
int a[N]={},c[N]={},n=,w=,i,j=;
n=qu(a,);
for (i=;i<=x;i++)
{
w=qu(c,i);
j=cheng(a,c,j,w);
}
printf("%d!的结果是:",x);
for (i=j-;i>=;i--)
printf("%d",a[i]);
printf("\n");
return j;
} int main()
{
int w,n;
while (scanf("%ld",&n)!=EOF)
{
w=jiecheng(n);
printf("位数为:%d\n",w);
}
return ;
}

最新文章

  1. JavaScript中的面向对象
  2. 关于kali2.0 rolling无法连接数据的解决办法
  3. swift开源项目精选
  4. Javascript 类与静态类的实现-js面向对象
  5. java基于xml配置的通用excel单表数据导入组件(一、实际应用过程)
  6. [Leetcode][Python]25: Reverse Nodes in k-Group
  7. [LeetCode][Python]Palindrome Number
  8. matlab里的nargin
  9. 使用WinDBG调试查看C#内存转储文件
  10. 【转】Mybatis源码解读-设计模式总结
  11. Day 3-6 生成器&amp;迭代器
  12. JQuery-change/select/submit
  13. 《FPGA全程进阶---实战演练》第九章 计数器要注意
  14. 机器学习入门-使用GridSearch进行网格参数搜索GridSeach(RandomRegressor(), param_grid, cv=3)
  15. runloop 和 CFRunLoop - 定时器 - NSTimer 和 GCD定时器
  16. h5移动端聊天室|仿微信界面聊天室|h5多人聊天室
  17. 另类之将ipython notebook嵌入blog方法
  18. jenkins配置email
  19. tomcat-java_opts设置说明
  20. 20155232 实验一《Java开发环境的熟悉》实验报告

热门文章

  1. /var/run/yum.pid被锁定
  2. SQL语句统计错误率
  3. java中关于Collection和Map相关的类&接口之间的关系
  4. CodeForces 877E Danil and a Part-time Job(dfs序+线段树)
  5. MongoDB YAML格式的配置文件
  6. Linq实战 之 DataSet操作详解
  7. C#+MVC+EF+LayUI框架的应用(附带源码和教程)
  8. Windows7系统安装TensorFlow深度学习框架全过程
  9. python学习之路 四 :文件处理
  10. 用Visual Studio 2015 编译张帆的第一个WDM驱动,并且成功安装到Windows 10里面!!!