c++第二次作业
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 ;
}
c++第二次作业的更多相关文章
- 耿丹CS16-2班第二次作业汇总
-- Deadline: 2016-09-28 12:00 -- 作业内容:http://www.cnblogs.com/huangjunlian/p/5891726.html -- 第二次作业总结: ...
- JAVA第二次作业展示与学习心得
JAVA第二次作业展示与学习心得 在这一次作业中,我学习了复选框,密码框两种新的组件,并通过一个邮箱登录界面将两种组件运用了起来.具体的使用方法和其他得组件并没有什么大的不同. 另外我通过查阅资料使用 ...
- 20169212《Linux内核原理与分析》第二周作业
<Linux内核原理与分析>第二周作业 这一周学习了MOOCLinux内核分析的第一讲,计算机是如何工作的?由于本科对相关知识的不熟悉,所以感觉有的知识理解起来了有一定的难度,不过多查查资 ...
- 软件工程(QLGY2015)第二次作业点评(随机挑选20组点评)
相关博文目录: 第一次作业点评 第二次作业点评 第三次作业点评 说明:随机挑选20组点评,大家可以看看blog名字,github项目名字,看看那种是更好的,可以学习,每个小组都会反应出一些问题,希望能 ...
- 程序设计第二次作业<1>
面向对象程序设计第二次作业<1> Github 链接:https://github.com/Wasdns/object-oriented 题目: <1>第一次尝试 我立马认识到 ...
- homework-02,第二次作业——寻找矩阵最大子序列和
经过漫漫漫~~~~~~~~~~~~~~长的编译和调试,第二次作业终于告一段落了 先放出源码,思路后面慢慢道来 #include<stdio.h> #include<stdlib.h& ...
- 20169210《Linux内核原理与分析》第二周作业
<Linux内核原理与分析>第二周作业 本周作业分为两部分:第一部分为观看学习视频并完成实验楼实验一:第二部分为看<Linux内核设计与实现>1.2.18章并安装配置内核. 第 ...
- SQL 第二章 作业
/*第二章 作业*/ create table S ( sno char(2) NOT NULL UNIQUE, sname char(3), city char(2) ); alter table ...
- 软件工程(GZSD2015)第二次作业小结
第二次作业,从4月7号开始,陆续开始提交作业.根据同学们提交的作业报告,相比第一次作业,已经有了巨大改变,大家开始有了完整的实践,对那些抽象的名词也开始有了直观的感受,这很好.然后有一些普遍存在的问题 ...
- 软件工程(GZSD2015)第二次作业进度
贵州师范大学软件工程第二次作业 徐 镇 王铭霞 张 英 涂江枫 张 燕 安 坤 周 娟 杨明颢 杨家堂 罗文豪 娄秀盛 周 娟 李盼 岳庆 张颖 李丽思 邓婷 唐洁 郑倩 尚清丽 陈小丽 毛茸 宋光能 ...
随机推荐
- Jrebel 独立部署tomcat 远程同步项目
一直在用 jrebel 感觉热部署的 功能,修改xml配置文件等,省去了很多的重新启动的时间. 由于偶然间发现 jrebel 还有remote 路由功能.这样,在服务器端用jrebel部署的项目和本地 ...
- YII2 rules 规则验证器
[['code','name'],'trim'], ['code','string','max'=>4], [['code','name','status'], 'required'], ['e ...
- kcp结构体字段含义
conv 会话IDmtu 最大传输单元mss 最大分片大小state 连接状态(0xFFFFFFFF表示断开连接)snd_una 第一个未确认的包snd_nxt 下一个待分配的包的序号rcv_nxt ...
- kalilinux基础
service postgresql start service metasploit start msfconsole-db_status 配置metasploit随系统启动: update-rc. ...
- unity 确定敌人行走路线
一开始搞这个问题很头疼,无从下手. 1.敌人在随机地点产生后,每个敌人有要有自己自动的行走路线,目的地是保护地,而且行走路线要多样化. 2.敌人在看到玩家时,改变行走路线,向玩家的方向行进,且到了一定 ...
- 自己(转)JAVA中toString方法的作用
JAVA中toString方法的作用 因为它是Object里面已经有了的方法,而所有类都是继承Object,所以“所有对象都有这个方法”. 它通常只是为了方便输出,比如System.out.print ...
- SocketAsyncEventArgs
SocketAsyncEventArgs是.net提供的关于异步socket类,封装了IOCP的使用,可以用它方便的实现NIO(non-blocking IO) NIO对于提升某些场景下Server性 ...
- select2的一些隐藏功能
select 3.5版本的说明文档里面存在 http://select2.github.io/select2/index.html option选项 sortResults query为查询字符串
- 查看SSD寿命
查看SSD寿命 起初买mac book pro的时候挺担心SSD使用寿命的,过保了后,还搞了个移动硬盘,尽可能的把编译什么的都移动到移动硬盘上进行,实际上这样做都是没有必要的. 安装软件smartct ...
- DB2知识文档
DB2知识文档 一.db2 基础 基本语法 注释:“--”(两个减号) 字符串连接:“||” 如set msg=’aaaa’||’bbbb’,则msg为’aaaabbbb’ 字符串的引用:‘’(一定用 ...