MOOC哈工大2020C语言程序设计精髓编程题在线测试第四周

1 分数比较(4分)

题目内容:

利用人工方式比较分数大小的最常见的方法是:对分数进行通分后比较分子的大小。请编程模拟手工比较两个分数的大小。首先输入两个分数分子分母的值,例如"11/13,17/19",比较分数大小后输出相应的提示信息。例如,第一个分数11/13小于第二个分数17/19,则输出"11/13<17/19"。

int main(){
    int a,b,c,d;
    printf("Input a/b, c/d:" );
    scanf("%d/%d,%d/%d",&a,&b,&c,&d);
    if((float) a / b > (float) c / d){
        printf("%d/%d>%d/%d\n",a,b,c,d);
    } else if((float) a / b < (float) c / d){
        printf("%d/%d<%d/%d\n",a,b,c,d);
    } else{
        printf("%d/%d=%d/%d\n",a,b,c,d);
    }
    return 0;
}

2 存款利率计算器v2.0(4分)

题目内容:

 

 设capital是最初的存款总额(即本金),rate是整存整取的存款年利率,n 是储蓄的年份,deposit是第n年年底账号里的存款总额。已知如下两种本利之和的计算方式:

  • 按复利方式计息的本利之和计算公式为:

               

  • 按普通计息方式计算本利之和的公式为:

              deposit  =  capital  * (1 + rate * n)

    编程从键盘输入存钱的本金、存款期限以及年利率,然后再输入按何种方式计息,最后再计算并输出到期时能从银行得到的本利之和,要求结果保留到小数点后4位。

提示:使用数学函数需要加入头文件 <math.h>

int main(){
    double rate,capital,deposit;
    int year;
    char c;
    printf("Input rate, year, capital:");
    scanf("%lf,%d,%lf",&rate,&year,&capital);
    printf("Compound interest (Y/N)?");
    scanf(" %c",&c);
    if(c == 'Y' || c == 'y'){
        deposit = pow((1.0 + rate),year) * capital;
    } else{
        deposit = capital * (1 + rate * year);
    }
    printf("deposit = %.4f\n",deposit);
    return 0;
}

3 存款利率计算器v3.0(9分)

题目内容:

设capital是最初的存款总额(即本金),rate是整存整取的存款年利率,n 是储蓄的年份,deposit是第n年年底账号里的存款总额。已知如下两种本利之和的计算方式:

  • 按复利方式计息的本利之和计算公式为:

               

  • 按普通计息方式计算本利之和的公式为:

              deposit  =  capital  * (1 + rate * n)

已知银行整存整取不同期限存款的年息利率分别为:

存期1年,利率为 0.0225

存期2年,利率为 0.0243

存期3年,利率为 0.0270

存期5年,利率为 0.0288

存期8年,利率为 0.0300

若输入其他年份,则输出"Error year!"

编程从键盘输入存钱的本金和存款期限,然后再输入按何种方式计息,最后再计算并输出到期时能从银行得到的本利之和,要求结果保留到小数点后4位。

int main(){
    double capital,deposit,rate;
    int year;
    char c;
    printf("Input capital, year:");
    scanf("%lf,%d",&capital,&year);
    printf("Compound interest (Y/N)?");
    scanf(" %c",&c);
    if(c == 'y' || c == 'Y') {
        switch (year) {
            case 1:
                rate = 0.0225;
                deposit = capital * pow((1.0 + rate),year);
                break;
            case 2:
                rate = 0.0243;
                deposit = capital * pow((1.0 + 0.0243),year);
                break;
            case 3:
                rate =  0.0270;
                deposit = capital * pow((1.0 + rate),year);
                break;
            case 5:
                rate =  0.0288;
                deposit = capital * pow((1.0 + rate),year);
                break;
            case 8:
                rate =  0.0300;
                deposit = capital * pow((1.0 + rate),year);
                break;
            default:
                printf("Error year!\n");
                return 0;
        }
    } else{
        switch (year) {
            case 1:
                rate = 0.0225;
                deposit = capital * (1.0 + rate * year);
                break;
            case 2:
                rate = 0.0243;
                deposit = capital * (1.0 + rate * year);
                break;
            case 3:
                rate =  0.0270;
                deposit = capital * (1.0 + rate * year);
                break;
            case 5:
                rate =  0.0288;
                deposit = capital * (1.0 + rate * year);
                break;
            case 8:
                rate =  0.0300;
                deposit = capital * (1.0 + rate* year);
                break;
            default:
                printf("Error year!\n");
                return 0;
        }
    }
    printf("rate = %.4f, deposit = %.4f\n",rate,deposit);
    return 0;
}

4 博弈论之Best Response(6分)

题目内容:

