第七周作业

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

例5.1

#include<iostream>
using namespace std;

void display()
{
	cout<<"This is an example."<<endl;
}

int main()
{
	display();
	return 0;
}

另一种方法:

#include<iostream>
using namespace std;
int main()
{
	cout<<"This is an example.\n";
	return 0;
}

例5.2

#include<iostream>
using namespace std;

double min(double x,double y)
{
	return x<y?x:y;
}

int main()
{
	cout<<min(6.0,5.0)<<endl;

	return 0;
}

例5.3

#include<iostream>
using namespace std;

double circleArea(double);

int main()
{
	double area = circleArea(5.0);
	cout<<"area = "<<area<<endl;
	return 0;
}
double circleArea(double r)
{
	double pi = 3.14;
	double area = pi * r * r;
	return area;
}

例5.4

#include<iostream>
using namespace std;

int sum(int x,int y)
{
	int temp;
	temp = x + y;
	return temp;
}

int main()
{
	int a,b,c;
	a = 10; b = 5;
	c = sum(a,b);
	cout<<a<<" + "<<b<<" = "<<c<<endl;

	return 0;
}

另一种方法:

#include<iostream>
using namespace std;

int main()
{
	int a,b,s=0;
	a=10;
	b=5;
	s=a+b;
	cout<<a<<" + "<<b<<" = "<<s<<endl;

	return 0;
}

例5.5

#include<iostream>
using namespace std;

int ncomp(int i,int j)
{
	if(i>j)return 1;
	if(i==j)return 0;
	return - 1;
}
int main()
{
	int k=2;
	int n=ncomp(k,++k);
	cout<<n<<endl;
	return 0;
}

例5.6

#include<iostream>
using namespace std;

int max(int u,int v)
{
	int w;
	w = u > v?u:v;
	return w;
}
int main()
{
	int a,b,c;
	cout<<"please input two numbers: ";
	cin>>a>>b;
	c = max(a,b);
	cout<<"a = "<<a<<"b = "<<b<<endl;
	cout<<"Max is "<<c<<endl;

	return 0;
}

例5.7

#include<iostream>
using namespace std;

int sqr(int x)
{
	x = x * x;
	return x;
}
int main()
{
	int t = 10;
	int s = sqr(t);
	cout<<"t = "<<t<<'\t'
		<<"sqr("<<t<<") = "<<s<<endl;

	return 0;
}

例5.8

#include<iostream>
using namespace std;

void swap(int u,int v);

int main()
{
	int a=3;
	int b=4;
	cout<<"a="<<a<<"\tb="<<b<<endl;
	swap(a,b);
	cout<<"a="<<a<<"\tb="<<b<<endl;

	return 0;
}

void swap(int u,int v)
{
	int temp;
	temp=u;
	u=v;
	v=temp;
}

例5.9

#include<iostream>
using namespace std;

void swap(int &u,int &v);

int main()
{
	int a=3;
	int b=4;
	cout<<"a="<<a<<"\tb="<<b<<endl;
	swap(a,b);
	cout<<"a="<<a<<"\tb="<<b<<endl;

	return 0;
}

void swap(int &u,int &v)
{
	int temp = v;
	v = u;
	u = temp;
}

例5.10

#include<iostream>
using namespace std;

void display(int x,float y)
{
	cout<<x<<" "<<y;
	return ;
}

int main()
{
	float a;
	int b;
	cin>>b>>a;
	display(b,a);

	return 0;
}

例5.11

#include<iostream>
#include<cmath>
using namespace std;

void GetRoots(/*in*/double,/*in*/double,/*in*/double,
			  /*out*/double&,/*out*/double&);

int main()
{
	double a,b,c;
	double root1,root2;
	cout<<"输入方程的三个系数 a,b,c: "<<endl;
	cin>>a>>b>>c;
	GetRoots(a,b,c,root1,root2);
	cout<<"root1 = "<<root1<<"  root2 = "<<root2<<endl;

	return 0;
}
void GetRoots(/*in*/double a,/*in*/double b,/*in*/double c,
			  /*out*/double& root1,/*out*/double& root2)
{
	double temp;
	temp = b*b-4.0*a*c;
	root1 = (-b+sqrt(temp))/(2.0*a);
	root2 = (-b-sqrt(temp))/(2.0*a);
}

例5.12

#include<iostream>
using namespace std;

void swap(int &u,int &v);

int main()
{
	int a=3;
	int b=4;
	cout<<"a="<<a<<"\tb="<<b<<endl;
	swap(a,b);
	cout<<"a="<<a<<"\tb="<<b<<endl;

	return 0;
}

void swap(/*inout*/int &u,/*inout*/int &v)
//两个参数均为流入流出参数,是引用调用,对应实参必须是变量且具有初始值
{
	int temp = v;
	v = u;
	u = temp;
}


例5.13

#include<iostream>
using namespace std;

long f2(int);

long f1(int p)
{
	int k;
	long r;
	k = p * p;
	r = f2(k);
	return r;
}
long f2(int q)
{
	long fact = 1;
	for(int i = 1;i <= q;i++)
		fact *= i;
	return fact;
}
int main()
{
	int i;
	long sum = 0;
	for(i = 2;i<=3;i++)
		sum += f1(i);
	cout<<"sum = "<<sum<<endl;
	return 0;
}


例5.14

#include<iostream>
#include<cmath>
using namespace std;

float f(float x);
float root(float x1,float x2);
float point(float x1,float x2);

int main()
{
	float x1,x2,y1,y2,x;
	do
	{
		cout<<"请输入根所在的范围: ";
		cin>>x1>>x2;
		y1 = f(x1);
		y2 = f(x2);
		cout<<"两端点的值为["<<y1<<","<<y2<<"]"<<endl;
	}
	while(y1 * y2 >= 0);
	x = root(x1,x2);
	cout<<"在"<<x1<<"与"<<x2<<"之间,方程的解为"<<x<<endl;
	return 0;
}
float f(float x)
{
	return(x * x * x - 4 * x * x + 6 * x - 10);
}
float root(float x1,float x2)
{
	float y1,x,y;
	y1 = f(x1);
	do
	{
		x = point(x1,x2);
		y = f(x);
		if(y * y1 > 0)
		{
			y1 = y;
			x1 = x;
		}
		else x2 = x;
	}
	while(fabs(y) >= 0.0001);
	return x;
}
float point(float x1,float x2)
{
	float y;
	y = (x1 * f(x2) - x2 * f(x1))/(f(x2) - f(x1));
	return y;
}

例5.15

#include<iostream>
#include<cmath>
using namespace std;

double Factorial(int n);
int main()

{
	int a;
	double f;
	cout<<"input an integer number:";
	cin>>a;
	f = Factorial(a);
	cout<<a<<"!="<<f<<endl;

	return 0;
}
double Factorial(int n)
{
	double fact;
	if(n == 0)
		fact = 1;
	else
		fact = n * Factorial(n - 1);

	return fact;
}


例5.16

#include<iostream>
using namespace std;

const N = 8;
long fibo(int n);

int main()
{
	long f = fibo(N);
	cout<<"Fibonacci数列第8项的值为: "<<f<<endl;

	return 0;
}
long fibo(int n)
{
	if(n == 1)return 1L;
	else if(n == 2)return 1L;
	else
		return fibo(n - 1) + fibo(n - 2);
}


例5.17

#include<iostream>
using namespace std;

int i;

int main()
{
	i=5;
	{
		int i;
		i=7;
		cout<<"内层i= "<<i<<endl;
	}
	cout<<"外层i= "<<i<<endl;
	

	return 0;
}

例5.18

#include<iostream>
using namespace std;

int i = 1;

int main()
{
	cout<<"i = "<<i<<endl;
	int i = 5;
	cout<<"i = "<<i<<endl;
	{
		int i = 7;
		cout<<"i = "<<i<<endl;
		cout<<"i = "<<::i<<endl;
	}
	cout<<"i = "<<i<<endl;
	cout<<"i = "<<::i<<endl;

	return 0;
}

例5.19

#include<iostream>
using namespace std;

int max(int x,int y)
{
	int z;
	z = x > y? x:y;
	return z;
}

int main()
{
	extern int a,b;
	cout<<max(a,b)<<endl;

	return 0;
}

int a =13,b = -8;

例5.20

#include<iostream>
using namespace std;

void sort(int);
void echoa();
int a[5] = {6,3,9,8,2};

int main()
{
	echoa();
	sort(5);
	echoa();

	return 0;
}

void echoa()
{
	for(int i=0;i<5;i++)
		cout<<a[i]<<'\t';
	cout<<endl;
}

void sort(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;
	}
}

例5.21

#include<iostream>
using namespace std;
int a = 3,b = 5;

int main()
{
	int a = 8;
	int c;
	c = a > b? a:b;
	cout<<c<<endl;

	return 0;
}

例5.22

#include<iostream>
using namespace std;

int f(int a)
{
	auto int b = 0;
	static int c = 3;
	b++;
	c++;
	return(a + b + c);
}
int main()
{
	int a = 2,i;
	for(i = 0;i<3;i++)
		cout<<f(a)<<endl;

	return 0;
}

例5.23

#include<iostream>
using namespace std;

int fun(int);

int main()
{
	int i,k;
	cout<<"请输入一个非负整数: ";
	cin>>k;
	for(i = 1;i <= k;i++)
		cout<<i<<"!= "<<fun(i)<<endl;

	return 0;
}
int fun(int n)
{
	static int f = 1;
	f = f * n;
	return f;
}

例5.24

#include<iostream>
using namespace std;

int fun(int);

int main()
{
	int i,k;
	cout<<"请输入一个非负整数: ";
	cin>>k;
	for(i = 1;i <= k;i++)
		cout<<i<<"!= "<<fun(i)<<endl;

	return 0;
}
int fun(int n)
{
	register int i,f = 1;
	for(i = 1;i <= n;i++)
		f = f * i;

	return f;
}

例5.25

#include<iostream>
using namespace std;

int a;
int power(int n);

int main()
{
	int b = 3,c,d,m;
	cout<<"enter a and m: "<<endl;
	cin>>a>>m;
	c = a * b;
	cout<<"a = "<<a<<"\tb = "<<b<<"\tc = "<<c<<endl;
	d = power(m);
	cout<<"a = "<<a<<"\tm = "<<m<<"\td = "<<d<<endl;

	return 0;
}

extern int a;

int power(int n)
{
	int i,y = 1;
	for(i = 1;i <= n;i++)
		y *= a;

	return y;
}


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

习题1

#include<iostream>
#include<cmath>
using namespace std;

double squ(double x);

int main()
{
    double x;
    cout<<"Please input x: ";
    cin>>x;
    cout<<"The square root of "<<x<<" is "<<squ(x)<<endl;

    return 0;
}
double squ(double x)
{
    double s1,s2;
    s1 = 0.5 * (1.0 + x);
	do
	{
	    s2 = s1;
		s1 = (s2 + x/s2) * 0.5;
	}
	while(fabs(s2 - s1) > 1.0E-6);

	return s1;
}


习题2

#include <iostream>
using namespace std;

long int Power(int base,int exponent);

int main()
{
    int base,exponent,result;
    cout<<"任意输入一个基数:";
    cin>>base;
    cout<<"任意输入一个幂的值:";
    cin>>exponent;
    result = Power(base,exponent);
    cout <<base<<"的"<<exponent<<"次幂的值为: "<<result<<endl;
    
	return 0;
}

long int Power(int base,int exponent)
{
    int i,result=1;
    for(i=0;i<exponent;i++)
    {
        result *= base;
    }
    
	return result;
}

 

习题3

#include <iostream>
using namespace std;

void judge(int n);

int main()
{
    int n;
    cout<<"任意输入一个正整数: ";
    cin>>n;
    judge(n);
    return 0;
}
void judge(int n)
{
    int i,judge=0;
    for(i=2;i<n;i++)
        if(n%i == 0)
        {
            cout<<n<<" 不是素数.\n";
            judge++;
            break;
        }
		if(judge == 0)
			cout<<n<<" 是素数.\n";
}


习题4

#include<iostream>
using namespace std;

int fun(int num);

int main()
{
    int num,result;
    cout<<"请输入一个整数: ";
    cin>>num;
    result = fun(num);
    cout <<"颠倒后结果为:"<<result<<endl;
    
	return 0;
}
int fun(int num)
{
    int result = 0;
    while(num)
    {
        result += num % 10;
        num = num / 10;
        result *= 10;
    }
    result /= 10;
    return result;
}

习题5

#include <iostream>
using namespace std;

void fun(int num);

int main()
{
    int num;
    cout<<"请输入0到100之间的分数: ";
    cin>>num;
    fun(num);
    
	return 0;
}

void fun(int num)
{
    if(num>=90)
        cout <<"该分数对应的等级代号为A."<<endl;
    else if(num>=80)
        cout <<"该分数对应的等级代号为B."<<endl;
    else if(num>=70)
        cout <<"该分数对应的等级代号为C."<<endl;
    else if(num>=60)
        cout <<"该分数对应的等级代号为D."<<endl;
    else
        cout <<"该分数为不及格."<<endl;
}

习题6


习题7

#include <iostream>
using namespace std;

int divisor(int n1,int n2);
int multiple(int n1,int n2);

int main()
{
    int n1,n2,C_d,C_m,fac;
    cout<<"任意输入第一个整数: ";
    cin>>n1;
    cout<<"任意输入第二个整数: ";
    cin>>n2;
    if(n1<n2)
    {
        fac = n1;
        n1 = n2;
        n2 = fac;
    }
    C_d = divisor(n1,n2);
    C_m = multiple(n1,n2);
    cout<<"这两个整数的最大公约数是: "<<C_d
		<<"  ,最小公倍数是: "<<C_m<<endl;
}

int divisor(int n1,int n2)
{
    int C_d = 0;
    while(n1 % n2 != 0)
    {
        C_d = n1 % n2;
        n1 = n2;
        n2 = C_d;
    }
    return C_d;
}

int multiple(int n1,int n2)
{
    int C_m;
    if(n1 % n2 == 0)
        C_m = n1;
    else
        C_m = (n1 * n2)/divisor(n1,n2);
    return C_m;
}


习题8

(1)

#include <iostream>
using namespace std;

int main()
{
    cout<<"9行9列乘法表全部输出为:\n";
	int fac_1,fac_2,pro;
    for(fac_2=1;fac_2 <= 9;fac_2++)
    {
        for(fac_1=1;fac_1 <= fac_2;fac_1++)
        {
            pro=(fac_1 * fac_2);
            cout<<fac_1<<"×"<<fac_2<<"="<<pro<<" ";
        }
        cout<<endl;
    }
    
	return 0;
}

(2)


(3)


习题9

 

习题10

#include<iostream>
using namespace std;

void func();
int n = 1;

int main()
{
    static int a;
	int b = -10;
	cout<<"a: "<<a<<"\tb: "<<b<<"\tn: "<<n<<endl;
	b += 4;
	func();
	cout<<"a: "<<a<<"\tb: "<<b<<"\tn: "<<n<<endl;
	n += 10;
	func();

	return 0;
}

void func()
{
	static int a = 2;
	int b = 5;
	a += 2;
	n += 12;
	b += 5;
	cout<<"a: "<<a<<"\tb: "<<b<<"\tn: "<<n<<endl;
}


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


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

#include <iostream>
using namespace std;

int count(int n);
int fac(int n);

int main()
{
    int n,add;
    cout<<"任意输入一个整数n: ";
    cin>>n;
    add = count(n);
    cout<<"S[n]=1!+2!+…+n! = "<<add<<endl;
    
	return 0;
}

int fac(int n)
{
    int i,add=n;
    for(i = n-1;i>0;i--)
        add *= i;
    return add;
}

int count(int n)
{
    int i,add=0;
    for(i=n;i>0;i--)
		add += fac(i);
    return add;
}

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

#include<iostream>  
using namespace std;  

void htod()
{
	int num;
	cout<<"任意输入一个十六进制数为:  ";
    cin>>hex>>num;
	cout<<dec<<"输出其相应的十进制数为:  "<<num<<endl;
	cout<<endl;
}

int main()  
{
	htod();

	return 0;  
}



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值