}break;
}
}
return0;
}运行演示
【收获及体会】
在本程序所采用的三种方法里边,归并排序所耗费的时间最短,计算时间的算法start()和finish()之间放所要计算时间的代码,即可得出时间
【完成题目3】数制转换
【问题描述】
在日常生活中,常常使用各种编码,如身份证号码、电话号码和邮政编码等,这些编码都是由十进制数组成的。
同理,在计算机中采用由若干位二进制数组成的编码来表示字母、符号、汉字和颜色等非数值信息。
十进制数N和其他进制数的转换是计算机实现计算的基本算法,数制间转换的实质是进行基数的转换。
【基本要求】
设计实现十进制数与二进制数之间的数制转换程序,要求进行某种数制转换后,输入相应的格式正确的数值(也可以是混合小数的形式),程序按照设定的算法执行,给出相对应的进制数数值,对于输入数据的合法性可以不做检查。
【算法设计】
将输入数定义为float类型,先将整数部分和小数部分分开,分别进行转换,整数部分依次除以2,把余数存进数组,输出时倒着输出,并输出小数点小数部分依次乘以2,输出时正序输出
【源代码】
#include
usingnamespacestd;
intmain()
{
inta,b,i,w=0,m,n,j,du,u,g;
ints[100];
floatc,d,e,f;
cout<<"输入整数或小数"<cin>>c;
cout<<"准确度(小数点后几位)"<cin>>du;
d=c;
n=c;
u=du;
while(a!
=0)
{
w++;
a=n/2;
b=n%2;
n=a;
s[w]=b;
}
cout<<"转换结果"<for(i=w;i>0;i--)
{
cout<
}
cout<<".";
j=w+1;
n=d/1;
e=d-n;
while(du)
{
w++;
f=e*2;
g=f/1;
e=f-g;
s[w]=g;
du--;
}
for(m=j;m
cout<
cout<return0;
}
运行演示
【收获及体会】
小数进行数值转换时,要先将小数部分和整数部分分开,分别进行转换,转换时涉及的差积商余运算还有类型转换,此题目可以用数据结构栈来实现
【完成题目4】宿舍管理查询系统
【问题描述】
为宿舍管理人员编写一个宿舍管理查询系统
【基本要求】
1.采用交互工作方式;
2.可以增加、删除、修改信息;
3.建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序;
4.查询(按姓名、学号、房间号查询);
5.打印任一查询结果(可以连续操作)。
【算法设计】
用结构体来实现,增加,删除,排序,查找,修改分模块来实现switch,case实现操作选择
【源代码】
#include
#include
#include
#include
usingnamespacestd;
structcomm_info
{
charname[16];
longnum;
charf[16];
};
intmain()
{
system("color75");
structcomm_infos[300],t;
inti=0,w,m=0,f=0;
charc[20];
intcount=3;
charname[20],pwd[20];
while(count!
=0)
{
cout<<"请输入用户名:
"<>name;
cout<<"请输入密码:
"<>pwd;
count--;
if(strcmp(name,"zhaofan")==0&&strcmp(pwd,"123")==0)
{
m++;
count=0;
}
else
{
cout<<"密码或用户名错误您还有"<if(count==0)
cout<<"密码错误次数达到最大限制!
程序即将退出!
"<}
}
if(m)
{
ifstreamfin1("f1.dat",ios:
:
binary);
memset(s,0,300*sizeof(comm_info));
for(w=0;w<300;w++)
{
fin1.read((char*)&s[w],sizeof(comm_info));
if(!
s[w].num==0)
{
f++;
}
}
i=f;
fin1.close();
while
(1)
{
system("cls");
cout<<"欢迎使用宿舍管理系统"<cout<cout<<"2查询"<cout<<"3删除"<cout<<"4修改"<cout<<"5排序"<cout<<"6当前操作下所有数据"<cout<<"7将已处理数据写入文"<cout<<"8退出"<cin>>w;
if(w==8)
break;
switch(w)
{
case1:
cout<<"增加数据"<{
do
{
cout<<"第"<
ofstreamfout1("f1.dat",ios:
:
app);
ofstreamfout2("f2.txt",ios:
:
app);
if(!
fout1)
{
cout<<"Cannotopenbinaryfile."<exit(0);
}
if(!
fout2)
{
cout<<"Cannotopentextfile."<exit(0);
}
cout<<"输入姓名:
";cin>>s[i].name;
cout<<"输入学号:
";cin>>s[i].num;
cout<<"输入房号:
";cin>>s[i].f;
fout1.write((char*)&s[i],sizeof(comm_info));//把记录写入二进制文件
//把记录写入文本文件
fout2<<"学号:
"<
"<
"<
fout1.close();
fout2.close();
i++;
cout<<"数据录入成功,继续录入吗(y/n)"<cin>>c;
inta=0;
do
{
if(strcmp(c,"y")&&strcmp(c,"n"))
{
cout<<"指令错误!
请重新输入!
";
cin>>c;
}
else
a=1;
}while(a==0);
}while(strcmp(c,"y")==0);
break;
}
case2:
cout<<"查询"<{
intm=0;
if(i<1)
{
cout<<"没有成员"<m++;
_sleep(3000);
if(m)
break;
}
cout<<"1按姓名查找"<cout<<"2查找组"<cout<<"3退回主菜单"<inta=0,b,d=0;
charname[20];
cin>>b;
if(b==3)
break;
switch(b)
{
case1:
do
{cout<<"按姓名查找"<"<cin>>name;
for(intj=0;j
{
if(strcmp(name,s[j].name)==0)
{
cout<<"姓名:
"<
cout<<"学号:
"<
cout<<"房号:
"<
d++;
}
}
if(d)
cout<<"存在,是否继续姓名操作(y/n)"<else
cout<<"不存在,是否继续姓名操作(y/n)"<cin>>c;
do
{
if(strcmp(c,"y")&&strcmp(c,"n"))
{
cout<<"指令错误!
请重新输入!
";
cin>>c;
}
else
a=1;
}while(a==0);
}while(strcmp(c,"y")==0);
break;
case2:
do
{cout<<"按小组查找"<charf[16];
intd=0;
cin>>f;
for(intj=0;j
{
if(strcmp(f,s[j].f)==0)
{
cout<<"姓名:
"<
cout<<"学号:
"<
cout<<"房号:
"<
d++;
}
}
if(d)
cout<<"已经找到,是否继续房号查找操作(y/n)"<else
cout<<"不存在,是否继续房号操作(y/n)"<cin>>c;
do
{
if(strcmp(c,"y")&&strcmp(c,"n"))
{
cout<<"指令错误!
请重新输入(y/n)!
";
cin>>c;
}
else
a=1;
}while(a==0);
}while(strcmp(c,"y")==0);
break;
}
}break;
case3:
do
{
inta=0,b,d=0,num=0,m=0;
charname[20];
{
cout<<"按姓名删除"<"<cin>>name;}
for(intj=0;j
{
if(strcmp(name,s[j].name)==0)
{
cout<<"姓名:
"<
cout<<"学号:
"<
cout<<"房号:
"<