在摆烂了两周之后终于跟上版本了,感人!

话不多说,直接看题吧

目录

上机实验

3-11 比较大小

输入格式:

输出格式:

输入样例:

输出样例:

3-12 输出三角形面积和周长

输入格式:

输出格式:

输入样例1:

输出样例1:

输入样例2:

输出样例2:

3-13 计算电费

输入格式:

输出格式:

输入样例1:

输出样例1:

输入样例2:

输出样例2:

输入格式:

输出格式:

输入样例1:

输出样例1:

输入样例2:

输出样例2:

输入样例3:

输出样例3:

3-15 计算个人所得税

输入格式:

输出格式:

输入样例1:

输出样例1:

输入样例2:

输出样例2:

输入样例3:

输出样例3:

输入样例4:

输出样例4:

输入样例5:

输出样例5:

3-16 计算油费

输入格式:

输出格式:

输入样例:

输出样例:

3-17 计算绝对值(二)

输入格式:

输出格式:

输入样例1:

输出样例1:

输入样例2:

输出样例2:

3-18 四则运算(二)

输入格式:

输出格式:

输入样例1:

输出样例1:

输入样例2:

输出样例2:

3-19 成绩转换(三)

输入格式:

输出格式:

输入样例:

输出样例:

3-20 计算天数

输入格式:

输出格式:

输入样例1:

输出样例1:

输入样例2:

输出样例2:

结语


上机实验

很欣慰这次终于没有书上的题了

3-11 比较大小

本题要求编写程序,将输入的任意3个整数从小到大输出。

输入格式:

输入在一行中给出3个整数,其间以空格分隔。

输出格式:

在一行中将3个整数从小到大输出,其间以“->”相连。

输入样例:

529

输出样例:

2 -> 5 -> 9

排序是非常经典的算法,要讲的话可以有很多能说道的东西。但这道题只需要给三个数排序,简单比较大小就行。不过作为第一道排序题,还是得重点关注一下排序的逻辑。

先看代码吧

#include <stdio.h>int main()
{int a, b, c, x;scanf("%d%d%d", &a, &b, &c);if(a > b){x = a;a = b;b = x;if(b > c){x = c;c = b;b = x;}}else if(b > c){x = c;c = b;b = x;}//将最大的数放到了cif(a > b){x = a;a = b;b = x;}//进行ab的排序printf("%d -> %d -> %d", a, b, c);return 0;
}

考虑到这么讲解可能会很难理解,我将debug录成了视频,大家看视频内a b c的数据变化或许会更好理解。视频如下

C语言课程代码参考(第六周)3-11debug视频

视频被csdn压缩过了,非常模糊(悲。需要原视频的可以私聊我

3-12输出三角形面积和周长

本题要求编写程序,根据输入的三角形的三条边abc,计算并输出面积和周长。注意:在一个三角形中, 任意两边之和大于第三边。三角形面积计算公式:area=√​s(sa)(sb)(sc)​​​,其中s=(a+b+c)/2。

输入格式:

输入为3个正整数,分别代表三角形的3条边abc

输出格式:

如果输入的边能构成一个三角形,则在一行内,按照下列格式输出,保留两位小数。

area = 面积; perimeter = 周长

否则,输出

These sides do not correspond to a valid triangle

输入样例1:

5 5 3

输出样例1:

area = 7.15; perimeter = 13.00

输入样例2:

1 41

输出样例2:

These sides do not correspond toa valid triangle

这与之前的算三角形面积相比只多了一个参数合法性判断,即两边之和大于第三边。

在这里我想教大家一个小技巧,就是使用写过的代码,不要重复造轮子。这可以大大减少我们写代码的量。比如这一题,若我们直接写,就是这样

#include <stdio.h>
#include <math.h>int main()
{int a, b, c;float s;scanf("%d%d%d", &a, &b, &c);if(a + b > c&& a + c > b&& b + c > a){s = (a + b + c) / 2;printf("area = %.2f, perimeter = %.2f\n", sqrt(s * (s - a) * (s - b) * (s - c)), 2 * s);}elseprintf("These sides do not correspond to a valid triangle\n");return 0;
}

但如果我们先用上一题的代码排序,需要写另外写的东西就少了很多。只要写成这样就行

#include <stdio.h>
#include <math.h>int main()
{int a, b, c, x;float s;scanf("%d%d%d", &a, &b, &c);if(a > b){x = a;a = b;b = x;if(b > c){x = c;c = b;b = x;}}else if(b > c){x = c;c = b;b = x;}//将最大的数放到了cif(a > b){x = a;a = b;b = x;}//进行ab的排序// printf("%d -> %d -> %d", a, b, c);//上一题,这题用不到/**************新写的代码***************/if(a + b > c){s = (a + b + c) / 2;printf("area = %.2f, perimeter = %.2f\n", sqrt(s * (s - a) * (s - b) * (s - c)), 2 * s);}elseprintf("These sides do not correspond to a valid triangle\n");return 0;
}

乍一看好像代码量变多了,实际上都是调用之前的代码,新写的只有最后的几行。相比第一种办法直接上if判断,第二种的if就相对简单一些。

3-13计算电费

本题要求编写程序,为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量50千瓦时(含50千瓦时)以内的,电价为0.53元/千瓦时;超过50千瓦时的,超出部分的用电量,电价上调0.05元/千瓦时,若用电量小于0,则输出"Invalid Value!"。要求计算电费。

输入格式:

输入在一行中给出某用户的月用电量(单位:千瓦时)。

输出格式:

在一行中输出该用户应支付的电费(元),结果保留两位小数,格式如:“cost = 应付电费值”;若用电量小于0,则输出"Invalid Value!"。

输入样例1:

10

输出样例1

cost = 5.30

输入样例2:

100

输出样例2:

cost = 55.50

这题并没有前面的几题复杂,在此直接列出代码

#include <stdio.h>int main()
{float a;scanf("%f", &a);if(a < 0)printf("Invalid Value!");else if(a <= 50)printf("cost = %.2f", a * 0.53);elseprintf("cost = %.2f", 50 * 0.53 + (a - 50) * 0.58);return 0;
}

3-14 出租车计价

本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:

  • 起步里程为3公里,起步费10元;
  • 超起步里程后10公里内,每公里2元;
  • 超过10公里以上的部分加收50%的回空补贴费,即每公里3元;
  • 营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)。

