西南交大各次C上机实验报告答案(全)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2014-2015各次C++上机实验报告答案(全)
实验__1__①实验报告
一、实验目的
1.熟悉Visual studio 6.0集成开发环境;
2.学习新建和打开控制台应用程序的方法;
3.通过运行示例程序了解程序开发过程;
二、实验任务
1.新建源程序文件,编辑以下程序,编译,链接,得出运行结果,并保存程序:
#include <iostream>
using namespace std;
void main( )
{ cout<<'a'<<endl;/*输出语句*/
cout<<'\141'<<endl;
cout<<'\x61'<<endl;
}
2.新建源程序文件,编辑以下程序,编译,链接,运行,输入36和64,得出运行结果,并保存程序:
#include <iostream>
using namespace std;
int main()
{ float num1,num2,sum;
cout << "Enter first number: ";/*输出语句*/
cin >> num1; /*输入语句*/
cout << "Enter second number: ";
cin >> num2; /*输入语句*/
sum=num1+num2; /*运算语句*/
cout << "The sum is " << sum << endl; /*输出语句*/
return 0;
}
三、实验结果
1.
2.
实验一②实验报告
一、实验目的
1.熟悉C++程序的集成开发环境;
2.学习新建和打开控制台应用程序的方法;
3.掌握简单数据运算以及输入与输出方法。

二、实验任务
1.输入一个摄氏温度,输出并显示转换出的华氏温度(提示:
摄氏温度=(华氏温度—32)*5/9);
2.画出一头威武雄壮的雄狮。

三、实验结果(源程序+注释)
1.求“摄氏温度=(华氏温度—32)*5/9”的程序及其运行如下:
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{return 0;}
#include<iostream>
using namespace std;
void main()/*主函数*/
{double a,b;/*定义变量*/
cout<<"请输入摄氏温度:";
cin>>a;
b=5*a/9.0+32.0;/*计算过程*/
cout<<"华氏摄氏度:"<<b;
system("pause");}/*使运行结果一直显示*/
2.画一头威武雄壮的雄狮的程序及其运算结果如下:// 20131054 005.cpp : 定义控制台应用程序的入口点。

//
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}
#include<iostream>
using namespace std;
void main()/*主函数*/
{cout<<"20131054"<<endl;
cout<<" ,%%%%%%"<<endl;/*输入输出语句*/
cout<<" ,%%/\%%%%/\%"<<endl;
cout<<" ,%%%\c“”J/%%%"<<endl;
cout<<" %. %%%%/ o o \\%%%"<<endl;
cout<<" '%%. %%%% _ |%%"<<endl;
cout<<" '%% '%%%%(__Y__)%"<<endl;
cout<<" // ;%%%%'\-/%%%' "<<endl;
cout<<" (( / '%%%%%%%'"<<endl;
cout<<" \\ .' |"<<endl;
cout<<" \\ / \ ||"<<endl;
cout<<" \\/ )||"<<endl;
cout<<" \ /_ ||__"<<endl;
cout<<" (___________)))))))"<<endl; /*输入输出语句*/ system("pause");}/*使运行结果停顿*/
实验__2__实验报告
一、实验目的
1.掌握对一般数据的输入和输出格式控制方法;
2.掌握对实型数据输出形式的设置和小数位数的控制方法;
3.了解数据输入的相关注意事项。

二、实验任务

三、实验结果(源程序+ 注释)如下:
1. 键盘输入某台计算机的编号和该计算机的价格,并输出这些信息。

要求:编号为11位数字构成,如10987654321;价格含有小数部分,如998.0元;输出的编号只是由数字组成,不应该出现小数点等非数字符号。

源程序:
#include<iostream>
using namespace std;
void main()
{double a,b;/*定义变量*/
cout<<"20131054"<<endl;
cout<<"请输入计算机的编号:";
cin>>a;
cout<<fixed;
cout.precision(0);/*确定精度*/
cout<<"计算机的编号为:"<<a<<endl;
cout<<"请输入计算机的价格:";
cin>>b;
cout<<fixed;
cout.precision(1);/*确定精度*/
cout<<"计算机的价格为:"<<b;}
2.有一种加密方法是用原来字母的第n个字母代替原来的宁母。

