第八周作业(总)

第五章 函数学习要求和实验

  • 学习要求

理解函数定义的意义。

掌握函数定义格式。

了解函数调用方式:值调用和引用调用。

掌握函数嵌套调用方法。

掌握数组作为函数的参数的使用。

理解全局变量、局部变量,动态变量、静态变量的概念,掌握不同变量的作用域与生命周期。

进一步积累程序调试经验。
  •  实验作业

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

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

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

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

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

例题1:

#include<iostream>    
using namespace std;    
double p(double);    
  int main()    
{    
    double s = p(5.0);    
    cout<<"面积为"<<s<<endl;    
    return 0;    
}    
  double p(double r)    
{    
    double pi =3.14;    
    double s =pi *r*r;    
    return s;  }  
4  
#include<iostream>    
using namespace std;    
  int sum(int x,int y)    
{    
      int t;t=x+y;  
      return t;}  
  int main()  
  {  
      int a,b,c;  
      a=15,b=20;  
      c=sum(a,b);  
      cout<<a<<"+"<<b<<"="<<c<<endl;  
      return 0;  
  }  
例题2:
#include<iostream>    
using namespace std;    
    
 int f(int);  
 int main()  
 {  
     int i,k;  
     cout<<"输入一个非负整数:";  
         cin>>k;  
     for(i=1;i<=k;i++)  
         cout<<i<<"!="<<f(i)<<endl;  
     return 0;}  
 int f(int n)  
 {  
     static int f=1;f=f*n;  
     return f;  
 }  
例题3:

#include<iostream>    
using namespace std;    
    
int p(int x)    
{  x=x*x;  
return x;}  
int main()  
{int t=10;int s=p(t);  
cout<<"t="<<t<<'\t'<<"p("<<t<<")="<<s<<endl;  
      
    return 0;    
}  
例题4:

#include<iostream>    
using namespace std;    
    
    
void sort(int);    
void echoa();    
  
  
nt 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:

#include<iostream>    
using namespace std;    
    
float F(int n);    
  int main()    
{    
    int a;    
    float p;    
    cout<<"input an integer number:";    
    cin>>a;    
    p =F(a);    
    cout<<a<<"! ="<<p<<endl;    
   return 0;    
}    
  float F(int n)    
{    
    float fact;    
    if(n == 0)    
        fact = 1;    
    else    
      fact = n * F(n-1);    
      return fact;    
  }   
例题6:

#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;    
}    

第三题:

#include "stdafx.h"  
#include<iostream>  
#include<iomanip>  
using namespace std;  
void juz(float A[4][5],float B[5][3])  
{  
    int i,j,k;  
    float c[4][3]={0},t=0;  
    for(i=0;i<4;i++)  
        for(j=0;j<3;j++)      
            for(k=0;k<5;k++)      
            {      
                t=A[i][k]*B[k][j];      
                c[i][j]+=t;      
            }     
            cout<<"这两个矩阵的乘积为:"<<endl;  
for(i=0;i<4;i++)    
    {    
        for(j=0;j<3;j++)    
            cout<<setw(8)<<setprecision(5)<<c[i][j];    
        cout<<endl;    
    }    
}  
  
int main()  
{  
    float A[4][5],B[5][3];  
    int i,k;  
    cout<<"请输入第一个矩阵的元素"<<endl;  
    for(i=0;i<4;i++)  
        for(k=0;k<5;k++)  
            cin>>A[i][k];  
    cout<<"请输入第二个矩阵的元素"<<endl;  
    for(i=0;i<5;i++)  
        for(k=0;k<3;k++)  
            cin>>B[i][k];  
    juz(A,B);  
    return 0;  
}  

第四题:

// unit5_2.cpp : 定义控制台应用程序的入口点。  
//  
  
#include "stdafx.h"  
#include<iostream>  
using namespace std;  
int jiec(int a)  
{  
int b=1;  
while(a>=1)  
{b*=a;a--;}  
return b;  
}  
int SN(int a)  
{  
int b,S=0;  
for(b=1;b<=a;b++)  
    S+=jiec(b);  
return S;  
}  
int _tmain(int argc, _TCHAR* argv[])  
{  
    int n,Sn;  
    cout<<"请输入一个正整数"<<endl;  
    cin>>n;  
    Sn=SN(n);  
    cout<<"该数列的前"<<n<<"项和为:"<<Sn<<endl;  
    return 0;  
}  

第五题:

  
#include "stdafx.h"  
#include<iostream>  
#include<cmath>  
#include<iomanip>  
using namespace std;  
void zhuan10(int a)  
{  
int b=0,c=0,t;  
while(a>0)  
{  
    t=pow(16,c);  
b+=(a%16)*t;  
    a/=16;  
c++;  
}  
cout<<"该十六进制数转化的十进制数为:"<<b<<endl;  
}  
int _tmain(int argc, _TCHAR* argv[])  
{  
    int a;  
    cout<<"请输入一个十六进制数"<<endl;  
    cin>>hex>>a;  
    zhuan10(a);  
    return 0;  
}  



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值