C++习题综合实验2.docx

上传人:b****7 文档编号:10851864 上传时间:2023-02-23 格式:DOCX 页数:22 大小:267.28KB
下载 相关 举报
C++习题综合实验2.docx_第1页
第1页 / 共22页
C++习题综合实验2.docx_第2页
第2页 / 共22页
C++习题综合实验2.docx_第3页
第3页 / 共22页
C++习题综合实验2.docx_第4页
第4页 / 共22页
C++习题综合实验2.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

C++习题综合实验2.docx

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

C++习题综合实验2.docx

C++习题综合实验2

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

实验序号:

         实验项目名称:

学  号

姓  名

专业、班

实验地点

宿舍

指导教师

时间

一、实验目的及要求

1.熟悉C++集成开发环境VisualC++6.0。

(参考课本第21章)

2.掌握C++程序的开发过程和程序的结构。

3.掌握C++程序调试的基本方法。

4.掌握基本数据类型表示及表达式的表示方法。

5.掌握I/O流控制及基本的格式控制。

6.理解并掌握程序的分支结构,了解条件与程序流程的关系,及用不同的数据使程序的流程覆盖不同的语句、分支和路径。

7.理解并掌握程序的循环结构,掌握在程序设计条件型循环结构时,如何正确地设定循环条件,以及如何控制循环的次数。

8.了解提高程序可读性。

(参考课本第23章)

9.学习面向过程程序设计方法。

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

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];

......

}

(1)错误,数组的下标必须为常量

 

(2)

正确

(3)

正确

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

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

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

#include

voidmain()

{intn;

inta[10];

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

{cin>>a[i];}

cout<<"请输入一个比赛编号"<

cin>>n;

if(n!

=0)

cout<<"比赛编号为"<

elsecout<

}

 

 

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

#include

voidmain()

