第五章实验作业
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下标地址,而不是四行三列的矩阵
相关文章推荐