上海海事大学自动化专业C语言课程代码参考(第四周)

什么?你问我为什么第五周才发第四周的作业?

啊啊啊,国庆假期谁想写作业啊!而且不是第五周来看的话,也没有意识到有第四周的作业。

上机实验

虽然放在上机实验里面,但是这明明就是写题啊Kora!

教材P53 三 1

这种问代码运行结果的题目啊,最简单的办法就是编译运行

结合上次我们学习ASCII码的经验,这其实就是一个小写转大写。

输入

a

输出

A

教材P54 三 2

注意这题输出是带空格的,但csdn貌似不支持等宽字体,在此就直接截图了

 教材P54 四 1

这一题莫名眼熟,好像写过两次了…?

结合已有代码很容易得出两空分别为

&a

a / 100

教材P54 四 2

这一题之前也貌似写过类似的

sqrt

.6f

教材P54 五 2

已知三角形三边求面积

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

int main()
{
    float a, b, c, S, l;

    scanf("%f%f%f", &a, &b, &c);
    l = (a + b + c) / 2;
    S = sqrt(l * (l - a) * (l - b) * (l - c));
    printf("%.2f", S);

    return 0;
}

比较简单

补充题 加减乘除(二)

要求:输入两个整数,输出其和差积商

输入

8 6

输出

8 + 6 = 14
8 - 6 = 2
8 * 6 = 48
8 / 6 = 1.33

没有什么难度,直接看代码吧

#include <stdio.h>

int main()
{
    int a, b;

    scanf("%d%d", &a, &b);
    printf("%d + %d = %d\n", a, b, a + b);
    printf("%d - %d = %d\n", a, b, a - b);
    printf("%d * %d = %d\n", a, b, a * b);
    printf("%d / %d = %.2f\n", a, b, (float)a / b);

    return 0;
}

补充题 计算存款利息

要求:根据公式

interest = money*(1+rate)^{year}-money

其中interest为利息,money是本金,year是存期,rate是利率

输入money、year、rate

1000 3 0.025

输出

interest = 76.89

这道题出现了x的y次幂的形式,这需要一个函数pow()点击查看函数介绍

利用这一函数我们就可以很轻松地还原公式。见代码

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

int main()
{
    float interest, money, rate, year;

    scanf("%f%f%f", &money, &year, &rate);
    interest = money * pow((1 + rate), year) - money;
    printf("interest = %.2f", interest);

    return 0;
}

可能有同学察觉到不对劲了,为什么不能写成

(1 + rate)^ year

这也是n次幂的写法啊

确实如此。但是若用这种办法,那么year只能是整形,为了兼容刁钻客户的古怪需求,咱就用pow()函数,以适应浮点型输入

补充题 然后是几点

要求:有时候人们用四位数字表示一个时间,比如1106表示11点零6分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。
读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表示分钟数,计算当前时间经过那么多分钟后是几点,结果也表示为四位数字。当小时为个位数时,没有前导的零,即5点30分表示为530。注意,第二个数字表示的分钟数可能超过60,也可能是负数。

输入

1120 110

输出

1310

这道题最难的应该是负的处理,在此我将时间分为了时和分来分别处理。由于不到一个小时的负数(如-30)除60并不能得到-1以改变小时,所以有两种思路。第一种是增加一步假设是负数的判断,即再原来的分的基础上加上六十,再进行处理,就可以将复数转换成正数。另一种是加一个if判断。if判断更加简单,不过在实践上建议还是假设就是负数,能更加节约资源。

在此我使用的方法是if判断。见代码

#include <stdio.h>

int main()
{
    int hours, minutes, addMin, time;

    scanf("%d%d", &time, &addMin);
    hours = addMin / 60 + time / 100;
    minutes = addMin % 60 + time % 100 % 60;
    hours += minutes / 60;
    minutes = minutes % 60;//此时有可能存在负值,但会在-60以内
    if (minutes < 0)
    {
        hours -= 1;
        minutes += 60;
    }
    time = hours * 100 + minutes;//负值可能会影响结果

    printf("%d", time);

    return 0;
}

结语

当时好像并没有学if()语句,但是代码里有使用到……不知道会不会有点唐突

第四周作业写完了,马上开始写第五周(悲

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值