C++实验报告.docx

上传人:b****4 文档编号:3824702 上传时间:2022-11-25 格式:DOCX 页数:30 大小:303.98KB
下载 相关 举报
C++实验报告.docx_第1页
第1页 / 共30页
C++实验报告.docx_第2页
第2页 / 共30页
C++实验报告.docx_第3页
第3页 / 共30页
C++实验报告.docx_第4页
第4页 / 共30页
C++实验报告.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

C++实验报告.docx

《C++实验报告.docx》由会员分享,可在线阅读,更多相关《C++实验报告.docx(30页珍藏版)》请在冰豆网上搜索。

C++实验报告.docx

C++实验报告

《程序设计语言》实验报告

实验序号:

实验项目名称:

数组与函数

学  号

姓  名

专业、班

实验地点

指导教师

时间

一、实验目的及要求

1.掌握一维数组的定义、初始化和访问方法;

2.掌握二维数组的定义、初始化和访问方法;

3.掌握字符数组和字符串的使用方法;

4.掌握常用的字符串处理函数;

5.掌握使用数组解决常见问题。

6.掌握函数的定义和调用方法。

7.掌握函数实参与形参的对应关系。

8.掌握递归函数编写的规律。

二、实验设备(环境)及要求

1.软件需求:

VisualC++6.0

2.硬件需求:

PentiumIII450以上的CPU处理器,64MB以上的内存,200MB的自由硬盘空间

三、实验内容与步骤

1、编写C++程序,测试下列数组的定义方式是否正确。

(1)voidmain()

{

intn;

cin>>n;

inta[n];

......

}

(2)#defineM10

voidmain()

{

inta[M+2];

......

}

(3)voidmain()

{

inta[2+2*4];

......

}

2、已知10名选手的比赛编号分别为1-10,从键盘分别输入他们的比赛成绩。

设计一个循环,根据用户输入的比赛编号,输出对应选手的成绩。

当用户输入0时循环结束,同时整个程序结束。

3、假设一维数组x中存放了某班学生的成绩(至少10个成绩),编程输出成绩低于全班平均分同学的人数。

4、将一个给定的一维数组反过来存放,要求仍然存放在原数组中,且不借助其它数组。

5、在一个长度为20的一维数组中存放n个有效元素(n<20,n及元素值均从键盘输入),再通过键盘输入一个新的元素值a和整数m,判断m的值是否超过数组元素下标的取值范围,若超出范围,则输出“位置不正确!

”,否则将元素a插入到数组下标为m的位置,原下标为m至n-1的元素依次后移,要求输出插入前和插入后的数组有效元素序列。

6、将一个15个元素的无序序列,按非减顺序排序后输出。

7、用二维数组定义一个n*n的矩阵,矩阵的元素为该元素所在行号*n后加上列号(行号、列号均从0开始),输出该二维数组各元素并总结规律。

8、编程求矩阵的加法

+

9、定义一个二维数组来存放6个评委的姓名和评分,输出成绩最高的评委姓名和评分,以及成绩最低的评委姓名和评分,在原数组中将这两个评委的信息删除,输出剩余评委的姓名和评分,及最后的平均评分。

10、编写一程序,从键盘输入两个长度均不超过20的字符串,将两个字符串连接起来形成一个新的字符串,并将该新字符串中的数字字符删除。

