您的位置:首页 > 其它

第五章实验作业

2014-04-19 18:13 316 查看
 

实验作业

1.调试分析课本每一个例题,有可能的话更改成2-3个方法的新程序;

2.编程实现课本每一个编程习题。

3. 编程实现输入两个4X5矩阵和5X3矩阵,定义函数并在主函数中调用计算它们的积。

4.编程计算S
=1!+21+3!+...n!。要求定义两个函数,一个计算n!,一个计算s
,在后一个函数中调用前一个函数。然后在主程序中输入数n的值,然后调用定义函数输出结果。

5.编写一个函数,输入一个十六进制数,输出相应的十进制数。

 

一、调试例题

 

/** 三个数字取最小值 **/
#include <iostream>
using namespace std;
double min(double x,double y,double z)
{
int temp;
temp= x<y?x:y;
return (z<temp?z:temp);
}

int main(){
double x,y,z;
cout<<"输入三个数字:";
cin>>x>>y>>z;
cout<<"最小值:"<<min(x,y,z);
return 0;
}


/** 2个数字排序 **/
#include <iostream>
using namespace std;
void swap(int);
int a[2]={3,2};
int main()
{

cout<<"a="<<a[0]<<"\tb="<<a[1]<<endl;
swap(2);
cout<<"a="<<a[0]<<"\tb="<<a[1]<<endl;
return 0;
}

void swap(int n)
{
int i,j,min,temp;
for (i=0;i<n-1;i++)
{
min=i;
for(j=i+1;j<n;j++)
if(a[j]<a[min])
min=j;
temp=a[i];
a[i]=a[min];
a[min]=temp;

}
}


 

二、编程习题

 

/**  10个学生成绩平均值 ***/
#include <iostream>
using namespace std;
int avg(int s1,int s2,int s3,int s4,int s5,int s6,int s7,int s8,int s9,int s10)
{
int s=(s1+s2+s3+s4+s5+s6+s7+s8+s9+s10)/10;
return (s);
}

int main(){
float s=0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10;
cout<<"请输入10个学生成绩:";
cin>>s1>>s2>>s3>>s4>>s5>>s6>>s7>>s8>>s9>>s10;
s=avg(s1,s2,s3,s4,s5,s6,s7,s8,s9,s10);
cout<<"平均成绩:"<<s<<endl;
return 0;
}

 

/*** 最大最小平均值**/
#include <iostream>
using namespace std;
int max(int x,int y,int z)
{    int t;
t=x>y?x:y;
t=t>z?t:z;
return(t);
}
int min(int x,int y,int z)
{    int t;
t=x<y?x:y;
t=t<z?t:z;
return(t);
}
int avg(int x,int y,int z)
{
int t;
t=(x+y+z)/3;
return (t);
}
int main(){
int num1,num2,num3;
cout<<"请输入三个数:";
cin>>num1>>num2>>num3;
cout<<"最大值:"<<max(num1,num2,num3)<<endl;
cout<<"最小值:"<<min(num1,num2,num3)<<endl;
cout<<"平均值:"<<avg(num1,num2,num3);
return 0;
}


 

/** 九九乘法表 三种形式输出 ****/
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
const int line=9;
int i,j,k;
for(i=0;i<line;i++)
{
for(j=0;j<=i;j++)
cout<<j+1<<"x"<<i+1<<"="<<(i+1)*(j+1)<<"\t";
cout<<endl;

}
for(i=0;i<line;i++)
{
for(j=0;j<line;j++)
cout<<j+1<<"x"<<i+1<<"="<<(i+1)*(j+1)<<"\t";
cout<<endl;
}
for(i=0;i<line;i++)
{for(k=i;k<line;k++)
cout<<i+1<<"x"<<k+1<<"="<<(i+1)*(k+1)<<"\t";
cout<<endl;
}

for(i=0;i<line;i++)
{
for(j=0;j<9;j++)
{if(j<i)
cout<<setw((8.27)*i);
else
{cout<<j+1<<"x"<<i+1<<"="<<(i+1)*(j+1)<<"\t";}
}
cout<<endl;
}
return 0;
}


 

 

三、矩阵乘积

#include <iostream>
#include <iomanip>
using namespace std;
void mul(int d[4][5], int e[5][3],int c[4][3])
{
for(int i=0;i<4;i++)
for(int k=0;k<3;k++)
for(int j=0;j<5;j++)
c[i][k]+=d[i][j]*e[j][k];
}

int main()
{
int i,j;
int a[4][5]={0};
int b[5][3]={0};
int c[4][3]={0};
cout<<"请输入第一个(4x5)矩阵:"<<endl;
for(i=0;i<4;i++)
{	for(j=0;j<5;j++)
cin>>a[i][j];}

cout<<"请输入第二个(5X3)矩阵:"<<endl;
for(i=0;i<5;i++)
{
for(j=0;j<3;j++)
cin>>b[i][j];}
cout<<"第一个矩阵:"<<endl;
for(i=0;i<4;i++){
for(j=0;j<5;j++)
cout<<setw(4)<<a[i][j];
cout<<endl;
}
cout<<"第二个矩阵:"<<endl;
for(i=0;i<5;i++)
{
for(j=0;j<3;j++)
cout<<setw(4)<<b[i][j];
cout<<endl;
}
mul(a,b,c);
cout<<"乘积矩阵为:"<<endl;
for(i=0;i<4;i++)
{
for(j=0;j<3;j++)
cout<<setw(4)<<c[i][j];
cout <<endl;
}
return 0;
}


 

 

四、传值调用

#include <iostream>
using namespace std;
int factorial(int n){
int t;
if(n==0)
t=1;
else
t=n*factorial(n-1);
return(t);
}
int sum(int n){
int s=0,i;
for(i=1;i<n+1;i++)
s=s+factorial(i);
return (s);
}
int main(){
int n,s,t;
cout<<"请输入S
=1!+2!+3!+...n!中的n:"<<endl;
cin>>n;
//cin>>t;
s=sum(n);
cout<<"s="<<s<<endl;
return 0;
}


 

六、进制转化

#include <iostream>
using namespace std;
int ten(int n)
{    cout<<n<<endl;
return (n);
}
int main ()
{
int n;
cout<<"请输入一个十六进制的数:";
cin>>hex>>n;
cout<<"转换成十进制为:"<<ten(n);
return 0;
}


七、调试总结

1,传值调用似乎无法引用数组。

2,矩阵a[4][3]有时候代表的是43下标地址,而不是四行三列的矩阵


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: