程序设计综合实验报告册Word格式文档下载.docx

上传人:b****5 文档编号:18782995 上传时间:2023-01-01 格式:DOCX 页数:36 大小:27.44KB
下载 相关 举报
程序设计综合实验报告册Word格式文档下载.docx_第1页
第1页 / 共36页
程序设计综合实验报告册Word格式文档下载.docx_第2页
第2页 / 共36页
程序设计综合实验报告册Word格式文档下载.docx_第3页
第3页 / 共36页
程序设计综合实验报告册Word格式文档下载.docx_第4页
第4页 / 共36页
程序设计综合实验报告册Word格式文档下载.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

程序设计综合实验报告册Word格式文档下载.docx

《程序设计综合实验报告册Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《程序设计综合实验报告册Word格式文档下载.docx(36页珍藏版)》请在冰豆网上搜索。

程序设计综合实验报告册Word格式文档下载.docx

//中文的查询函数

voidQuery1()

printf("

======================\n"

printf(“此账户有%.2f元\n"

sum);

//对sum已初始化

pause"

//中文的存钱函数

voidDeposit1(float*p)

floatx;

================================\n"

输入您要存的数目:

"

scanf("

%f"

&

x);

*p+=x;

}

//中文的取钱函数

voidWithDraw1(float*p)

floaty;

inta=1;

====================================\n"

输入您要取的数目:

while(a)

scanf("

y);

if(y>

sum)

{printf("

\n余额不足,按任意键后重新输入\n"

else

{*p-=y;

a=0;

}

实验二:

进制转换器

写一个进制转换器,实现十进制、二进制、十六进制的相互转换

1、转换要求包括整数和小数;

2、提供清晰、有好的用户界面;

3、各种转换可以反复多次执行,直到用户选择”退出“按钮。

voidmain(){...}

voidMainmenu(){...}

//二进制到十进制和十六进制

voidBtoDH()

intiExit=0;

iExit)

{system("

strings1,s2,s3,s;

inti,len;

......//输入字符串s

s=s1;

len=s1.length();

for(i=0;

i<

len;

i++)

{s3=s1.substr(0,1);

//截取从0到1的字符,包括0不包括1s1=s1.substr(1,s1.length()-1);

if(s3=="

."

{s2=s.substr(0,i);

//截取0到i的字符

break;

}

if(s2.length()==0)

{

s2=s;

s1="

"

;

intin=BtoDint(s2);

//把二进制数分离开后,调用整数部分

floatdou=BtoDdecimal(s1);

//调用二进制小数部分

dou=in+dou;

stringss1,ss2;

ss1=BtoHint(s2,1);

ss2=BtoHint(s1,0);

......//输出十进制形式和十六进制形式

//二进制整数到十进制整数

intBtoDint(strings)

inti,ss=0,len,l;

len=s.length()-1;

l=len;

for(i=0;

=len;

stringch=s.substr(0,1);

s=s.substr(1,s.length()-1);

if(ch=="

1"

ss+=pow(2,l);

l--;

else

returnss;

//二进制小数到十进制小数

floatBtoDdecimal(strings)

floatss=0.0;

inti,len,l;

l=-1;

{ss+=pow(2,i);

//pow函数返回值为计算2的i次方

//十六进制到二进制和十进制

voidHtoBD()

intiExit=0,len,i;

strings,s1,s3,s2,ss1,ss2;

cout<

<

pleaseinputthenumber"

cin>

>

s1;

s3=s1.substr(0,1);

s1=s1.substr(1,s1.length()-1);

{

s2=s.substr(0,i);

if(s2.length()==0)

ss1=HtoBint(s2,1);

ss2=HtoBint(s1,0);

intin=BtoDint(ss1);

floatdou=BtoDdecimal(ss2);

......//输出二进制形式和十进制形式

stringHtoBint(strings,intin)

strings1;

intlen;

len=s.length();

stringret="

for(inti=0;

s1=s.substr(0,1);

if(in==1)

ret=HtoBbit(s1)+ret;

ret+=HtoBbit(s1);

returnret;

//十六进制字符与二进制字符串的互相转换

stringHtoBbit(strings)

{stringret;

if(s=="

0"

)ret="

0000"

...

//二进制到十六进制

stringBtoHint(strings,intin)

intlen=s.length();

intt=len%4;

len=(4-t)%4;

while(len--)

s="

+s;

s+="

intnum=s.length()/4,i;

stringret;

num;

stringtemp=s.substr(0,4);

s=s.substr(4,s.length()-4);

ret+=BtoHbit(temp);

//BtiHbit函数使二进制字符串与十六进制字符互相转换,与上面相似,略写

//十进制到二进制和十六进制

voidDtoBH()

doublenum,n2;

intiExit=0,len,n1;

strings1,s2,s3,s4;

pleaseinputthenumberandthelengthofdecimal"

num>

n1=int(num);

n2=num-n1;

s1=DtoBdecimal(n2,len);

s2=DtoBint(n1);

s3=BtoHint(s2,1);

s4=BtoHint(s1,2);

......//输出二进制形式和十六进制形式

//十进制小数到二进制小数

stringDtoBdecimal(doublein,intlen)

doublep=in;

p*=2;

if(p>

=1)

ret+="

p-=1.0;

//十进制整数到二进制整数

stringDtoBint(intin)

{if(in==0)

return"

intq=in,remain;

while(q)

{remain=q%2;

q=q/2;

if(remain)ret="

+ret;

elseret="

实验三:

随机数生成、中奖者

生成一组均匀分布的伪随机数,根据随机数编写一个抽奖程序

1、能够根据用户的输入,控制随机数生成的数目,随机数用动态数组保存;

2、能够根据用过的输入,控制随机数的范围:

比如能够生成一组【a,b】范围内的随机数;

3、由用户输入抽奖者人数N;

4、为每一个人分配一个代号(类似于名字)和一个随机号码(即抽奖票号,加你控制在1-N之间)并将其打印出来;

5、由机器摇号:

生成一个在1-N之间的随机数作为中奖号码,查找中奖者,并公布中奖者信息(注:

可以有多人同时中奖);

6、如果没有对应的中奖者,需要将该号码公布出来,然后重新生成一个中奖号码,知道中奖者存在为止。

#include<

iostream>

time.h>

string>

usingnamespacestd;

staticunsignedholdrand=1L;

voidLottery(intn);

voidmysrand(unsignedseed);

intmyrand(void);

intllottery(intnum);

intn;

structPEOPLE{

char*name;

intnumber;

}mem[100];

{

cout<

Inputthetotalnumberofthepeople:

cin>

n;

==========================="

endl;

Informationofall:

Lottery(n);

voidLottery(intn)

inti,N,k;

intnum;

InputN:

N;

mysrand((unsigned)time(NULL));

k=myrand();

k=k%(N-1)+1;

mem[i].number=k;

endl<

i+1<

:

p"

"

hisnumberis"

mem[i].number;

num=myrand();

num=num%(N-1)+1;

while(!

llottery(num))

num=myrand();

voidmysrand(unsignedseed)

holdrand=seed;

intmyrand(void)

return(((holdrand=holdrand*201413+2531011L)>

16)&

0x7fff);

intllottery(intnum)

inti,j=0;

Theinvalidlotterynumberis:

num<

if(mem[i].number==num)

{cout<

Theinvalidis:

hisnumberis"

mem[i].number<

j++;

if(j==0)

return0;

else

return1;

实验四:

插入排序、快速排序

1、生成一组随机整数,对该组数据进行排序,采用插入排序法;

2、生成一组随机整数,对该组数据尽心排序,采用快速排序法。

1、数组长度由用户输入;

2、随机数范围在【100,10000】范围内;

3、采用插入排序法和快速排序法进行排序;

4、根据用户要求,可以实现增序、降序两种排序。

1、插入排序

intmain()

......//用户定义数组长度len

lottery(len);

voidlottery(intlen)

{inti;

charch;

//time函数返回1970年1月1日00:

00:

00起距函数调用时相聚的时间,以秒为单位,在<

的头文件中

......

if(ch=='

1'

)swap1(b,len);

//升序

elseif(ch=='

2'

)swap2(b,len);

//降序

b[i]<

voidmysrand(unsignedseed){......}

intmyrand(void)//此函数在实验三里有写

{......

h=h%(10000-100)+100;

//控制随机数范围在【100-10000】之内,

returnh;

voidswap1(int*c,intn)

inti,j,x,k=1;

c[0]=myrand();

for(j=1;

j<

j++)

x=myrand();

i=j-1;

while(i>

=0&

&

c[i]>

x)

c[i+1]=c[i];

i--;

c[i+1]=x;

2、快速排序

intA[100],n,k;

...//用户定义数组长度

intexit=0;

exit)

for(inti=0;

k=myrand();

//与产生随机数有关的函数略,实验三有写

k=k%(MAX-MIN)+MIN;

//控制随机数的范围,MIN=1,MAX=100,在开始有定义

A[i]=k;

mainmenu();

//mainmenu函数为主菜单,略写

ch=getch();

switch(ch)

case'

QuikUp(A,0,n-1);

print(A,n);

break;

case'

QuikDown(A,0,n-1);

case'

3'

exit=1;

default:

printf("

error!

\n"

//升序排序

voidQuikUp(inta[],intp,intr)

if(p>

=r)

return;

inti=p;

intj=r+1;

intx=a[p];

while

(1)

while(i<

=r&

a[++i]<

while(j>

=p&

a[--j]>

if(i>

=j)break;

Swap(&

a[i],&

a[j]);

//Swap函数为交换*p与*q的值,略写

if(i==j)

j--;

a[p]=a[j];

a[j]=x;

QuikUp(a,p,j-1);

QuikUp(a,j+1,r);

实验五:

模块计时器、常用排序算性能测试

设计一组计时函数,封装所有计时函数,采用测试性能函数对快速函数、插入函数、选择排序算法进行性能测试。

1、计时精确:

封装的高精度的计时API函数QueryPerformanceCounter(),可以达到微秒级的精度;

2、使用简单:

只用在待测试的模块前后加上两个宏BM_START和BM_END,不需要对结果进行计算,也不需要考虑对各个模块结果数据的维护;

3、多组测试:

最多可以同时实现20个模块的测试,及可以保存20组数据;

4、结果输出独立:

在系统运行结果时,只需要用一个函数就可以把计时结果保存在一个文本文件里

5、对一组数据进行排序;

6、数组长度为10000,数组应随机产生;

7、为了保证测试数据的稳定,每种排序算法运行10次,计算总的时间

intret[BENCHMARK_MAX_COUNT];

//BENCHMARK_MAX_COUNT为模块总数

InitBenchmark();

BMTimerStart

(1);

//开始计时

10;

sort_quick(a,10000);

//快速排序,实验四有写,略写

sort_chr(a,10000);

//插入排序,实验四有写,略写

sort_choice(a,10000);

//选择排序,略写

BMTimerEnd

(1);

//结束计时

WriteData(1,"

Test1"

D:

\\log.txt"

//将数据填入文件中

voidInitBenchmark()

ResetBenchmarkCounters();

//对数组gStats,gEnds,gCounter清零

GetClockFrequent();

//获得机器内部定时时钟频率

voidBMTimerStart(intiModel)

LARGE_INTEGERlitmp;

QueryPerformanceCounter(&

litmp);

//提高精度,在头文件"

windows.h"

gStarts[iModel]=litmp.QuadPart;

voidBMTimerEnd(intiModel)

gEnds[iModel]=litmp.QuadPart;

voidWriteData(intTotalCount,stringsModel,stringpath)

//openthefileandmovepointertotheendofthefile,需要头文件"

fstream"

ofstreampFile(path.data(),ios:

app|ios:

out);

//1Header

stringtitle,s2;

stringsperator="

\r\n\r\n=========================================\r\n"

title="

Model---"

+sModel;

chartemp1[100],temp2[100];

sprintf(temp1,"

\r\nIterationCounter:

5d\r\n"

TotalCount);

title+=temp1;

//2Times

strings;

doublegTotal=0;

BENCHMARK_MAX_COUNT;

i++)//将结果写进文件

if(gCounters[i]==0)

continue;

sprintf(temp1,"

Total%d"

i);

intlen=strlen(temp1)/8;

//*calculatethenumberof'

\t'

s+=temp1;

for(;

len<

2;

len++)

s+="

\t"

sprintf(temp2,"

%dms\r\n"

(int)(gCounters[i]/1000));

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 财会金融考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1