第7周编程题在线测试

这篇博客包含了多个编程题目,涉及递归计算年龄、最大公约数、寻找中位数、解决算术表达式、计算谐均值、输出字符矩阵、魔术师猜数游戏、礼炮声响次数及水手分椰子问题。通过这些题目,读者可以锻炼编程思维和算法能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

递归法计算游戏人员的年龄

题目内容:
有n个人围坐在一起,问第n个人多大年纪,他说比第n-1个人大2岁;问第n-1个人,他说比第n-2个人大2岁,…..,问第3个人,他说比第2个人大2岁;问第2个人,他说比第1个人大2岁。第1个人说自己10岁,问第n个人多大年纪。
递归函数原型:unsigned int ComputeAge(unsigned int n);
提示:
计算年龄的递归公式为:

输入格式: “%u”
输出格式: “The person’s age is %u\n”

输入样例1:
5↙
输出样例1:
The_person’s_age_is_18
输入样例2:
10↙
输出样例2:
The_person’s_age_is_28

#include <stdio.h>

unsigned int ComputeAge(unsigned int n);

int main()
{
    unsigned int age;
    scanf("%u", &age);
    printf("The person's age is %u\n", ComputeAge(age));
    return 0;
}

unsigned int ComputeAge(unsigned int n)
{
    if(n == 1)
        return 10;
    else
    {
        return ComputeAge(n - 1)+2;
    }
}

递归法计算两个数的最大公约数

题目内容:
利用最大公约数的性质计算。对正整数a和b,当a>b时,若a中含有与b相同的公约数,则a中去掉b后剩余的部分a-b中也应含有与b相同的公约数,对a-b和b计算公约数就相当于对a和b计算公约数。反复使用最大公约数的上述性质,直到a和b相等为止,这时,a或b就是它们的最大公约数。这三条性质,也可以表示为:
性质1 如果a>b,则a和b与a-b和b的最大公约数相同,即Gcd(a, b) = Gcd(a-b, b)
性质2 如果b>a,则a和b与a和b-a的最大公约数相同,即Gcd(a, b) = Gcd(a, b-a)
性质3 如果a=b,则a和b的最大公约数与a值和b值相同,即Gcd(a, b) = a = b

程序运行结果示例1:
Input a,b:16,24↙
8

程序运行结果示例2:
Input a,b:-2,-8↙
Input error!

输入提示信息:”Input a,b:”
输入格式:”%d,%d”
输出格式:
输出最大公约数:”%d\n”
输入错误提示信息:”Input error!\n”

#include <stdio.h>

int Gcd(int i, int j);

int main()
{
    int a, b;
    int c;
    printf("Input a,b:");
    scanf("%d,%d", &a, &b);
    c = Gcd(a, b);
    if (c == -1)
    {
        printf("Input error!\n");
    }
    else
    {
        printf("%d\n", c);
    }
    return 0;
}
int Gcd(int i, int j)
{
    if (i <= 0 || j <= 0)
    {
        return -1;
    }
    else
    {
        if(i == j)
        {
            return i;
        }
        else if (i > j)
        {
            return Gcd(i - j, j);
        }
        else
        {
            return Gcd(i, j - i);
        }
    }
}

寻找中位数v1.0

题目内容:
编写一个函数返回三个整数中的中间数。函数原型为: int mid(int a, int b, int c);
函数功能是返回a,b,c三数中大小位于中间的那个

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值