上海海事大学自动化专业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是本金,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()语句,但是代码里有使用到……不知道会不会有点唐突
第四周作业写完了,马上开始写第五周(悲
更多推荐


所有评论(0)