MOOC哈工大2020C语言程序设计精髓编程题第二周

1 输出逆序数(3分)

题目内容:

从键盘任意输入一个3位整数,编程计算并输出它的逆序数忽略整数前的正负号)。例如,输入-123,则忽略负号,由123分离出其百位1、十位2、个位3,然后计算3*100+2*10+1 = 321,并输出321。

提示:

1. 从键盘输入数据可以使用函数scanf()。例如,scanf("%d", &x); 表示从键盘输入整数并存入整形变量x中。

2. 利用取绝对值函数 fabs()忽略输入数据的负号。fabs(x)表示计算变量x的绝对值。

3.使用数学函数,需要在程序开头加上编译预处理指令 #include <math.h>

#include <stdio.h>
#include <math.h>

int main() {
    //用户输入的三位数
    int x;
    //逆序数
    int y;
    //获取键盘输入
    scanf("%d",&x);
    //转换成绝对值
    x = fabs(x);
    //判断是否为3位数
    if(100 <= x && x <= 999){
        int a,b,c;
        //百位
        a = x / 100;
        //十位
        b = x /10 %10;
        //个位
        c = x % 10;
        y = c * 100 + b * 10 + a;
    }
    printf("Input x:\n");
    printf("y=%d\n",y);
    return 0;
}

2 计算总分和平均分(3分)

题目内容:

小明本学期共有5门课程,分别是英语、语文、数学、历史和音乐。5科的期中考试成绩分别是86分、74分、92分、77分、82分,期末考试成绩分别是81分、87分、90分、62分、88分。已知期中和期末考试成绩分别占总成绩的30%和70%。定义相应的变量存放各科成绩,并计算出小明5门课程的总分和平均分。要求平均分输出两种形式:带2位小数的浮点数形式和不带小数的整数形式。要求总分输出带2位小数的浮点数形式。程序中浮点数的数据类型均为float类型。

提示:

输出不带小数的平均分的整数形式可以使用强制类型转换。

#include <stdio.h>

int main(){
    //期中
    float midtermEnglish = 86,midtermChinese = 74,midtermMath = 92,midtermHistory = 77,midtermMusic = 82;
    //期末
    float termEndEnglish = 81,termEndChinese = 87,termEndMath = 90,termEndHistory = 62,termEndMusic = 88;
    float total,average;
    total = (midtermEnglish + midtermChinese + midtermMath + midtermHistory + midtermMusic )  * 0.3 + (termEndEnglish + termEndChinese + termEndMath + termEndHistory + termEndMusic) * 0.7;
    average = total / 5;
    printf("total=%.2f\n",total);
    printf("average=%.2f\n",average);
    printf("average=%d\n",(int)average);
    return 0;
}

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

题目内容:

设银行定期存款的年利率rate为2.25%,已知存款期为n年,存款本金为capital元,试编程计算并输出n年后的本利之和deposit。程序中所有浮点数的数据类型均为double类型。

提示:

1. 从键盘输入数据可以使用函数scanf()。本例中为scanf("%lf,%d,%lf", &rate, &n, &capital);

2. 本程序最终计算的是复利。

3. 计算幂的数学函数为pow(a,n), 代表a的n次幂。

4. 使用数学函数,需要在程序开头加上编译预处理指令 #include <math.h>

#include <stdio.h>
#include <math.h>

int main(){
    double  capital,rate,deposit;
    int year;
    printf("Please enter rate, year, capital:\n");
    scanf("%lf,%d,%lf",&rate,&year,&capital);
    //deposit=pow((1.0 + rate),year)*capital;
    for (; year > 0; year--) {
        capital = capital + (capital  * rate);
    }
    deposit = capital;
    printf("deposit=%.3f\n",deposit);
    return 0;
}

4 数位拆分v1.0(3分)

题目内容:

现有一个4位数的正整数n=4321(即n是一个已知的数,固定为4321),编写程序将其拆分为两个2位数正整数43和21,计算并输出拆分后的两个数的加、减、乘、除求余的结果。例如n=4321,设拆分后的两个整数为a,b,则a=43,b=21。除法运算结果要求精确到小数点后2位,数据类型为float

#include <stdio.h>