例如把A用
其后第4个字母E来替代。

现在有一密文内容为wigvix,编程求出它的
原文是什么?(提示:可根据上述加密原理,使用若干字符型变量来实现)。

源程序:
#include<iostream>
using namespace std;
void main()
{char a,b,c,d,e,f;/*定义变量*/
cout<<"20131054"<<endl;
cout<<"请输入密文: ";
cin>>a>>b>>c>>d>>e>>f;/*输入密文*/
a=a-4;
b=b-4;
c=c-4;
d=d-4;
e=e-4;
f=f-4;/*解密过程*/
cout<<"原始密码为: "<<a<<b<<c<<d<<e<<f<<endl;}
3.编程实现:在计算机的提示下输入某学生的学号、英语成绩、高等数学成
绩、线性代数成绩,计算得出三门课程平均成绩,并按如下格式输出显示。

成绩单
学号20100002
****************************************
科目成绩
-----------------------------------------------------------------
英语85
高等数学90
线性代数88.5
****************************************
平均成绩87.8
源程序:
#include<iostream>
#include"iomanip"
using namespace std;
int main()
{float a,score1,score2,score3,average;
cout<<"20131054"<<endl;
cout<<"请输入三门课程的考试成绩:"<<endl;
cin>>score1>>score2>>score3;
average=(score1+score2+score3)/3;/*计算平均分*/
cout<<"成绩单"<<endl;
cout<<"学号";
cin>>setw(6)>>a;
cout<<"***************************"<<endl;
cout<<"科目"<<setw(16)<<"成绩"<<endl;/*行对齐*/
cout<<"-------------------------------"<<endl;
cout<<"英语"<<setw(15)<<score1<<endl;/*行对齐*/
cout<<"高等数学"<<setw(11)<<score2<<endl;/*行对齐*/ cout<<"线性代数"<<setw(12)<<score3<<endl;/*行对齐*/ cout<<"***************************"<<endl;
cout<<fixed;
cout.precision(1);/*确定精度*/
cout<<"平均成绩:"<<setw(11)<<average<<endl;/*行对齐*/ }
实验__3__实验报告
一、实验目的
1. 掌握“处理某一或某些操作只有在特定条件成立的情况下才会被执行”的编程思路和方法;
2. 掌握简单分支程序设计,以及if 和if-else 语句的使用方法。