输入格式:

输入在一行中给出输入行驶里程(单位为公里,精确到小数点后1位)与等待时间(整数,单位为分钟),其间以空格分隔。

输出格式:

在一行中输出乘客应支付的车费(单位为元),结果四舍五入,保留到元。

输入样例1:

2.6 2

输出样例1:

10

输入样例2:

5.1 4

输出样例2:

14

输入样例3:

12.5 9

输出样例3:

34

#include <stdio.h>int main()
{float a;int b;scanf("%f%d", &a, &b);if (a < 3)printf("%d", 10 + 2 * (b / 5));else if (a <= 10)printf("%.0f", (a - 3) * 2 + 10 + 2 * (b / 5));elseprintf("%.0f", 24 + (a - 10) * 3 + 2 * (b / 5));return 0;
}

计算稍微复杂,逻辑还是很简单的。

为什么这个出租车这么贵啊!

3-15 计算个人所得税

本题要求编写程序,计算应缴的所得税。假设个人所得税为:税率×(工资−1600),其中税率定义为:

  • 当工资不超过1600时,税率为0;
  • 当工资在区间(1600, 2500]时,税率为5%;
  • 当工资在区间(2500, 3500]时,税率为10%;
  • 当工资在区间(3500, 4500]时,税率为15%;
  • 当工资超过4500时,税率为20%。

输入格式:

输入在一行中给出非负工资。

输出格式:

在一行输出个人所得税,精确到小数点后2位。

输入样例1:

1600

输出样例1:

0.00

输入样例2:

1601

输出样例2:

0.05

输入样例3:

3000

输出样例3:

140.00

输入样例4:

4000

输出样例4:

360.00

输入样例5:

5000

输出样例5:

680.00

逻辑并不复杂,直接看代码吧

#include <stdio.h>int main()
{float a, b;scanf("%f", &a);if (a <= 1600)b = 0;else if (a <= 2500)b = 0.05;else if (a <= 3500)b = 0.1;else if (a <= 4500)b = 0.15;elseb = 0.2;printf("%.2f", b * (a - 1600));return 0;
}

3-16 计算油费