(不要使用strcat()函数。

11、编写一字符串比较程序,从键盘输入两个长度不超过10的字符串s1和s2,然后比较它们的大小(字符串比较是从左到右逐位比较),若s1>s2,输出1;若s1=s2,输出0;若s1

(不使用strcmp()函数)。

最后将你的程序结果与直接调用strcmp()函数得到的结果相比较,看是否相同。

12、实型变量Y与整形变量a和x的关系如式所示。

编写函数程序,要求输入变量a和x,输出相应的Y。

在主函数中演示函数调用过程。

小数点后精确到第三位。

13、实型变量x与y的函数关系如式,编写函数实现,并在主函数中演示函数调用过程。

14、分别编写迭代函数和递归函数实现功能:

逆序输出正整数的各个位,并在主函数中同时调用迭代函数和递归函数,比较结果是否相同。

四、实验结果与数据处理

1、编写C++程序,测试下列数组的定义方式是否正确。

(1)voidmain()

{

intn;

cin>>n;

inta[n];

......

}

(2)#defineM10

voidmain()

{

inta[M+2];

......

}

(3)voidmain()

{

inta[2+2*4];

......

}

#include

voidmain()

{

intn,b;

cin>>n;

inta[n];

cout<<"pleaseinputn"<

for(b=0;b

cin<

cout<

}

(1)程序定义错误,无法执行。

 

#include

#defineM10

voidmain()

{

intb;

inta[M+2];

for(b=0;b

{cout<<"pleaseinputn"<

cin>>a[b];}

cout<

}

 

#include

voidmain()

{

intb;

inta[2+2*4];

for(b=0;b<10;b++)

{cout<<"pleaseinputn"<

cin>>a[b];}

cout<

}

 

2、已知10名选手的比赛编号分别为1-10,从键盘分别输入他们的比赛成绩。

设计一个循环,根据用户输入的比赛编号,输出对应选手的成绩。

当用户输入0时循环结束,同时整个程序结束。

#include

voidmain()

{

inta[10];

intb,c;

for(b=0;b<10;b++)

{c=b+1;

cout<<"请输入第"<

\n";

cin>>a[b];

}

for(;b!

=0;)

{

cout<<"请输入选手的编号:

\n";

cin>>b;

c=b-1;

if(b==0)

break;

cout<

}

}

 

3、假设一维数组x中存放了某班学生的成绩(至少10个成绩),编程输出成绩低于全班平均分同学的人数。

#include

voidmain()

{

inta[10];

intb,c;

doubled=0;

for(b=0;b<10;b++)

{c=b+1;

cout<<"请输入第"<

\n";

cin>>a[b];

d+=a[b];

}

d=d/10;

for(b=0,c=0;b<=9;b++)

if(a[b]

c++;

cout<<"低于平均分的人数为"<

}

 

4、将一个给定的一维数组反过来存放,要求仍然存放在原数组中,且不借助其它数组。

 

#include

voidmain()

{

intd[20];

inta,b,c;

for(a=0;a<20;a++)

{b=a+1;

cout<<"请输入数组的第"

<

d["

<

cin>>d[a];

}

for(a=0;a<=9;a++)

{c=d[a];

d[a]=d[19-a];

d[19-a]=c;

}

for(a=0;a<20;a++)

cout<<"d["<

<

}

 

5、在一个长度为20的一维数组中存放n个有效元素(n<20,n及元素值均从键盘输入),再通过键盘输入一个新的元素值a和整数m,判断m的值是否超过数组元素下标的取值范围,若超出范围,则输出“位置不正确!

”,否则将元素a插入到数组下标为m的位置,原下标为m至n-1的元素依次后移,要求输出插入前和插入后的数组有效元素序列。

#include

voidmain()

{

intd[20],e[20];

inta,b,n,m,h,k;

cout<<"请输入n:

\n";

cin>>n;

for(a=0;a

{b=a+1;

cout<<"请输入数组的第"

<

d["

<

cin>>d[a];

e[a]=d[a];

}

cout<<"请输入a和m:

\n";

cin>>b>>m;

if(m>n)

cout<<"位置不正确!

\n";

else

{for(a=18;a>=m;a--)

d[a+1]=d[a];

d[m]=b;

for(a=0;a

{cout<<"e["<

<

}

for(a=0;a

{cout<<"d["<

<

}

}

}

 

 

6、将一个15个元素的无序序列,按非减顺序排序后输出。

#include

voidmain()

{

inta[15],b,c,d,e;

for(b=0;b<15;b++)

{cout<<"请输入第"<

\n";

cin>>a[b];

}

for(b=0;b<=13;b++)

{

e=1;

for(c=0;c<=14-b;c++)

if(a[c]>a[c+1])

{

e=0;

d=a[c];

a[c]=a[c+1];

a[c+1]=d;

}

}

for(b=14;b>=0;b--)

cout<

}

 

 

7、用二维数组定义一个n*n的矩阵,矩阵的元素为该元素所在行号*n后加上列号(行号、列号均从0开始),输出该二维数组各元素并总结规律。

 

#include

constintn=10;

voidmain()

{

inta[n][n],i,j;

for(i=0;i

for(j=0;j

a[i][j]=n*i+j;

for(i=0;i

for(j=0;j

cout<<"a["<

}

 

 

8、编程求矩阵的加法

+

#include

voidmain()

{

intA[3][3]={5,7,8,2,-2,4,1,1,1},B[3][3]={4,-2,3,3,9,4,8,-1,2},C[3][3],i,j;

for(i=0;i<3;i++)

{

for(j=0;j<3;j++)

{

C[i][j]=A[i][j]+B[i][j];

cout<

}

cout<

}

}

9、定义一个二维数组来存放6个评委的姓名和评分,输出成绩最高的评委姓名和评分,以及成绩最低的评委姓名和评分,在原数组中将这两个评委的信息删除,输出剩余评委的姓名和评分,及最后的平均评分。

#include

#include

#include

voidmain()

{

chara[6][20];

floatf[6];

intb,c;

chare[20];

floatd;

for(b=0;b<6;b++)

{

cout<<"请输入第"<

"<

gets(a[b]);

cout<<"请输入分数"<

cin>>f[b];

}

for(b=0;b<6;b++)

for(c=0;c<6-b;c++)

if(f[c]>f[c+1])

{

d=f[c+1];

f[c+1]=f[c];

f[c]=d;

strcpy(e,a[c+1]);

strcpy(a[c+1],a[c]);

strcpy(a[c],e);

}

cout<<"去掉一个最高分:

"<

cout<

cout<

cout<<"去掉一个最低分:

"<

cout<

cout<

for(c=1;c<6;c++)

{

strcpy(a[c-1],a[c]);

f[c-1]=f[c];

}

for(c=4;c>=0;c--)

{

strcpy(a[c],a[c-1]);

f[c]=f[c-1];

}

for(c=1;c<5;c++)

{

strcpy(a[c-1],a[c]);

f[c-1]=f[c];

}

d=0;

for(b=0;b<4;b++)

d+=f[b];

d=d/4;

cout<<"余下的评委及分数为:

"<

for(b=0;b<4;b++)

{

cout<

cout<

}

cout<<"平均分为:

"<

cout<

}

 

10、编写一程序,从键盘输入两个长度均不超过20的字符串,将两个字符串连接起来形成一个新的字符串,并将该新字符串中的数字字符删除。

(不要使用strcat()函数。

#include

#include

#include

voidmain()

{

chara[40],b[20];

intc,d,e,f,g;

cout<<"请输入数组a的字符串且保证长度不超过20"<

gets(a);

cout<<"请输入数组b的字符串且保证长度不超过20"<

gets(b);

c=strlen(a);

d=strlen(b);

for(e=c;e<=d+c;e++)

a[e]=b[e-c];

d=strlen(a);

for(f=0;f

{

g=0;

for(e=0;e

if(a[e]>='0'&&a[e]<='9')

{

g=1;

for(c=e;c

a[c]=a[c+1];

if(g==0)

break;

}

}

cout<

}

 

11、编写一字符串比较程序,从键盘输入两个长度不超过10的字符串s1和s2,然后比较它们的大小(字符串比较是从左到右逐位比较),若s1>s2,输出1;若s1=s2,输出0;若s1

(不使用strcmp()函数)。

最后将你的程序结果与直接调用strcmp()函数得到的结果相比较,看是否相同。

#include

#include

#include

voidmain()

{

chars1[10],s2[10];

intc,d,e,f;

cout<<"请输入数组s1的字符串且保证长度不超过10"<

gets(s1);

cout<<"请输入数组s2的字符串且保证长度不超过10"<

gets(s2);

c=strlen(s1);

d=strlen(s2);

if(c

c=d;

f=0;

for(e=0;e

{

if(s1[e]>s2[e])

{

f=1;

cout<<"1"<

break;

}

else

if(s1[e]

{

f=1;

cout<<"-1"<

break;

}

}

if(f==0)

cout<<"0"<

cout<

}

 

 

12、实型变量Y与整形变量a和x的关系如式所示。

编写函数程序,要求输入变量a和x,输出相应的Y。

在主函数中演示函数调用过程。

小数点后精确到第三位。

#include

#include

doubles(doubley,intx,inta);

doublemain()

{

intX,A;

doubleY;

cout<<"pleaseinputXandA."<

cout<<"X=";

cin>>X;

cout<<"A=";

cin>>A;

cout<

:

fixed);

cout<<"计算后结果为:

"<

}

doubles(doubley,intx,inta)

{

y=13*x/5.0+a*a*a;

returny;

}

13、实型变量x与y的函数关系如式,编写函数实现,并在主函数中演示函数调用过程。

#include

floatmain()

{

floaths(floatx);

floatx;

cout<<"Pleaseinputx:

"<

cin>>x;

cout<

return0;

}

floaths(floatx)

{

floaty;

if(x<1)

y=x;

else

if(x<10)

y=3*x+1;

else

y=5*x-7;

returny;

}

14、分别编写迭代函数和递归函数实现功能:

逆序输出正整数的各个位,并在主函数中同时调用迭代函数和递归函数,比较结果是否相同。

#include

#include

voiddd(intn)

{

inta,b;

do

{

a=n;

n/=10;

b=a%10;

cout<

}

while(n!

=0);

cout<

}

intdg(intn)

{

intb,c,d,e,f;

b=n/10;

f=n;

e=0;

do

{

f/=10;

e++;

}

while(f!

=0);

f=e;

if(n==0)

c=0;

else

{

d=n-10*b;

e=pow(10,f-1);

c=e*d+dg(n/10);

}

returnc;

}

intmain()

{

intk;

cout<<"请输入n:

"<

cin>>k;

dd(k);

cout<

return0;

}

 

五、分析与讨论

 

通过这次试验,我对数组的定义及运用有了一个更深刻地了解,同时也学会了如何运用数组处理一些编程问题。

 

六、教师评语

(1)正确。

只是程序中出现的“n”意义不是很明确。

(2)正确

(3)正确。

(4)正确。

(5)正确

(6)正确。

(7)正确

(8)正确。

(9)正确。

(10)正确。

(11)正确。

(12)正确

(13)正确。

(14)正确。

无抄袭行为;

按时完成实验;

实验结果基本正确;

实验报告撰写认真、

格式符合要求;

实验内容和过程记录完整,

结构较清晰;

建议该生多进行练习。

 

签名:

叶焕倬

日期:

2011年11月20日

成绩

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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