第六周作业
2017-11-11 16:45
120 查看
要求一:
已完成PTA第六周作业所有题目要求二:
题目7-1 高速公路超速处罚1.实验代码
#include <stdio.h> int main() { int c,x; scanf("%d %d",&c,&x); if(c<x*1.1) { printf("OK\n"); } else if(c>=1.1*x&&c<1.5*x) { float d=100*(c-x)/(float)x; printf("Exceed %.0f%%. Ticket 200\n",d); } else { float d=100*(c-x)/(float)x; printf("Exceed %.0f%%. License Revoked\n",d); } return 0; }
2.设计思路
(1)算法
第一步:设置车速、限速的值c、x为整形变量;
第二步:输入c、x的值;
第三步:设置超出了限速百分之多少的值d为float形
第四步:写if循环语句
如果没超出本车道限速的10%,则输出OK,如果超出本车道限速的10%且小于50%,则输出"Exceed d% Ticket 200“,如果超出本车道限速的50%及以上,则输出“Exceed d%. License Revoked”。
注意:由于d为浮点形,在计算d的时候它的运算所用到的量也要换为浮点形的。
(2)流程图
3.本题调试过程碰到问题及解决办法
因为本题以前做过,所以在这次调试中并未遇到问题。
4.本题PTA提交列表
题目7-2 计算油费
1.实验代码
#include <stdio.h> int main() { int a,b; char c; double d; scanf("%d %d %c",&a,&b,&c); if(b==97) { if(c=='m') { d=(7.93*a)*0.95*1.0f; } else { d=(7.93*a)*0.97*1.0f; } } else if(b==93) { if(c=='m') { d=(7.44*a)*0.95*1.0f; } else { d=(7.44*a)*0.97*1.0f; } } else { if(c=='m') { d=(6.95*a)*0.95*1.0f; } else { d=(6.95*a)*0.97*1.0f; } } printf("%.2lf",d); return 0; }
2.设计思路
(1)算法
第一步:设置加油量a,品种b为整形变量,服务类型c为字符变量,应付款额d为double形变量;
第二步:输入a,b,c的值(其中c的值为字符);
第三步:写if循环语句
如果97号汽油的时候,m服务等级时,应付款额为7.93a0.95,e服务等级时,应付款额d为7.93a0.97
如果93号汽油的时候,m服务等级时,应付款额为7.44a0.95,e服务等级时,应付款额d为7.44a0.97
如果90号汽油的时候,m服务等级时,应付款额为6.95a0.95,e服务等级时,应付款额d为6.95a0.97;
第四步:输出应付款额d的值。
注意:本题涉及到字符变量,在输入字符的时候要加‘单引号’。
(2)流程图
3.本题调试过程碰到问题及解决办法
(1)问题
由图得,本题是答案错误。
(2)解决办法:向老师询问得知,把float改为double即可。(因为对于本题float没有double精准,而且还有一个学长(一班的助教)建议我们尽量用double)
4.本题PTA提交列表
题目7-3 比较大小
1.实验代码
#include <stdio.h> int main() { int a,b,c,d; scanf("%d %d %d",&a,&b,&c); if(a>=b&&b>=c) { d=a,a=c,c=d; } else if(b>=a&&a>=c) { d=a,a=c,c=b,b=d; } else if(a>=c&&c>=b) { d=a,a=b,b=c,c=d; } else if(b>=c&&c>=a) { d=b,b=c,c=d; } else if(c>=a&&a>=b) { d=a,a=b,b=d; } else { a=a,b=b,c=c; } printf("%d->%d->%d",a,b,c); return 0; }
2.设计思路
(1)算法
第一步:设置a,b,c,d四个数为整形变量;
第二步:输入a,b,c;
第三步:写if语句
我的思路:本题为比较大小,那我就默认为a<b<c,然后如果真实的数值与默认的不相符,那就用老师讲的水杯法(就是a,b两杯水要交换,需要再找一个杯,然后在相互交换)进行交换;
第四步:输出结果。
(2)流程图
3.本题调试过程碰到问题及解决办法
(1)问题
从题目来看,我是部分正确。
(2)解决办法:我又仔细的看了我的代码,发现我在赋值的时候(给让a,b,c的值从小到大)赋值错了,改正即可。
4.本题PTA提交列表
题目7-4 两个数的简单计算器 (必须使用switch结构实现)
1.实验代码
#include <stdio.h> int main() { int a,b; char c; scanf("%d %c %d", &a,&c,&b); int d; switch (c){ case '-': { d=a-b; printf ("%d\n", d); break; } case '+': { d=a+b; printf ("%d\n",d); break; } case '*': { d=a*b; printf ("%d\n",d); break; } case '/': { d=a/b; printf ("%d\n",d); break; } case '%': { d=a%b; printf ("%d\n",d); break; } default:printf("ERROR\n"); } return 0; }
2.设计思路
(1)算法
第一步:设置a,b,d为整形变量,c为字符变量;
第二步:写switch语句
确定c为那个可以变化的量,然后,当c取各种不同符号的时候,写应有运算步骤,如果题目给的字符写完了,就写defaul;
第三步:输出d。
注意:字符要用’单引号‘
(2)流程图
3.本题调试过程碰到问题及解决办法
(1)问题
由图得,本题为编译错误。
(2))解决办法:
编译错误就是编译的不正确,因此看看字母大小写,有无括号,中英文什么的有没有错误,最后发现落了一个括号,改正即可。
4.本题PTA提交列表
要求三:
(1)Git地址:https://git.coding.net/jsjyuyaosong/usth--work.c.git(2)上传截图
要求四:
个人总结
(1)本周你学习了哪些内容?收获了什么?答:我学习了switch语句,此语句也是进行选择判断的,但有时比if方便。
(2)本周所学内容中你觉得哪些是难点?有哪些知识点还不明白?
答:我觉得switch这个新学的语句就是重点,对于知识点的掌握还不太熟练,具体在框架不是很熟,其它的都好。
(3)你对目前老师的上课形式有什么意见或建议?
答:我认为老师讲的形式很好,并无意见。
要求五:
互评和学习进度
1、作业互评(1)金海东:http://www.cnblogs.com/jhd1127/p/7811138.html
(2)李锐:http://www.cnblogs.com/572453251asd/p/7811205.html
(3)王姝雯:http://www.cnblogs.com/phsudie/p/7801346.html
2、学习进度