现在92号汽油6.95元/升、95号汽油7.44元/升、97号汽油7.93元/升。为吸引顾客,某自动加油站推出了“自助服务”和“协助服务”两个服务等级,分别可得到5%和3%的折扣。(现在明明不是这个价

本题要求编写程序,根据输入顾客的加油量a,汽油品种b(92、95或97)和服务类型c(m - 自助,e - 协助),计算并输出应付款。

输入格式:

输入在一行中给出两个整数和一个字符,分别表示顾客的加油量a,汽油品种b(92、95或97)和服务类型c(m - 自助,e - 协助)。

输出格式:

在一行中输出应付款额,保留小数点后2位。

输入样例:

40 97 m

输出样例:

301.34

直接看代码吧

#include <stdio.h>int main()
{float dis, pri;int a, b;char c;scanf("%d%d%c%c", &a, &b, &c, &c);switch (c){case 'm':dis = 0.95;break;case 'e':dis = 0.97;break;}switch (b){case 92:pri = 6.95;break;case 95:pri = 7.44;break;case 97:pri = 7.93;break;}printf("%.2f", (float)a * pri * dis);return 0;
}

注意这里的scanf()会将空格识别为一个字符,所以进行了两次赋值

3-17 计算绝对值(二)

本题目要求计算下列分段函数 y=|x|的值(利用条件运算符实现)

输入格式:

输入在一行中给出实数x。

输出格式:

在一行中按“|x| = y”的格式输出,

输入样例1:

7

输出样例1:

|7.0| = 7.0

输入样例2:

-3

输出样例2:

|-3.0| = 3.0

先看看啥是条件运算符

这东西…真的有人用吗…

直接拿之前代码的if改就好了,直接看代码

#include <stdio.h>int main()
{float a;scanf("%f", &a);(a >= 0)?printf("|%.1f| = %.1f", a, a):printf("|%.1f| = %.1f", a, -a);return 0;
}

直接写一行读起来麻烦,分行写也没有if简洁直观

3-18 四则运算(二)

本题要求编写一个简单计算器程序,可根据输入的运算符,对2个整数进行加、减、乘、除运算。题目保证输入和输出均不超过整型范围。

输入格式:

输入在一行中依次输入操作数1、运算符、操作数2、=,操作数的数据类型为整型,且保证除法的分母非零。

输出格式:

当运算符为+-*/时,在一行输出相应的运算结果。若输入是非法符号(即除了加、减、乘、除四种运算符以外的其他符号)则输出ERROR

输入样例1:

7/2=

输出样例1:

3

输入样例2:

2&7=

输出样例2:

ERROR

只要善用%d, %c这些字符,这题也可以比较简单地做出来。看代码

#include <stdio.h>int main()
{int a, b;char c;scanf("%d%c%d", &a, &c, &b);switch (c){case '+':printf("%d", a + b);break;case '-':printf("%d", a - b);break;case '*':printf("%d", a * b);break;case '/':printf("%d", a / b);break;default:printf("ERROR");break;}return 0;
}

3-19 成绩转换(三)

本题要求编写程序,将一个百分制成绩转换为五分制成绩。(利用switch语句实现),转换规则:

  • 大于等于90分为A;
  • 小于90且大于等于80为B;
  • 小于80且大于等于70为C;
  • 小于70且大于等于60为D;
  • 小于60为E。

输入格式:

输入在一行中给出一个整数的百分制成绩。

输出格式:

在一行中输出对应的五分制成绩。

输入样例:

95

输出样例:

A

那个啥…咱上次好像就是用switch case实现的…?所以上次是得用if是吧。不过无所谓了,直接拷上次的代码来就行

#include <stdio.h>int main()
{int a;scanf("%d", &a);a /= 10;switch (a){case 9:printf("A");break;case 8:printf("B");break;case 7:printf("C");break;case 6:printf("D");break;default:printf("E");break;}return 0;
}

3-20 计算天数

本题要求编写程序计算某年某月某日是该年中的第几天。(利用switch语句实现)

输入格式:

输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。

输出格式:

在一行输出日期是该年中的第几天。

输入样例1:

2009/03/05

输出样例1:

64

输入样例2:

2000/03/07

输出样例2:

67

咱先复习一下小学二年级学过的口诀 “一三五七八十腊,三十一天永不差”、“四年一闰,百年不闰,四百年又润”

#include <stdio.h>int main()
{int year, month, day;int leap = 28;char c;scanf("%d%c%d%c%d", &year, &c, &month, &c, &day);if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)//闰年判断leap = 29;for (c = 1; c < month; c++)//遍历每个月, 本月不计入{switch (c){case 1:case 3:case 5:case 7:case 8:case 10:case 12:day += 31;break;case 2:day += leap;break;default:day += 30;break;}}printf("%d", day);return 0;
}

可能会有同学有疑惑,为什么能将char类型的c作为整形使用?这个其实问题不大啦,实际上char本身就是存储-128~127的整形,所以混用也没啥关系(但最好不要)。

结语

本周作业部分题目有一点难度,可以仔细研究一下,不是很理解的可以在评论区提问哦。

呼~终——于!写完了!好不容易赶上版本。不过这周不是学习的循环吗,为什么作业还是以条件判断为主。另外条件判断语句,那个"?",感觉真的没咋用过,刚看到题目的时候都没反应过来是啥