二、实验任务
1. 已知一函数⎪⎩
⎪⎨⎧>=-<<=-<=)10(113)101(12)1(x x x x x x y ,输入x 的值,求解并输出相应的y 值。

2. 求一元二次方程ax2+bx+c=0的根,其中a 、b 、c 为实数,由键盘输入。

三、实验结果(源程序 + 注释) 1.源代码及运行结果:
#include<iostream>
using namespace std;
void main()
{double x,y;//定义变量
cout<<"20131054"<<endl;
while(1)//不断进行运算
{cout<<"请输入x 的值:";
cin>>x;
if(x<1)
y=x;//x<10
else
if(x<10)
y=2*x-1;//1≤x<10
else
y=3*x-11;//x ≥10
cout<<"y 的值为:"<<y<<endl;}}
2.源代码及运行结果:
#include<iostream>
#include"math.h"
using namespace std;
void main( )
{float a,b,c,t,del,tw,term1,term2;
cout<<"20131054"<<endl;
cout<<"请输入a、b、c的值:"<<endl;
cin>>a>>b>>c;
if(a==0)
if(b==0)
cout<< "该方程无根!"<<endl;//此时没有二次项
else
cout<<"该一元二次方程的单根为:"<<endl<<-c/b<<endl;//有单根
else
{del=b*b-4*a*c;//求del
tw=2*a; //代表被除数
t=abs(del);//取del的绝对值
term1=-b/tw;//根的前半部分
term2=sqrt(t)/tw;//根的后半部分
if(del<0)//del为负,有复数根
cout<<"该一元二次方程的复数根(两个)的实部和虚部分别为:"<< term1<<","<<term2<<endl;
else
cout<<"该一元二次方程的两个实数根分别为:"<<term1+term2<<","<<term1-term2<<endl;}
}
实验__4__实验报告
一、实验目的
1.掌握多路分支结构的程序设计,以及switch语句的使用方法;
2.学习通过程序调试来跟踪程序运行过程,查看程序运行过程中各个变量的取值变化情况。

二、实验任务
1.模拟二人猜拳游戏:剪刀石头布。

要求:(1)给出选项菜单如下
**********新一局************
1.出剪子
2.出石头
3.出布
*******************************
请输入选择的数字:
根据两个用户输入给出猜拳“战况”。

2.键盘输入一个数,判定:能不能被3、5和7整除,并如果失败输出失败的具体原因。

3. 输入某年某月某日,判断这一天是这一年的第几天。

三、实验结果(源程序+ 注释)
1.源程序:
#include<iostream>
using namespace std;
void main()
{int a,b;/*定义甲乙出拳情况*/
cout<<"20131054"<<endl;
while(1)/*使游戏可以循环进行*/
{cout<<"**********新一局************"<<endl;
cout<<"1.出剪子"<<endl<<"2.出石头"<<endl<<"3.出布"<<endl;
cout<<"****************************"<<endl;
cout<<"请甲出拳:"<<endl;
cin>>a;
switch(a)
{case 0:
cout<<"游戏已经结束!"<<endl;/*考虑游戏结束的情况*/
break;
case 1:
{cout<<"请乙出拳:"<<endl;
cin>>b;
for(;b!=1&&b!=2&&b!=3;)
{cout<<"乙出拳无效!"<<endl;
cout<<"请乙再次出拳:"<<endl;
cin>>b;}
if(b==1)
cout<<"甲乙出拳相同,游戏重新开始!"<<endl;
else if(b==2)
cout<<"乙赢了!"<<endl;
else if(b==3)
cout<<"甲赢了!"<<endl;};break;/*在甲输入一定的情况下,根据乙的输入情况得出游戏结果*/
case 2:
{cout<<"请乙出拳:"<<endl;
cin>>b;
for(;b!=1&&b!=2&&b!=3;)
{cout<<"乙出拳无效!"<<endl;
cout<<"请乙再次出拳:"<<endl;
cin>>b;}
if(b==1)
cout<<"甲赢了!"<<endl;
else if(b==2)
cout<<"甲乙出拳相同,游戏重新开始!"<<endl;
else if(b==3)
cout<<"乙赢了!"<<endl;};break;/*在甲输入一定的情况下,根据乙的输入情况得出游戏结果*/
case 3:
{cout<<"请乙出拳:"<<endl;
cin>>b;
for(;b!=1&&b!=2&&b!=3;)
{cout<<"乙出拳无效!"<<endl;
cout<<"请乙再次出拳:"<<endl;
cin>>b;}
if(b==1)
cout<<"乙赢了!"<<endl;
else if(b==2)
cout<<"甲赢了!"<<endl;
else if(b==3)
cout<<"甲乙出拳相同,游戏重新开始!"<<endl;};break;/*在甲输入一定的情况下,根据乙的输入情况得出游戏结果*/
default:
cout<<"甲出拳无效,请甲再次出拳!"<<endl;/*考虑甲输入不规范的情况*/}}}
2.源程序:
#include<iostream> using namespace std; void main()
{int a;
cout<<"20131054"<<endl;
while(1)/*使程序一直运行,更易于显示*/
{cout<<"请输入一个整数:"<<endl;
cin>>a;
if (a % 3 == 0)/*此时a能被3整除*/
{
if(a % 5 == 0 || a % 7 == 0)/*a能被5或7整除*/
{
if (a % 5 == 0 && a % 7 == 0)/*a能被5和7整除*/
cout<<"a能被3,5,7整除!"<<endl;
else if (a % 5 == 0)/*a能被5整除*/
cout<<"a能被3,5整除,但不能被7整除!"<<endl;
else
cout<<"a能被3,7整除,但不能被5整除!"<<endl;
}
else
cout<<"a能被3整除,但不能被5和7整除!"<<endl;
}
else
if (a % 5 == 0 || a % 7 == 0)/*a能被5或7整除*/
{if (a % 5 == 0 && a % 7 == 0)/*a能被5和7整除*/
cout<<"a能被5,7整除,但不能被3整除!"<<endl;
else if (a % 5 == 0)/*a能被5整除*/
cout<<"a能被5整除,但不能被3和7整除!"<<endl;
else
cout<<"a能被7整除,但不能被3和5整除!"<<endl;
}
else
cout<<"a不能被3,5,7整除!"<<endl;}
}
3.源程序:
#include<iostream>
using namespace std;
void main()
{int day,month,year,sum,leap;
cout<<"20131054"<<endl;
cout<<"请输入某年某月某日:"<<endl;
cin>>year>>month>>day;
switch(month) /*先计算某月以前月份的总天数*/ {case 1:sum=0;break;
case 2:sum=31;break;
case 3:sum=59;break;
case 4:sum=90;break;
case 5:sum=120;break;
case 6:sum=151;break;
case 7:sum=181;break;
case 8:sum=212;break;
case 9:sum=243;break;
case 10:sum=273;break;
case 11:sum=304;break;
case 12:sum=334;break;
default:cout<<"输入数据错误!"<<endl;break; }
sum=sum+day; /*再加上某天的天数*/
if(year%400==0||(year%4==0&&year%100!=0)) /*判断year年是不是闰年*/ leap=1;
else
leap=0;
if(leap==1&&month>2) /*如果是闰年且月份大于等于2,总天数应该加一天*/ sum++;
cout<<"这是"<<year<<"年的第"<<sum<<"天!"<<endl;}
实验__5__实验报告
一、实验目的
1.理解“处理某一或某些操作需要被有条件地重复执行”的编程思路和方法;
2.掌握循环结构的程序设计,以及while、do-while和for循环语句的使用方法。

二、实验任务
1.一只猴子摘了N个桃子第一天吃了一半又多吃了一个,第二天又吃了余下的一半又多吃了一个,到第十天的时候发现还有一个,求N的值。

2.将一个正整数分解质因数。

例如:输入90,打印出90=2*3*3*5。

3. 编程实现十进制整数和八进制整数之间的转换(即将10进制数转换为8进制数,或将8进制数转换为10进制数)。

(提示:在程序中计算x y,可采用教材p233的pow(x,y),以及文件包含命令#include <cmath>)
三、实验结果(源程序+ 注释)
1.源程序:
#include<iostream>
using namespace std;
void main()
{int total = 1, i = 10,day = 10;/*赋初值*/
cout<<"20131054"<<endl;
for(i = 10;i > 0;i--)
{cout<<"第"<<day<<"天有"<<total<<"颗桃子!"<<endl;
total = (total + 1) * 2;/*通项公式*/
day--;}}
2.源程序:
#include<iostream>
using namespace std;
void main()
{ int num,i;
cout<<"20131054"<<endl;
while(1)
{cout<<"请输入一个要分解质因数的正整数:"<<endl;
cin>>num;
cout<<num<<"=";
i=2;
while(num!=i)/*如果倒数两个质因数相同,能保证最后一个输出因数不为"1"*/ {if(num%i==0)/*因式分解:从2到num检查,看看是不是所求质因数*/ {cout<<i<<"*";
num/=i;}
else
i++;}
cout<<num<<endl;}}
3.源程序:
①十进制转换为八进制
#include <iostream>
#include <cmath>
using namespace std;
void main( )
{cout<<"20131054"<<endl;
while(1)/*保证可以进行多次运算*/
{int m=0,x=0,n=1;/*每次都要赋初值,防止上一个m对下一个运算起干扰作用*/ cout<<"请输入一个十进制整数:"<<endl;
cin>>x;
while(x>0)
{m+=x%8*n;/*将所要求的八进制整数显示出来*/
x=x/8;/*将十进制整数除8取余*/
n=n*10;}
cout<<"则对应的八进制整数为:"<<m<<endl;}}
②八进制转换为十进制
#include<iostream>
#include<cmath>
using namespace std;
void main( )
{cout<<"20131054"<<endl;
while(1)
{int i=0,m=0,x=0,n=1;/*赋初值*/
cout<<"请输入一个八进制整数:";
cin>>x;
while(x>0)/*控制位数*/
{m=m+(x%10)*pow(8.0,i);/*主要计算公式*/
x=x/10;
i=i+1;}/*计数*/
cout<<"则对应的十进制整数为:"<<m<<endl;}}
实验__6__实验报告
一、实验目的
1.掌握循环与选择结构的嵌套的使用方法;
2.掌握嵌套循环的使用方法。

二、实验任务
1.计算多项式)3(*)1()2(*6*45*35*34*24*23*1+++++++n n n n 前n 项的和。

截止到最后一项的值与1的差小于0.02。

2.求1-1000中能被3整除,且不能被7整除,且至少有一位数是5的整数。

3.用循环结构语句编程并输出下图,其行数和每行的数据个数由键盘给出。

例如:键盘输入:5和8,则运行结果如下
三、实验结果(源程序 + 注释)
1.源程序:
①全部显示:
#include<iostream>
using namespace std;
void main()
{cout<<"20131054"<<endl;
double s,sum=0,n=1;/*定义变量,赋初值*/
do
{s=n*(n+2)/((n+1)*(n+3));
sum=sum+s;
n=n+1;/*n逐一增加*/
cout<<sum<<endl;} /*每次都输出sum*/ while(s<0.98);} /*循环结束条件*/
②只显示最后结果:
(与前面的区别是:语句“cout<<sum<<endl;”是否在循环体内)#include<iostream>
using namespace std;
void main()
{double s,sum=0,n=1;/*定义变量,赋初值* /
do
{s=n*(n+2)/((n+1)*(n+3));
sum=sum+s;
n=n+1;} /*n逐一增加*/
while(s<0.98); /*循环结束条件*/
cout<<sum<<endl;/*最后一次输出sum*/}
2.源程序:
#include<iostream>
#include"iomanip"
usingnamespace std;
void main()
{cout<<"20131054"<<endl;
int i=15,j=0;/*i的初值为15*/
for(;i<1001;i++)
if(i%3==0&&i%7!=0&&(i%10==5||i/10==5||i/100==5))/*条件设定*/ {cout<<setw(3)<<i<<" ";/*右对齐且间隔输出数字*/
if(++j>4) /*a按5个一行输出数字*/
{j=0;/*每循环一次将j置零*/
cout<<endl;}}
cout<<endl;}/*最后一行换行*/
3.源程序:
#include<iostream>
using namespace std;
void main()
{cout<<"20131054"<<endl;
while(1)/*可以循环输入输出*/
{int i , j , k,m = 0, n = 0 ;/*定义变量,赋初值*/
cout<<"请输入图形的行数和每行的数据个数:"<<endl;
cin>>m>>n;
for(i=-m;i<=m;i++)/*输出(2m+1)行数字*/
{for(k=0;k<(m-abs(i)+1);k++)/*(m-abs(i)+1)是i行首的空格数*/ cout<<" ";/*输出空格*/
for(j=0;j<n;j++)/*每行输出n个数字或"*"*/
{if(i==0)
cout<<"*";/*0行输出n个"*"*/
else
cout<<m-abs(i)+1;}/*(m-abs(i)+1)也是i行对应的数字*/ cout<<endl;}}}/*每输出一行就换行*/
实验__7__实验报告
一、实验目的
1.掌握数值型一维数组的使用方法;
2.掌握对一组同类型的数据进行插入、删除、排序和查找等常用算法。

二、实验任务
1. 对两个无序的数组(其中数组a长度为n,数组b长度m),采用选择法(或起泡法)分别将这两个数组转为有序(元素值从小到大有序)。

要求:a和b数组长度及其元素均由键盘获取。

2. 将以上任务1构建的两个有序的数组a和b,进行有序合并,即在将这两个数组进行合并的过程中使其数据始终保持有序。

(提示:数据结构:三个一维数组a,b,c
将a[ia]和b[ib]比较,谁小就把谁放入c[ic](c数组用于存放合并后的数据),
谁放入了c[ic]中谁的下标就加1,同时ic(c中当前存放数据的下标)加1,
如下图所示。


3. 计算以上任务2中c数组元素的平均值,并删除c中所有低于平均值的那些元素。

三、实验结果(源程序+ 注释)
1.①源程序(起泡法):
#include<iostream>
using namespace std;
int main()
{cout<<"20131054"<<endl;
while(1)/*不断输入*/
{int const N=20;
int i,j,t,m,n,a[N],b[N];/*定义变量*/
cout<<"请分别输入n和m的数值:"<<endl;
cin>>n>>m;
cout<<"请输入"<<n<<"个数"<<endl;
for(i=0;i<=n-1;i++)
{cin>>a[i];}/*输入数组a元素*/
cout<<"请输入"<<m<<"个数"<<endl;
for(i=0;i<=m-1;i++)
{cin>>b[i];}/*输入数组b元素*/
for(i=0; i<n-1; i++)
{for(j=0; j<n-i-1; j++)
if(a[j]>a[j+1])
{ t=a[j]; a[j]=a[j+1]; a[j+1]=t; }}/*交换变量顺序*/ for(i=0; i<m-1; i++)
{for(j=0; j<m-i-1; j++)
if(b[j]>b[j+1])
{ t=b[j]; b[j]=b[j+1]; b[j+1]=t; }}/*使数据沉底*/ cout<<"数组a排序后的结果为:"<<endl;
for(i=0;i<=n-1;i++)
{cout<<a[i]<<" ";}
cout<<endl;/*输出数组a排序后的结果*/
cout<<"数组b排序后的结果为:"<<endl;
for(i=0;i<=m-1;i++)
{cout<<b[i]<<" ";}/*输出数组b排序后的结果*/
cout<<endl<<endl;}}
②源程序(选择法):
#include<iostream>
using namespace std;
int main()
{cout<<"20131054"<<endl;
while(1)/*不断输入*/
{int const N=20;
int i,j,t,m,n,a[N],b[N]; /*定义变量*/
cout<<"请输入分别n和m的数值:"<<endl;
cin>>n>>m;
cout<<"请输入"<<n<<"个数"<<endl;
for(i=0;i<=n-1;i++)
{cin>>a[i];}
cout<<"请输入"<<m<<"个数"<<endl;
for(i=0;i<=m-1;i++)
{cin>>b[i];}
for(i=0;i<=n-2;i++)
{for(j=i+1;j<=n-1;j++)
{if(a[j]<a[i])/*循环条件*/
{t=a[i];a[i]=a[j];a[j]=t;}}} /*交换变量顺序*/ for(i=0;i<=m-2;i++)
{for(j=i+1;j<=m-1;j++)/*循环条件*/
{if(b[j]<b[i])
{t=b[i];b[i]=b[j];b[j]=t;}}} /*交换变量顺序*/ cout<<"数组a排序后为:"<<endl;
for(i=0;i<=n-1;i++)
{cout<<a[i]<<" ";}
cout<<endl;
cout<<"数组b排序后为:"<<endl;
for(i=0;i<=m-1;i++)
{cout<<b[i]<<" ";}
cout<<endl<<endl;}}
2.源程序:
#include<iostream>
using namespace std;
int main()
{cout<<"20131054"<<endl;
while(1)/*不断输入*/
{int const N=20;
int i,j,t,m,n,a[N],b[N],c[N];/*定义变量*/
int ia=0,ic=0,ib=0;/*为变量赋初值*/
cout<<"请分别输入n和m的数值:"<<endl; cin>>n>>m;
cout<<"请输入"<<n<<"个数"<<endl;
for(i=0;i<=n-1;i++)
{cin>>a[i];}
cout<<"请输入"<<m<<"个数"<<endl;
for(i=0;i<=m-1;i++)
{cin>>b[i];}
for(i=0;i<=n-2;i++)
{for(j=i+1;j<=n-1;j++)
{if(a[j]<a[i])
{t=a[i];a[i]=a[j];a[j]=t;}}}/*选择法排序*/ for(i=0;i<=m-2;i++)
{for(j=i+1;j<=m-1;j++)
{if(b[j]<b[i])
{t=b[i];b[i]=b[j];b[j]=t;}}}/*选择法排序*/ while(ia<=n-1&&ib<=m-1)
{if(a[ia]<=b[ib])
{c[ic]=a[ia];ia=ia+1;ic=ic+1;}
else
{c[ic]=b[ib];ib=ib+1;ic=ic+1;}}
if(ia==n)
{for(i=ib;i<=m-1;i++)
{c[ic]=b[i];ic=ic+1;}}
if(ib==m)
{for(i=ia;i<=n-1;i++)
{c[ic]=a[i];ic=ic+1;}}/*合并数组*/
cout<<endl;
cout<<"两数组合并后为:"<<endl;
for(i=0;i<=m+n-1;i++)
{cout<<c[i]<<" ";}/*输出结果*/}}
3.源程序:
#include "stdafx.h"
#include<iostream>
using namespace std;
int main()
{cout<<"20131054"<<endl;
while(1)/*不断输入*/
{int const N=20;
int i,j,m,n,a[N],b[N],c[N],d[N],t;
float avg,sum=0;
int ia=0,ic=0,ib=0;/*定义变量并赋初值*/
cout<<"请分别输入n和m的数值:"<<endl; cin>>n>>m;
cout<<"请输入"<<n<<"个数"<<endl;
for(i=0;i<=n-1;i++)
{cin>>a[i];}
cout<<"请输入"<<m<<"个数"<<endl;
for(i=0;i<=m-1;i++)
{cin>>b[i];}
for(i=0;i<=n-2;i++)
{for(j=i+1;j<=n-1;j++)
{if(a[j]<a[i])
{t=a[i];a[i]=a[j];a[j]=t;}}}/*选择排序法*/ for(i=0;i<=m-2;i++)
{for(j=i+1;j<=m-1;j++)
{if(b[j]<b[i])
{t=b[i];b[i]=b[j];b[j]=t;}}}/*选择排序法*/ while(ia<=n-1&&ib<=m-1)
{if(a[ia]<=b[ib])
{c[ic]=a[ia];ia=ia+1;ic=ic+1;}
else
{c[ic]=b[ib];ib=ib+1;ic=ic+1;}}
if(ia==n)
{for(i=ib;i<=m-1;i++)
{c[ic]=b[i];ic=ic+1;}}
if(ib==m)
{for(i=ia;i<=n-1;i++)
{c[ic]=a[i];ic=ic+1;}}/*合并数组*/
for(i=0;i<=m+n-1;i++)
{sum=sum+c[i];}
avg=sum/(m+n);/*计算平均值*/
cout<<"c组平均数为:"<<avg<<endl;
for(i=0,j=0;i<=m+n-1;i++)
{if(c[i]>avg)
{d[j]=c[i];j++;}}/*数据归类*/
cout<<"c组删除低于平均数的数值后为:"<<endl; for(i=0;i<j;i++)
{cout<<d[i]<<" ";}/*输出结果*/
cout<<endl<<endl;}}
实验__8__实验报告
一、实验目的
1.掌握对一组同类型的数据进行插入、删除、排序和查找等的常用算法。

二、实验任务
1.自动产生N*N数据(N取值最大不超过100)存入a数组,数据形成规律如下图示(呈S形),并取出a的下三角形区域数据输出,输出形式如下图所示(呈等腰三角形)。

(选择)2.使用插入排序法将键盘输入的无序数列按升序排列。

思路分析与算法:
1)从第一个元素开始,该元素可以认为已经被排序。

2)取出下一个元素,在已经排序的元素序列中从后向前扫描。

3)如果该元素(已排序)大于新元素,将该元素移到下一位置。