{intsum=0,count=0;

doublet;

inta[10];

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

{cin>>a[i];

sum=sum+a[i];}

t=sum/10;

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

{if(a[j]

elsecontinue;

}

cout<<"成绩低于全班平均分同学的人数为"<

}

 

/*文件名:

s4.exe

功能:

将数组反存

作者:

**

完成时间:

2011.11.05

*/

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

#include

#include

voidmain()

{

inta[10];

inttemp;

cout<<"输入一个数组"<

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

{cin>>a[i];

}

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

{

temp=a[j];

a[j]=a[9-j];

a[9-j]=temp;

}

cout<<"该数组反向输出为"<

for(intt=0;t<10;t++)

{cout<

(2)<

}

/*文件名:

s5.exe

功能:

插入数据

作者:

**

完成时间:

2011.11.05

*/

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

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

#include

#include

constn=6;

voidmain()

{

inti,m,t,a;

intp[20];

for(i=0;i

cin>>p[i];

cout<<"插入前的数组有效元素序列为"<

for(i=0;i

cout<

cout<

cout<<"请输入一个新的元素值a和一个整数m"<

cin>>a;

cin>>m;

if(m>n-1)

cout<<"位置不正确"<

else

{t=p[m];

p[m]=a;

for(i=n;i>m+1;i--)

{p[i]=p[i-1];}

p[m+1]=t;

cout<<"插入后的数组有效元素序列为"<

for(i=0;i

cout<

}

 

/*文件名:

s6.exe

功能:

排序

作者:

**

完成时间:

2011.11.05

*/

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

#include

voidmain()

{

inta[15],i,j,t,swap;

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

cin>>a[i];

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

{swap=1;

for(j=0;j<14-i;j++)

{if(a[j]>a[j+1])

{swap=0;

t=a[j];

a[j]=a[j+1];

a[j+1]=t;

}

}

cout<<"这是第"<

";

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

{cout<

cout<

if(swap)break;

}

}

 

/*文件名:

s7.exe

功能:

按要求输出矩阵

作者:

**

完成时间:

2011.11.05

*/

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

#include

#include

constintn=6;

voidmain()

{inta[n][n];

inti,j;

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

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

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

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

{for(j=0;j<6;j++)

cout<

cout<

}

 

/*文件名:

s8.exe

功能:

矩阵加法

作者:

**

完成时间:

2011.11.05

*/

8、编程求矩阵的加法

+

#include

#include

constintp=3,q=3;

voidmain()

{inti,j,k,t;

inta[p][q];

intb[p][q];

intc[p][q];

cout<<"请输入数组a"<

for(i=0;i

{for(j=0;j

{cin>>a[i][j];}}

cout<<"请输入数组b"<

for(i=0;i

{for(j=0;j

{cin>>b[i][j];}}

for(i=0;i

{for(j=0;j

{c[i][j]=a[i][j]+b[i][j];}}

cout<<"a[3][3]+b[3][3]="<

for(k=0;k

{for(t=0;t

{cout<

cout<

}

 

/*文件名:

s9.exe

功能:

输出比赛信息

作者:

**

完成时间:

2011.11.05

*/

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

#include

#include

#include

constcount=6;

voidmax(int*p,int*q,intx)//寻找最高分

{inti;

for(i=1;i

{if(*(p+i)>*p)

*q=i;

elsecontinue;}

}

voidmin(int*p,int*q,intx)//寻找最低分

{inti;

for(i=1;i

{if(*(p+i)<*p)

*q=i;

elsecontinue;}

}

voidmain()//主函数

{inti,n=0,m=0;

charname[count][10]={{"jane"},{"lily"},{"mike"},{"leo"},{"jay"},{"mary"}};

intscore[count]={8,2,9,4,5,0};

//输出最高分并删除数据

max(score,&m,count-1);

cout<

for(i=m;i

{strcpy(name[i],name[i+1]);

score[i]=score[i+1];}

name[i][0]='/0';

score[i]='/0';

//输出最低分并删除数据

min(score,&n,count-1);

cout<

for(i=n;i

{strcpy(name[i],name[i+1]);

score[i]=score[i+1];}

name[i][0]='/0';

score[i]='/0';

//输出剩余成绩及最后平均得分

floattotal=0,ave=0;

for(i=0;i

{cout<

total=total+score[i];}

ave=total/(count-2);

cout<<"最后平均得分为"<

}

 

/*文件名:

s10.exe

功能:

按要求输出字符串

作者:

**

完成时间:

2011.11.05

*/

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

(不要使用strcat()函数。

#include

#include

voidmain()

{inti,j;

chara[20]={"123abc"};

charb[20]={"love2011"};

cout<<"字符串a为"<

cout<<"字符串b为"<

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

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

{for(j=i+1;j<20;j++)

a[j-1]=a[j];

i=-1;}

elsecontinue;

}

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

{if(b[i]>='0'&&b[i]<='9')

{for(j=i+1;j<20;j++)

b[j-1]=b[j];

i=0;

}

elsecontinue;}

intl1,l2,L,k=0;

l1=strlen(a);

l2=strlen(b);

L=l1+l2;

for(i=l1;i

{if(k

{a[i]=b[k];

k++;}

elsebreak;

}

cout<<"新字符串为"<

}

 

/*文件名:

s11.exe

功能:

比较字符串

作者:

**

完成时间:

2011.11.05

*/

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

(不使用strcmp()函数)。

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

#include

#include

voidmain()

{

inti,t,k=0;

charm[10];

charn[10];

cin>>m;

cin>>n;

cout<<"字符串s1为"<

cout<<"字符串s2为"<

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

{

if(m[i]==n[i])

k++;

else

{t=m[i]-n[i];

if(t<0)

{cout<<-1<

break;}

else

{cout<<1<

break;}

}

intx=strlen(m);

inty=strlen(n);

if(x>y)

x=y;

if(k==y)

cout<<"s1=s2"<

}

}

 

 

 

/*文件名:

s12.exe

功能:

函数运算

作者:

**

完成时间:

2011.11.05

*/

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

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

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

小数点后精确到第三位。

#include

#include

voidmain()

{floatF(inta,intx);

floaty;

inta,x;

cout<<"请输入a,x的值"<

cin>>a>>x;

y=F(a,x);

cout<<"y=";

cout<

:

fixed)

<

}

floatF(inta,intx)

{

floatf;

f=13*x/5+a*a*a;

returnf;

}

 

/*文件名:

s13.exe

功能:

函数运算

作者:

**

完成时间:

2011.11.05

*/

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

#include

floatF(floatx)

{floaty;

if(x<1)

y=x;

else

if(1<=x&&x<10)

y=3*x+1;

elsey=5*x-7;

returny;

}

voidmain()

{

floatF(floatx);

floatx,y;

cout<<"请输入一个数"<

cin>>x;

y=F(x);

cout<<"y="<

}

 

/*文件名:

s14.exe

功能:

逆序输出

作者:

**

完成时间:

2011.11.05

*/

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

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

递归的方法

#include

intf(intn)

{

intf=0;

while(n)

{f=f*10+n%10;

n/=10;}

returnf;

}

voidmain()

{intf(intn);

intn;

cout<<"请输入一个正整数n"<

cin>>n;

cout<<"正整数n逆序输出为"<

}

 

递推方法

#include

voidmain()

{intn,res=0;

cout<<"请输入一个正整数n"<

cin>>n;

while(n!

=0)

{res=res*10+n%10;

n/=10;}

cout<<"正整数n逆序输出为"<

}

 

四、实验结果与数据处理

五、分析与讨论

六、教师评语

签名:

日期:

成绩

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

当前位置:首页 > 高等教育 > 工学

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

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