EXAM12110405022qxsb.docx

上传人:b****5 文档编号:5627030 上传时间:2022-12-29 格式:DOCX 页数:16 大小:294.82KB
下载 相关 举报
EXAM12110405022qxsb.docx_第1页
第1页 / 共16页
EXAM12110405022qxsb.docx_第2页
第2页 / 共16页
EXAM12110405022qxsb.docx_第3页
第3页 / 共16页
EXAM12110405022qxsb.docx_第4页
第4页 / 共16页
EXAM12110405022qxsb.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

EXAM12110405022qxsb.docx

《EXAM12110405022qxsb.docx》由会员分享,可在线阅读,更多相关《EXAM12110405022qxsb.docx(16页珍藏版)》请在冰豆网上搜索。

EXAM12110405022qxsb.docx

EXAM12110405022qxsb

西安交通大学实验报告

课程计算机程序设计实验名称C++第1页共页

系别电气工程学院实验日期2012年3月28日

专业班级钱学森11班组别____________实验报告日期2012年3月28日

姓名邢赛博学号2110405022报告退发(订正、重做)

同组人_________________________________教师审批签字

一.实验目的

复习一学期学过的编程知识,为期末考试做准备。

二.实验内容

(-)实验题目一:

求100~999之间所有各位数字的立方和等于1099的整数。

假定求出三个符合要求的数A、B、C,则计算(A+B+C)/3。

并按下面格式输出:

(A+B+C)/3=结果值

编程要求和评分标准:

(20分)

(1)能正确取出百位、个位数字;(5分)

(2)能正确取出十位数字;(5分)

(3)循环结构,分支结构正确;(5分)

(4)输出格式正确。

(5分)

1、程序源代码

#include

usingnamespacestd;

voidmain()

{

cout<<"(";

inta,b,c,n(0),s(0);

for(inti=100;i<=999;i++)

{

a=i%10;

b=i/10%10;

c=i/100%10;

if(a*a*a+b*b*b+c*c*c==1099)

{

cout<

s=s+i;

n++;

}

}

cout<<'\b'<<")/"<

}

2、实验结果

(二)实验题目二:

定义5×5二维数组,找出第m行中元素的最大值,并输出最大值元素以及所在的列号。

找出第n列中元素的最小值,并输出最小值元素以及所在的行号。

(m和n均在1~5之间)

编程要求和评分标准:

(20分)

(1)数组定义及产生正确(5分)

(2)求最大值及列号功能正确(5分)

(3)求最小值及行号功能正确(5分)

(4)输出格式正确,格式如下:

(5分)

5×5数组为:

4587323454

5456767866

4678872343

1232445678

5566778899

输入m=2(即第3行),则程序输出:

第3行的最大值:

87,所在列号:

3

输入n=3(即第4列),则程序输出:

第4列的最小值:

23,所在行号:

3

1、程序源代码

#include

usingnamespacestd;

voidmain()

{

doublea[5][5];

intm,n,k,l;

cout<<"按行输入一个*5方阵的元素:

"<

for(inti=0;i<5;i++)

for(intj=0;j<5;j++)

cin>>a[i][j];

cout<<"此方阵为:

"<

for(inti=0;i<5;i++)

{

for(intj=0;j<5;j++)

cout<

cout<

}

cout<<"输入行号(1~5):

";

cin>>m;

doublet=a[m-1][0];

for(inti=1;i<5;i++)

{

if(a[m-1][i]-t>0)

{

t=a[m-1][i];

k=i;

}

}

cout<<"第"<

"<

"<

cout<<"输入列号(1~5):

";

cin>>n;

doubles=a[0][n-1];

for(inti=1;i<5;i++)

{

if(a[i][n-1]-s<0)

{

s=a[i][n-1];

l=i;

}

}

cout<<"第"<

"<

"<

}

2、实验结果:

(三)实验题目三:

编写一个函数,将某个字符串中所有非字母和数字字符均用*替代。

例如:

字符串“Iamagentlman_18!

”,形成字符串为“I*am*a*gentlman*18*”其原型为:

char*mycode(char*string);

其中参数string为字符串,返回值为指向string的指针。

并编出主函数进行验证。

编程要求和评分标准:

(20分)

(1)子函数头设计正确;(5分)

(2)子函数功能正确;(5分)

(3)主函数调用的方法正确;(5分)

(4)输出结果正确;(5分)

1、程序源代码

#include

usingnamespacestd;

char*mycode(char*string)

{

char*s;

s=string;

while(*string!

='\0')

{

if(*string<'A'||*string>'Z')

if(*string<'a'||*string>'z')

if(*string<'0'||*string>'9')

{

*string='*';

string++;

}

else

string++;

else

string++;

else

string++;

}

returns;

}

voidmain()

{

chara[100];

cout<<"输入字符串(不超过个字符):

"<

cin.get(a,100);

cout<<"形成字符串:

"<

cout<

}

2、实验结果

(四)实验题目四:

定义勾股数类triangle,实际上就是直角三角形类,应有两个构造函数(即triangle()和triangle(int,intint))、计算面积函数、勾股数输出函数(即输出a*a+b*b=c*c)、运算符+重载函数(注意:

对应边相加,仍然形成直角三角形),赋值号=重载函数。

编程要求和评分标准:

(20分)

(1)给出满足要求的完整的勾股数类的定义及其成员函数;(5分)

(2)+和=运算符重载函数编写正确;(5分)

(3)计算面积函数正确;(5分)

(4)编写主函数,测试输出正确(5分)

1、程序源代码

#include

usingnamespacestd;

classtriangle

{

intA,B,H;

public:

triangle()

{

A=0;

B=0;

H=0;

}

triangle(inta,intb,inth)

{

Settriangle(a,b,h);

}

~triangle()

{;}

voidSettriangle(intaa,intbb,intcc)

{

if(aa*aa+bb*bb==cc*cc)

{

A=aa;

B=bb;

H=cc;

}

else

cout<<"您输入的三个数不属于勾股数类!

"<

}

doublemianji(triangle&c)

{

returnc.A*c.B/2;

}

voidshowme()

{

cout<

}

triangle&operator+(triangle&c)

{

A=A+c.A;

B=B+c.B;

H=H+c.H;

return*this;

}

intoperator=(triangle&c)

{

if(A==c.A&&B==c.B&&H==c.H)

return1;

else

return0;

}

triangle&operator==(triangle&c)

{

A=c.A;

B=c.B;

H=c.H;

return*this;

}

};

voidmain()

{

cout<<"请输入一组勾股数:

"<

inta,b,c;

cin>>a>>b>>c;

cout<<"请输入另外一组勾股数:

"<

inta1,b1,c1;

cin>>a1>>b1>>c1;

trianglet1(a,b,c),t2(a1,b1,c1),t;

cout<<"第一组勾股数为:

"<

t1.showme();

cout<<"面积为:

"<

cout<<"第二组勾股数为:

"<

t2.showme();

cout<<"面积为:

"<

t==t1;

t1+t2;

cout<<"t1+t2=";

t1.showme();

cout<<"t1+t2的面积为:

"<

if(t=t2)

cout<<"两组勾股数相等!

"<

else

cout<<"两组勾股数不相等!

"<

}

2、实验结果

(五)实验题目五:

编写一个程序,可以读入一个数据文件s_data中以N×N二维数组排列的数据(N不小于3),将二维数组置逆,然后写入另一个文件t_data中。

假设s_data文件中数据如下:

45873234

54567678

46788723

12324456

则t_data文件中的数据如下:

45544612

87567832

32768744

34782356

编程要求和评分标准:

(20分)

(1)程序开始执行时提示:

“Pleaseinputfilename:

”,能正确输入文件名;(5分)

(2)文件打开和关闭正确;(5分)

(3)能正确读取文件数据;(5分)

(4)能正确产生输出文件。

(5分)

1、程序源代码

#include

#include

usingnamespacestd;

intmain()

{

constintM=20;

constintm=4;

constintn=4;

intc;

cout<<"pleaseinputfilename:

"<

chara[M];

cin.get(a,M);

ifstreaminfile;

infile.open("s_data.txt");

if(!

infile)

{

cout<<"Cannotopenfile!

"<

return1;

}

ofstreamfile("t_date.txt");

if(!

file)

{

cout<<"Cannotopenfile!

"<

return1;

}

intb[m][n];

inti=0,j=0;

while(infile)

{

infile>>c;

if(c!

='\n')

{

b[i][j]=c;

j++;

}

else

{

i++;

j=0;

}

}

for(inti=0;i

{

for(intj=0;j

{

file<

}

file<

}

infile.close();

file.close();

return0;

}

2、实验结果

三.个人小结

这次实验内容是这学期期末考试前第一次模拟测验。

这次实验的主要目的是熟悉一下考试中常考的点,并对这学期学的内容做一个复习。

我发现本次模拟试题比我们平时做的题的要简单,从程序的长度上就可以看出来。

平时的实验题目,有时候一道题可以达到两三百行。

这次模拟测试的第一题的主要考点是if语句的运用和一个整数各位数字的提取,比较简单。

第二题是关于数组的,控制结构部分主要是一个判断大小,也不难。

第三题是主要考指针,这道题考得也不难。

第四题是类的题,主要是重载的时候出了点小问题,其他也没难点。

第五题的文件处理结果正确,但有DebugError。

本来想问老师,后来老师不在。

希望老师给我检查一下,能把DebugError去除。

这次看的是刘建超的实验报告。

他的第一题没有将除的结果进行强制类型转换,测试时也不全。

测试部分程序也有待改进。

第二题,我用了动态存储分配,感觉比他的好。

第三题的信息比较详尽。

第四题的测试,我感觉还得加一个测试读入任意文件。

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

当前位置:首页 > 工程科技 > 能源化工

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

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