4)重复步骤3,直到找到已排序的元素小于或者等于新元素的位置。

5)将新元素插入到该位置中。

6)重复步骤2。

三、实验结果(源程序+ 注释)
1.源程序:
#include<iostream>
#include<cstdlib>
#include<ctime>
#include<iomanip>//添加所需系统函数
using namespace std;
void main()
{const int M=100;
int a[M][M],N;//定义变量
cout<<"20131054"<<endl;
cout<<"please enter n:";
cin>>N;//输入N值
for(int i=0;i<N;i++)
{for(int j=0;j<N;j++)
a[i][j]=N*i+j+1;
}
for(int i=0;i<N;i++)
{for(int j=0;j<N;j++)
if((i+1)%2!=0)//判断条件
{ cout<<setw(5)<<a[i][j];}
else
cout<<setw(5)<<a[i][N-1-j];
cout<<endl; }
for(int i=0;i<N;i++)
{for(int j=0;j<=i;j++)
{if((i+1)%2!=0)//判断条件
{if(j==0)
cout<<setw((N-i)*2)<<a[i][j];
else
cout<<setw(4)<<a[i][j];}
else{if(j==0)
cout<<setw((N-i)*2)<<a[i][N-1-j];
else
cout<<setw(4)<<a[i][N-1-j];}} cout<<endl;}}
2.源程序:
#include<iostream>
#include"iomanip"
using namespace std;
void main()
{int a[10],i,j,b[10];//定义变量
cout<<"20131054"<<endl;
cout<<"请依次输入数列的值:";
for(i=0;i<10;i++)
cin>>a[i];
b[0]=a[0];//初始化数据
for(i=1;i<10;i++)
for(j=i-1;j>=0;j--)
if(a[i]<b[j])
{b[j+1]=b[j];b[j]=a[i];}//用选择法的思想排列数据
else
if(a[i]>b[j])
{b[j+1]=a[i];break;}
for(j=0;j<10;j++)
cout<<setw(5)<<b[j];//输出结果
}
实验__9__实验报告
一、实验目的
1.掌握二维数值型数组的使用方法;
2. 掌握string类字符串的使用方法。

二、实验任务
1. 输入一个字符串到一个字符数组s(最大长度≤100),将该字符数组置逆,并输出置
逆后的字符数组。

2.从键盘上输入任意两个字符串,比较它们是否相同,将它们连接成一个新的字符串并
输出,输出这个新的字符串的有效长度。

三、实验结果(源程序+ 注释)
1.源程序:
#include<iostream>
using namespace std;
int main()
{int num,i;
char t,p[100];
cout<<"20131054"<<endl;
cout<<"Input the previous p:"<<endl;
gets(p);//获得字符串
cout<<"Input the new string:"<<endl;
cin>>p;
for(num=0;p[num]!='\0';num++);//循环条件
for(i=0;i<num/2;i++)
{t = p[i];
p[i]=p[num-1-i];
p[num-1-i]=t;}//置换过程
cout<<"Result string:"<<endl<<p<<endl;}
2.源程序:。

相关文档
最新文档