上海海事大学自动化专业C语言课程代码参考(第六周)相关推荐

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

    想不到这么快就到了新的一周,写上周的作业仿佛就在两天前 正好今天是1024程序员节,写C语言作业非常应景 这周的作业主要是循环,话不多说,直接开始吧! 目录 上机实验 4-1      求1到100的 ...

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

    本博客作为作者本人的学习记录,大家可以参考,但不要抄袭哦 第一次发博客,想想还有点小激动. 文章会将上机实验和作业的代码全部贴出,部分代码会有一些讲解.当然,作者本人也是初学者,如有疏漏还请指出. 本 ...

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

    听说下周开始就有线下课了,我个人还是比较期待的,希望疫情影响早日结束(拜 现在看看这周的题目吧 上机实验 4-15       找完数 本题要求编写程序,找出任意两正整数m和n之间的所有完数.所谓完数 ...

  4. 电气自动化学c语言有什么作用,电气工程及其自动化专业C语言课程教学改革-2019年教育文档...

    <电气工程及其自动化专业C语言课程教学改革-2019年教育文档>由会员分享,可在线阅读,更多相关<电气工程及其自动化专业C语言课程教学改革-2019年教育文档(4页珍藏版)>请 ...

  5. 2021-12-06 自动化专业C语言上机作业参考答案20

    上机练习20 p312.c /* 编写一程序P312.C实现以下功能有一存储很多商品数据(每件商品的属性先后包括:品名.规格.数量.单价,编程时相应的数据类型 分别定义为字符串char(20).字符串 ...

  6. 2021-12-06 自动化专业C语言上机作业参考答案19

    上机练习19 p314.c /*编写一程序P314.C实现以下功能有一存储很多商品数据(每件商品的属性先后 包括:品名.规格.单价(有小数位).数量,数据的最长长度分别为20.10.6.5,在文件中以 ...

  7. MOOC翁恺老师零基础学Java语言课程编程题——第六周

    1 单词长度(5分) 题目内容: 你的程序要读入一行文本,其中以空格分隔为若干个单词,以'.'结束.你要输出这行文本中每个单词的长度.这里的单词与语言无关,可以包括各种符号,比如"it's& ...

  8. 2021-12-06 自动化专业C语言上机作业参考答案04

    上机练习04 p111.c /* 编写一程序P111.C实现以下功能x(x只考虑整数int且必须定义为int.但F(x)完全可能超过int的表示范围) 通过键盘输入(输入前给出提示Please inp ...

  9. 2021-12-06 自动化专业C语言上机作业参考答案06

    上机练习06 p112.c /* 编写一程序P112.C实现以下功能设某企业2006年的产值为5000万,计划以后每年的增长率为x(x从键盘输入,例如输入8.75表示8.75%),计算该企业的产值在哪 ...

  10. 2021-12-06 自动化专业C语言上机作业参考答案11

    上机练习11 p137.c /* 编写一程序P137.C实现以下功能通过键盘输入两个姓名(约定均为汉字且最多4个汉字),判断并输出二者是否同姓. 编程可用素材: printf("请输入姓名1 ...

最新文章

  1. Android 5.1 Lollipop的Zygote分析——下篇
  2. 数据库备份DBS提供异常任务自助修复
  3. 将某个字段改为不重复(unique)
  4. 数据结构:排序算法之堆排序和选择排序
  5. StringBuilder对象的常用方法 c#1614651638
  6. Hibernate的执行流程——SessionFactory的创建
  7. OpenZeppelin集成Truffle编写健壮安全的合约
  8. 130242014062-黄凌逸-电商系统某功能模块“需求分析与设计实验课小结
  9. java 输入一个数四舍五入_Java程序将数字四舍五入到n个小数位
  10. Oracle数据库的四款工具软件
  11. 树莓派输出PWM波驱动舵机
  12. “Java:詹姆斯?”
  13. 厦门理工学院1219 (zyf的童年) (纯C语言版本)
  14. 爱荷华大学计算机科学专业,2015 U.S News计算机科学专业排名(不知道有没有伙伴在找)...
  15. php检查数据库记录,php-检查数据库中是否有新条目
  16. deepin安装tftp服务器_Win10频发蓝屏,深度Deepin系统,调试华为AC和AP
  17. android+获取相册列表,android 获取相册列表的实现(一)
  18. php网站开发期末大作业,网页设计期末大作业报告..doc
  19. 计算机专业b区大学,b区考研学校,b区考研学校排名。
  20. 诺基亚狙击华为起诉T-Mobile的背后

热门文章

  1. 阿里云STMP实现邮件发送
  2. Notes V11内存不足?
  3. Scapy:send函数剖析(参数、返回值、应用)
  4. 360无线wifi 无法连接服务器,360wifi连接上但上不了网的解决方法
  5. 2020网赚模式不再亮眼,中小开发者如何在红海竞争中活下去?
  6. 深度学习笔记(15) 人的表现
  7. QQ抢车位游戏PhysicalDataModel
  8. panabit连接控制
  9. 服务器宠物系统,4月27日服务器公告:宠物训练师等级系统开启
  10. Linux驱动学习--初识PCI驱动(一)