int main(){
    int num = 4321;
    int a,b;
    int num1,num2,num3,num4;
    //千位
    num4 = num / 1000;
    //百位
    num3 = (num / 100) % 10;
    //十位
    num2 = (num % 100) / 10;
    //个位
    num1 = num % 10;
    a = num4 * 10 + num3;
    b = num2 * 10 + num1;
    printf("a=%d,b=%d\n",a,b);
    printf("a+b=%d\n",a + b);
    printf("a-b=%d\n",a - b);
    printf("a*b=%d\n",a * b);
    printf("a/b=%.2f\n",(float)a / b);
    printf("a%%b=%d\n",a % b);
    return 0;
}

5 求正/负余数(3分)

题目内容:

在C语言中,如果被除数为负值,则对一个正数求余的时候,求出的余数也是一个负数。在某些场合下,我们需要求出它的正余数,例如:在C语言中有(-11)%5=-1,但是有时我们希望得到的余数不是-1,而是4。请编写程序计算(-11)%5的负余数正余数

#include <stdio.h>

int main(){
    int x,y;
    x = -11;
    y = 5;
    printf("negative: %d\n",x % y);
    printf("positive: %d\n",x % y + y);
    return 0;
}

6 身高预测(3分)

题目内容:

已知小明(男孩)爸爸的身高是175厘米,妈妈的身高是162厘米。小红(女孩)爸爸的身高是169厘米,妈妈的身高是153厘米,按照下面公式,预测并输出小明和小红的遗传身高(不考虑后天因素)。

         男性成人时身高=(faHeight + moHeight)×0.54cm

         女性成人时身高=(faHeight×0.923 + moHeight)/2cm

#include <stdio.h>

int main(){
    int man = (175 + 162) * 0.54;
    int woman = (169 * 0.923 + 153) / 2;
    printf("Height of xiao ming:%d\n",man);
    printf("Height of xiao hong:%d\n",woman);
    return 0;
}

7 求一元二次方程的根(3分)

题目内容:

根据下面给出的求根公式,计算并输出一元二次方程的两个实根,要求精确到小数点后4位。程序中所有浮点数的数据类型均为float.

 

 

 

提示:

1. 计算平方根的数学函数为sqrt()。

2. 使用数学函数,需要在程序开头加上编译预处理指令 #include <math.h>

#include <stdio.h>
#include <math.h>

int main(){
    float  x1,x2;
    x1=(-3+sqrt(-3*-3-4*2*1))/(float)(2*2);
    x2=(-3-sqrt(-3*-3-4*2*1))/(float)(2*2);//强制转换
    printf( "x1=%.4f\n",x1);
    printf( "x2=%.4f\n",x2);
    return 0;
}

 

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言程序设计精髓MOOC》第三周主要内容是关于指针和数组的学习。 首先是指针的介绍和使用。指针是C语言中一个非常重要的概念,它可以用来间接访问内存中的数据,通过指针可以实现对变量地址的操作。在学习过程中,我们了解了指针的定义和声明,以及指针与数组之间的关系。指针在程序设计中的应用非常广泛,特别是在动态内存分配和函数调用等方面,有着重要的作用。 其次是数组的使用。数组是一种由相同类型的元素组成的集合,它在C语言中非常常用。在第三周的学习中,我们了解了数组的定义、初始化和遍历等基本操作,还学习了一些在数组中常用的算法和技巧。通过多维数组和指针数组的学习,我们可以更灵活地处理多个数据。 除了指针和数组,第三周还涉及到了C语言中的结构体(struct)和文件的输入输出操作等内容。结构体是一种可以封装多个不同类型的数据的自定义数据类型,它在实际的程序设计中经常被用于组织和管理数据。文件的输入输出操作涉及了C语言中如何读写文件以及相关的文件处理函数等知识点。 通过学习《C语言程序设计精髓MOOC》第三周的内容,我们对指针和数组有了更深入的认识,并且掌握了它们的基本用法和应用技巧。这对于进一步学习和理解C语言程序设计以及其他高级编程语言都非常有帮助。此外,通过作业和练习的完成,我们可以检验和巩固所学的知识,提高我们自己的编程能力。希望通过这门课程的学习,能够让我们对C语言有更全面和深入的了解,为以后的学习和工作打下坚实的基础。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值