在博弈论中,有一种决策称为Best Response,通俗的意思就是选择一种策略使得团体利益最大化。C语言学习成绩的评定方式分为两种,一种是自由刷题模式(compete),没有固定标准,刷题越多者排名越靠前,其期末分数越高;另一种是规定每个人必须做够多少道题(standard),达到要求就能取得相应分数。

假设一个班级中的学生分为A、B两类,A类同学学习热情很高,乐于做题,采用compete模式可以获得成就感并且在期末拿到高分,compete模式可以让他们有10分的收益;采用standard模式他们也可以在期末拿到高分,但不能满足他们的求知欲,standard模式可以让他们有8分的收益。B类同学仅仅希望期末拿高分,如果采用compete模式,他们竞争不过A类同学,期末成绩不理想,因此compete模式能给他们6分的收益;如果采用standard模式,他们可以完成规定任务并拿到高分,因此standard模式可以让他们有10分的收益。

编程输入A类和B类同学分别占班级总人数的百分比,分别计算并输出采用compete和standard两种刷题模式下的全班总收益,并输出这个班级在这场博弈中的Best Response是哪种模式。

注: 程序中使用的数据类型为float

int main(){
    float a,b,compete,standard;
    printf("Input percent of A and B:");
    scanf("%f%f",&a,&b);
    compete = a * 10 + b *6;
    standard = a * 8 + b *10;
    printf("compete = %.4f\nstandard = %.4f\n",compete,standard);
    if(compete <= standard){
        printf("The Best Response is standard!");
    } else{
        printf("The Best Response is compete!");
    }
    return 0;
}

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在博弈论中,有一种决策称为Best Response,通俗的意思就是选择一种策略使得团体利益最大化。C语言学习成绩的评定方式分为两种,一种是自由刷题模式(compete),没有固定标准,刷题越多者排名越靠前,其期末分数越高;另一种是规定每个人必须做够多少道题(standard),达到要求就能取得相应分数。 假设一个班级中的学生分为A、B两类,A类同学学习热情很高,乐于做题,采用compete模式可以获得成就感并且在期末拿到高分,compete模式可以让他们有10分的收益;采用standard模式他们也可以在期末拿到高分,但不能满足他们的求知欲,standard模式可以让他们有8分的收益。B类同学仅仅希望期末拿高分,如果采用compete模式,他们竞争不过A类同学,期末成绩不理想,因此compete模式能给他们6分的收益;如果采用standard模式,他们可以完成规定任务并拿到高分,因此standard模式可以让他们有10分的收益。 编程输入A类和B类同学分别占班级总人数的百分比,分别计算并输出采用compete和standard两种刷题模式下的全班总收益,并输出这个班级在这场博弈中的Best Response是哪种模式。 【注】程序中使用的数据类型为float 程序运行结果示例1: Input percent of A and B:0.2 0.8↙ compete = 6.8000 standard = 9.6000 The Best Response is standard! 程序运行结果示例2: Input percent of A and B:0.8 0.2↙ compete = 9.2000 standard = 8.4000 The Best Response is compete! 程序运行结果示例3: Input percent of A and B:0.5 0.5↙ compete = 8.0000 standard = 9.0000 The Best Response is standard! 输入提示信息:"Input percent of A and B:" 输入格式:"%f%f" 输出格式:"compete = %.4f\nstandard = %.4f\n" 输出提示信息:"The Best Response is compete!" 输出提示信息:"The Best Response is standard!"
慕课哈工大C语言第五周马克思手稿中的趣味数学题是一道有趣且具有挑战性的数学问题。这个问题是这样描述的:给定一个三位数n,将其个位数、十位数和百位数分别记作a、b和c,然后按照以下公式进行计算:n = a^3 + b^3 + c^3。如果计算结果等于n本身,则称该数为完全立方数。 这个问题需要我们编写程序,将所有的三位数都进行计算,并判断它们是否为完全立方数。代码的实现思路是使用三层循环,分别遍历所有的个位数、十位数和百位数的可能取值,然后计算并判断是否为完全立方数。具体代码如下: ```c #include <stdio.h> int main() { int n, a, b, c; for (n = 100; n <= 999; n++) { a = n % 10; // 取个位数 b = (n / 10) % 10; // 取十位数 c = n / 100; // 取百位数 if(n == (a * a * a + b * b * b + c * c * c)) { printf("%d 是完全立方数\n", n); } } return 0; } ``` 这段代码使用了一个for循环,从100到999遍历所有的三位数。在每次循环中,通过取余和除法操作分别得到该数的个位数、十位数和百位数,并计算它们的立方和。然后,通过if语句判断计算结果是否等于原数n,如果相等,则输出该数是完全立方数。 通过运行这段代码,我们可以得到所有的完全立方数,即153和370。这个问题展示了编程在解决数学问题中的应用,同时也让我们了解到了完全立方数的概念和计算方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值