实验七 函数题答案(自存)

6-1 sdut-C语言实验-计算组合数

计算组合数。C(n,m),表示从n个数中选择m个的组合数。
计算公式如下:
若:m=0,C(n,m)=1
否则, 若 n=1,C(n,m)=1
否则,若m=n,C(n,m)=1
否则 C(n,m) = C(n-1,m-1) + C(n-1,m).

函数接口定义:

在这里描述函数接口。例如: int fun(int n,int m);

其中 n 和 m 都是用户传入的参数(0 <= m <= n <= 20)。

int fun(int n,int m){
    int cheng;
    int i;
    int s=1;
    int x=1;
    if(m==0||n==1||m==n)return 1;
    else return fun(n-1,m-1)+fun(n-1,m);
       }

 

6-2 sdut-C语言实验- n个数的排序

Qiao当上了体育委员,现在老师让他去给班级里的人排队,Qiao刚学了排序,所以他想以这种方式给班级里的人排队(从矮到高),他想知道排序完成后的结果。

函数接口定义:

void sort(int *p,int n);

其中 p 和 n 都是用户传入的参数。 p 的值为传递过来的地址; n 的为正整数(1<=n<=100)。函数不需要返回数据。

 

void sort(int *p,int n){
    int i,j,t;
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            if(*(p+j)>=*(p+j+1)){
                t=*(p+j);
                *(p+j)=*(p+j+1);
                *(p+j+1)=t;
            }
        }
    }
    
}

6-3 sdut- C语言实验——矩阵下三角元素之和

输入一个正整数n(1<=n<=10),再输入n*n的矩阵,要求求该矩阵的下三角元素之和。

函数接口定义:

int f(int (*p)[10],int n);

其中 p 和 n 都是用户传入的参数。 p 的值为地址; n 是[1, 10]区间内的个位数。函数不需要返回数据。

 


int  f(int (*p)[10],int n){
    
    int i,j,sum;
  for(int i=0;i<n;i++){
      for(int j=0;j<=i;j++){
          sum+=p[i][j];
      }
  }  
    return sum;
}

6-4 sdut-C语言实验- N!

long long int f(long long int n)
{
    long long int fac=1;
    for(long long int i=1;i<=n;i++){
        fac*=i;
    }
    return fac;
}

 

6-5 sdut-C语言实验-使用函数验证哥德巴赫猜想

本题要求实现一个判断素数的简单函数,并利用该函数验证哥德巴赫猜想:任何一个不小于6的偶数均可表示为两个奇素数之和。素数就是只能被1和自身整除的正整数。输入一个不小于6的偶数n,找出两个素数,使它们的和为n。注意:1不是素数,2是素数。

函数接口定义:

int isPrime( int x ); void Goldbach( int n );

int prime(int p)
{
    int flag=1;
    if(p==1) flag=0;
    else
    {
        for(int i=2;i<=sqrt(p);i++)
        {
            if(p % i == 0)
            {
                flag=0;
                break;
            }
        }
    }
    return flag;
}
 
void Goldbach( int n )
{
    for(int i=2;i<n;i++)
    {
       if(prime(i)==1 && prime(n-i)==1 && i<=(n-i))
       {
           printf("%d=%d+%d",n,i,n-i);
           break;
       }
    }
}

 

6-6 sdut-C语言实验- 求数列的和

列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和。
提示:因为自定义函数中用到数学函数,因此本题目的提交答案需要包括头文件在内的主函数和自定义函数。

#include<stdio.h>
#include<math.h>
double f(int n,int m);
int main()
{

    int n,m;

    while(~scanf("%d %d",&n,&m))
    {
        printf("%.2lf\n",f(n,m));
    }

    return 0;
}

double f(int n,int m)
{
    double j=n,i;
    double sum=0;

    for(i=0;i<m;i++)
    {
        sum=sum+j;
        j = sqrt(j);
    }

    return sum;
}

6-7 递归实现顺序输出整数

本题要求实现一个函数,对一个整数进行按位顺序输出。

函数接口定义:

void printdigits( int n );

函数printdigits应将n的每一位数字从高位到低位顺序打印出来,每位数字占一行。

void printdigits(int n){
   if(n/10==0)printf("%d\n",n);
   else {
       printdigits(n/10);
       printf("%d\n",n%10);
   }
} 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值