高级语言程序设计-实验9 函数的应用(2)

二、堂下练习
1、[填空题]函数定义
下面是使用辗转相除法,求最大公约数的程序,请补充完整程序中函数的定义与调用,运行通过后提交代码。

#include  "stdio.h"
____________________
{
    int  r;
    while ((r=m%n)!=0)
    {
        m=n;
        n=r;
    }
    return  n;
}
main()
{
    int  a, b, n;
    scanf("%d%d", &a, &b);
    printf("%d\n", _______________________);
}
输入样例
24 16
输出样例
8

思路:辗转相除法
在这里插入图片描述
答案:

#include  "stdio.h"
int abc(int m,int n){
    int  r;
    while ((r=m%n)!=0)
    {
        m=n;
        n=r;
    }
    return  n;
}
main()
{
    int  a, b, n;
    scanf("%d%d", &a, &b);
    printf("%d\n", abc(a,b));
}

2、求函数值

题目:Description 输入x(x为整数),求函数值。
函数定义如下:
F(x)=x          	             x小于3
F(x)=F(x/3)*2   	             x大于等于3且x为3的倍数
F(x)=F((x-1)/3)+1   	         x大于等于3且x除3余1
F(x)=F((x-2)/3)+2   	         x大于等于3且x除3余2
输入样例
20
输出样例
6
#include<stdio.h>
 
int F(int x){
    if(x<3)
        return x;
    else if(x>=3 && x%3 == 0)
        return F(x/3)*2;
    else if(x>=3 && x%3 == 1)
        return F((x-1)/3)+1;
    else if(x>=3 && x%3 == 2)
        return F((x-2)/3)+2;
}
 
int main (){
    int a;
    scanf("%d",&a);
    printf("%d\n",F(a));
    return 0;
}
发布了10 篇原创文章 · 获赞 1 · 访问量 190

猜你喜欢

转载自blog.csdn.net/weixin_39475542/article/details/105044211
今日推荐