第七周作业

本文详细介绍了编程作业的实现过程,包括调试分析例题、编程习题、矩阵运算、阶乘和十进制转换等核心内容,展示了算法设计与实现的具体步骤。
  •  实验作业

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

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

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

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

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

 

 

 

 课本习题1

#include<iostream>
#include<cmath>//fabs()函数包含在该头文件中
using namespace std;

double squ(double);//子函数声明

int main()
{
    double x;
	cout<<"please input x:";
	cin>>x;                       //输入变量x的值
	cout<<"The square root of"<<x<<"is"<<squ(x)<<endl; //输出返回的值s1
	return 0;                      //返回0
}
double squ(double x)
{
    double s1,s2;
	s1=0.5*(1.0+x);
	do
	{
	    s2=s1;                    //将s1的值赋给s2,所以s2=0.5*(1.0+x)
		s1=(s2+x/s2)*0.5;         //s1重新赋值为(s2+x/s2)*0.5其中s2=0.5*(1.0+x)
	}while(fabs(s2-s1)>1.0E-6);   //fabs为求绝对值函数,如果s2-s1为0时继续执行do while函数
                                  //否则结束循环返回s1到主函数
    return s1;
}


 

课本习题2

/**********************************
***功能:调用子函数求a的n次幂*****
**********************************/
#include<iostream>
using namespace std;
long intPower(int base,int exponent);

int main()
{
	int a,n;
	cout<<"求a的n次幂的值"<<endl
		<<"a=";
	cin>>a;
	cout<<"n=";
	cin>>n;
	cout<<"求得结果为";
	cout<<intPower(a,n)<<endl;


	return 0;
}
long intPower(int base,int exponent)
{
	unsigned char i;
	long k=1;
	for(i=1;i<=exponent;i++)
	{
		k*=base;
	}
	return k;
}


 

 

课本习题4:

/***************************
***功能:将一整数的顺序相反***
****************************/
#include<iostream>
using namespace std;
int fun(int a);
int main()
{
	int j;
	cout<<"输入整数:";
	cin>>j;
	cout<<"输出整数:";
	cout<<fun(j)<<endl;
	return 0;
}
int fun(int a)
{
	int i,s=0;
	while(a!=0)
	{
		i=a%10;
		a=a/10;
		s=s*10+i;
	}
	return s;

}


课本习题5:

/*****************************
****  功能:求分数等级   ****
*****************************/
#include<iostream>
using namespace std;
char change(int a);
int main()
{
	int score;
	while(1)
	{
	cout<<"请输入分数:";
	cin>>score; 
	while(score>100||score<0)
	{
		cout<<"该数不符合,请重新输入:";
		cin>>score;
	}
	cout<<"该分数等级为"<<change(score)<<endl;
	}
	return 0;
}
char change(int a)
{
	if(a>=90)
		return 'A';
	else if(a<90&&a>=80)
		return 'B';
	else if(a<80&&a>=70)
		return 'C';
	else if(a<70&&a>=60)
		return 'D';
	else
		return 'E';
}


课本习题6:

/*************************
****求10个成绩的平均数****
*************************/
#include<iostream>
using namespace std;
float average(int*);
int main()
{
	int a[10],i;
	cout<<"输入10个学生的成绩:"<<endl;
	for(i=0;i<10;i++)
		cin>>a[i];
	cout<<"平均分为";
	cout<<average(a)<<endl;
	return 0;
}
float average(int* score)//子函数:参数为score数组,返回值为其平均数
{
	int i,s=0;
	float v;
	for(i=0;i<10;i++)
	{
		s+=score[i];
	}
	v=s/10.0;
	return v;
}


课本习题7:

/*****************************************
***功能:求两数的最大公约数和最小公倍数***
*****************************************/
#include<iostream>
using namespace std;
int gongyue(int a,int b);
int gongbei(int a,int b);
int main()
{
	int i,j;
	cout<<"请输入两个正整数:";
	cin>>i>>j;
	cout<<"最大公约数为";
	cout<<gongyue(i,j)<<endl;
	cout<<"最大公倍数为";
	cout<<gongbei(i,j)<<endl;
	return 0;
}
int gongyue(int a,int b)//求最大公约数
{
	int m;
	m=a<b?a:b;
	while(a%m!=0||b%m!=0)
	{
		m--;
	}
	return m;
}
int gongbei(int a,int b)//求最小公倍数
{
	int n;
	n=a>b?a:b;
	while(n%a!=0||n%b!=0)
	{
		n++;
	}
	return n;


 

课本习题8:

/******************************
***功能:九九乘法表的三种输出***
*******************************/
#include<iostream>
#include<iomanip>
using namespace std;
void fun1();
void fun2();
void fun3();
int main()
{
	cout<<"九九乘法表:"<<endl;
	cout<<"表1:"<<endl;
	fun1();
	cout<<endl<<endl;
	cout<<"表2:"<<endl;
	fun2();
	cout<<endl<<endl;
	cout<<"表3:"<<endl;
	fun3();
	return 0;
}
void fun1()
{
	int i,j,k;
	for(i=1;i<10;i++)
	{
		for(j=1;j<10;j++)
		{
			k=i*j;
			cout<<i<<"*"<<j<<"="<<k<<'\t';
		}
		cout<<endl;
	}
}
void fun2()
{
	int i,j,k;
	for(i=1;i<10;i++)
	{
	   for(j=1;j<10;j++)
		{
			k=i*j;
			if(i>j)
			{
				cout<<"        ";
			}
			else
            	cout<<i<<"*"<<j<<"="<<k<<'\t';
		}
	   	cout<<endl;
	}
	
}
void fun3()
{
	int i,j,k;
	for(i=1;i<10;i++)
	{
		for(j=1;j<=i;j++)
		{
			k=i*j;
			cout<<i<<"*"<<j<<"="<<k<<'\t';
		}
		cout<<endl;
	}
}


 课本习题9

/*************************
*用值调用求三数的最大最小平均值*
*************************/
#include<iostream>
using namespace std;
float average(int*);
float max(int*);
float min(int*);
int main()
{
	int a[3],i;
	cout<<"输入3个整数:"<<endl;
	for(i=0;i<3;i++)
		cin>>a[i];
	cout<<"最大值为"<<max(a)<<endl;
	cout<<"最小值为"<<min(a)<<endl;
	cout<<"平均值为"<<average(a)<<endl;
	return 0;
}
float max(int* a)
{
	int i;
	float v;
	v=a[0];
	for(i=0;i<3;i++)
	{
		if(a[i]>v)
			v=a[i];
	}
	return v;
}
float min(int* a)
{
	int i;
	float v;
	v=a[0];
	for(i=0;i<3;i++)
	{
		if(a[i]<v)
			v=a[i];
	}
	return v;
}
float average(int* a)
{
	int i,s=0;
	float v;
	for(i=0;i<3;i++)
	{
		s+=a[i];
	}
	v=s/3.0;
	return v;
}


 

作业3:

/************************
***功能:求两矩阵乘积****
************************/
#include<iostream>
using namespace std;
void fun(int m[][5],int n[][3])//子函数:求m,n两二维矩阵的乘积
{
	int i,j,k;
  int c[4][3]={0},t;
    for(i=0;i<4;i++)  
        for(j=0;j<3;j++)  
            for(k=0;k<5;k++)  
            {  
                t=m[i][k]*n[k][j];  
                c[i][j]+=t;  
            } 

	   cout<<"output the c[i][j]"<<endl;  
     for(i=0;i<4;i++)  
    {  
        for(j=0;j<3;j++)   
            cout<<c[i][j]<<'\t';  
        cout<<endl<<endl;  
    } 
	
}

int main()
{
	int i,j,k;
	int a[4][5],b[5][3];
	cout<<"please intput the number of a[4][5]"<<endl;
	for(i=0;i<4;i++)
		for(j=0;j<5;j++)
			cin>>a[i][j];
	cout<<"please intput the number of b[5][3]"<<endl;
	for(i=0;i<5;i++)
		for(j=0;j<3;j++)
			cin>>b[i][j];
	fun(a,b);
	return 0;
}


 

作业4:

/*****************************************
***   功能:求s=1!+2!+3!+……+n!  ****
*****************************************/
#include<iostream>
using namespace std;
float jiecheng(int n);
float qiuhe(int n);
int main()     //主函数
{
	float i;
	int j;
	cout<<"请输入n的值:";
	cin>>j;
	cout<<"求得结果为s=";
	cout<<qiuhe(j)<<endl;
	return 0;
}
float jiecheng(int n)//求n的阶乘函数
{
	float m;
	if(n==0)
	{
		m=1;
     	return m;
	}	
	else
       m=n*jiecheng(n-1);
	return m;
}
float qiuhe(int n)//求阶乘和的函数,调用阶乘函数
{
	int i;
	float s=0;
	for(i=1;i<=n;i++)
	{
		s+=jiecheng(i);
	}
	return s;
}


作业5:

/*************************************
***功能:将十六进制数转换为十进制数***
*************************************/
#include<iostream>
#include<math.h>
using namespace std;
int change(int x);
int main()
{
	int i;
	cout<<"请输入一个十六进制数:";
	cin>>i;
	cout<<"转化为十进制数:";
	cout<<change(i)<<endl;
	return 0;
}
int change(int x)
{
	int y,i=0,s=0;
	while(x!=0)
	{
	
		y=x%10;
		x=x/10;
		s+=pow(16,i)*y;
		i++;

	}
	return s;
	
}


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值