第五章作业

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

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

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

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

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

习题2

#include<iostream>
using namespace std;
long intPower(int base,int exponent);
int main()
{
	long n;
	int base,int exponent;
	cout<<"请输入基数和幂";
	cin>>base>>exponent;
	n=intPower(base,exponent);
    cout<<base<<"的"<<exponent<<"次幂是"<<n<<endl;
}
long intPower(int base,int exponent)
{
	long result=1;
	int i;
	if(exponent!=0)
		for(i=0;i<exponent;i++)
			result*=base;
	return result;
}


习题3

#include<iostream>
using namespace std;
int fun(int n);
int main()
{
	int num;
	cout<<"请输入一个正整数";
	cin>>num;
	if(num<=1)
	{
		cout<<"输入有误,请重新输入:";
			cin>>num;
			return 0;}
	if(fun(num))
		cout<<num<<"是素数"<<endl;
	else
		cout<<num<<"不是素数"<<endl;
	return 0;
}
int fun(int n)
{
	int flag=1,i;
	for(i=2;i<n/2&&flag==1;i++)
		if(n%i==0)
			flag=0;
		return flag;
}


习题4

#include<iostream>
#include<iomanip>
using namespace std;
int fun(int);
int main()
{
	int num,result;
	cout<<"请输入一个十进制的正整数";
	cin>>num;
	result=fun(num);
	cout<<num<<"的逆序数是"<<result<<endl;
	return 0;
}
int fun(int n)
{
	int i,m=n;
	for(i=1;;)
	{
		m/=10;
		if(m==0) break;
		i*=10;
	}
	if(i==1) return n;
	int temp=i;
	int j,a[10];
	for(j=0;temp!=0;j++)
	{
		a[j]=n/temp;
		n=n-a[j]*temp;
		temp/=10;
	}
	for(j=j-1;j>=0;j--)
	{
		n+=a[j]*i;
	i/=10;
	}
return n;
}


习题5

#include<iostream>
using namespace std;
char grade(int);
int main()
{
	int score;
	cout<<"请输入百分制成绩:";
	cin>>score;
	char ch=grade(score);
	cout<<score<<"对应的等级为:"<<ch<<endl;
return 0;
}
char grade(int n)
{
	char ch;
	if(n>=90&&n<=100) ch='A';
	else if(n>=80) ch='B';
	else if(n>=70) ch='C';
	else if(n>=60) ch='D';
	else ch='E';
	return ch;
}


习题6

#include<iostream>
using namespace std;
float average();
int main()
{
	float pj=average();
	cout<<"这十个学生的平均成绩为:"<<pj<<endl;
	return 0;
}
float average()
{
	float a[10],sum=0,average;
	int i;
	cout<<"请输入十个学生的成绩:"<<endl;
	for(i=0;i<10;i++)
	{
		cin>>a[i];
		sum+=a[i];
	}
	average=sum/10;
	return average;
}


习题7

#include<iostream>
using namespace std;
int max(int m,int n);
int min(int m,int n,int k);
int main()
{
	int m,n,k,l;
	cout<<"请输入两个数:"<<endl;
	cin>>m>>n;
	k=max(m,n);
	l=min(m,n,k);
	cout<<m<<"和"<<n<<"的最大公约数是:"<<k<<endl;
	cout<<m<<"和"<<n<<"的最小公倍数是:"<<l<<endl;
	return 0;
}
int max(int m,int n)
{
	int temp,r;
	if(m>n)
	{
		temp=m;
		m=n;
		n=temp;
	}
	while((r=n%m)!=0)
	{
		n=m;
		m=r;
	}
	return m;
}
int min(int m,int n,int k)
{
	return m*n/k;
}

习题8

#include<iostream>
using namespace std;
void fun1();
void fun2();
void fun3();
int main()
{
	fun1();
	cout<<endl;
    fun2();
    cout<<endl;
    fun3();
    cout<<endl;
	return 0;
}
void fun1()
{
	cout<<"九九乘法表一:"<<endl;
	for(int i=1;i<=9;i++)
	{
		for(int j=1;j<=9;j++)
			cout<<j<<"*"<<i<<"="<<i*j<<'\t';
		cout<<endl;
}
}
void fun2()
{
	cout<<"九九乘法表二:"<<endl;
	for(int i=1;i<=9;i++)
	{
		for(int j=1;j<=i;j++)
			cout<<j<<"*"<<i<<"="<<i*j<<'\t';
		cout<<endl;
	}
}
void fun3()
{
	cout<<"九九乘法表三:"<<endl;
	for(int i=1;i<=9;i++)
	{
		for(int j=1;j<=9;j++)
			if(j<i)
				cout<<'\t';
			else
			cout<<j<<"*"<<i<<"="<<i*j<<'\t';
		cout<<endl;
	}
}


9

/*****************
**方法一:值调用**
******************/
#include<iostream>
using namespace std;
int max(int,int,int);
int min(int,int,int);
float average(int,int,int);
int main()
{
	int a,b,c;
	cout<<"请输入三个数:"<<endl;
	cin>>a>>b>>c;
	cout<<a<<"、"<<b<<"和"<<c<<"中的最大值是:"<<max(a,b,c)<<endl;
    cout<<a<<"、"<<b<<"和"<<c<<"中的最小值是:"<<min(a,b,c)<<endl;
    cout<<a<<"、"<<b<<"和"<<c<<"的平均值是:"<<average(a,b,c)<<endl;
	return 0;
}
int max(int a,int b,int c)
{
	int max=a;
	if(b>a&&b>>c)
		max=b;
    else if(c>a&&c>b)
		max=c;
	return max;
}
int min(int a,int b,int c)
{
	int min=a;
	if(b<a&&b<c)
		min=b;
	else if(c<a&&c<b)
		min=c;
	return min;
}
float average(int a,int b,int c)
{
	
	return (a+b+c)/3.0;;
}


/*******************
**方法二:引用调用**
********************/
#include<iostream>
using namespace std;
int max(int&,int&,int&);
int min(int&,int&,int&);
float average(int&,int&,int&);
int main()
{
	int a,b,c;
	cout<<"请输入三个数:"<<endl;
	cin>>a>>b>>c;
	cout<<a<<"、"<<b<<"和"<<c<<"中的最大值是:"<<max(a,b,c)<<endl;
    cout<<a<<"、"<<b<<"和"<<c<<"中的最小值是:"<<min(a,b,c)<<endl;
    cout<<a<<"、"<<b<<"和"<<c<<"的平均值是:"<<average(a,b,c)<<endl;
	return 0;
}
int max(int& a,int& b,int& c)
{
	int max=a;
	if(b>a&&b>>c)
		max=b;
    else if(c>a&&c>b)
		max=c;
	return max;
}
int min(int& a,int& b,int& c)
{
	int min=a;
	if(b<a&&b<c)
		min=b;
	else if(c<a&&c<b)
		min=c;
	return min;
}
float average(int& a,int& b,int& c)
{
	
	return (a+b+c)/3.0;;
}

/*******************
**方法三:全局变量**
********************/
#include<iostream>
using namespace std;
int a,b,c;
int max();
int min();
float average();
int main()
{
	cout<<"请输入三个数:"<<endl;
	cin>>a>>b>>c;
	cout<<a<<"、"<<b<<"和"<<c<<"中的最大值是:"<<max()<<endl;
    cout<<a<<"、"<<b<<"和"<<c<<"中的最小值是:"<<min()<<endl;
    cout<<a<<"、"<<b<<"和"<<c<<"的平均值是:"<<average()<<endl;
	return 0;
}
int max()
{
	int max=a;
	if(b>a&&b>>c)
		max=b;
    else if(c>a&&c>b)
		max=c;
	return max;
}
int min()
{
	int min=a;
	if(b<a&&b<c)
		min=b;
	else if(c<a&&c<b)
		min=c;
	return min;
}
float average()
{
	
	return (a+b+c)/3.0;;
}


3

#include<iostream>  
#include<iomanip>  
using namespace std;  
int i,j,a[4][5],b[5][3],c[4][3]={0},k;
void fun();
int main()
{
	fun();
	cout<<endl;
	return 0;
}  
void fun()
{  
      
    cout<<"请输入20个数:\n";  
    for(i=0;i<4;i++)  
      for(j=0;j<5;j++)  
            cin>>a[i][j];  
        
    cout<<"请输入15个数:\n";  
    for(i=0;i<5;i++)  
      for(j=0;j<3;j++)  
            cin>>b[i][j];  
        
    for(i=0;i<4;i++)  
       for(j=0;j<3;j++)  
           for(k=0;k<5;k++)  
           {  
             c[i][j]+=a[i][k]*b[k][j]; 
           }  
           cout<<"相乘后的数组c[i][j]为:\n";  
    for(i=0;i<4;i++)  
    {  
        for(j=0;j<3;j++)  
            cout<<setw(4)<<c[i][j];  
    cout<<endl;  
    }   
}


4.

#include<iostream>  
using namespace std;
int n;
double fun1(int k)
{
	int m=1,i;
	for(i=1;i<=k;i++)  
            m *=i; 
	return m;

}
int main()
{
	int s=0,i,n;
	cin>>n;
	for(i=1;i<=n;i++)
	s+=fun1(i);
cout<<"s[n]="<<s<<endl;  
    return 0;
}	

5







评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值