第六周作业
题目7-1 高速公路超速处罚
1.实验代码
#include<stdio.h> int main() { int a,b; double x; scanf("%d %d",&a,&b); x=100.0*(a-b)/b; if(x<10) printf("OK"); else if(x<50) printf("Exceed %.0f%%. Ticket 200",x); else printf("Exceed %.0f%%. License Revoked",x); return 0; }
2.设计思路
(1)主要描述题目算法
第一步:我首先仔细读了三遍题, 此题分为三种情况①小于限速的%10不罚款②超速%10-%20罚款200
③超速50%吊销驾驶证
第二步:我运用上课学的if-else语句,将三种情况分别列出
if (超速小于%10)则输出Ok
else if (超速%10-%50)则输出Exceed z%.Ticket 200
else 则输出Exceed z%.Licence Revoked
第三步:在De-C++上编译检查是否有 错误
(2)流程图
3.本题调试过程中遇到的问题
错误提示截图
遇到问题
提交总是显示答案错误
解决办法
我又仔细读了一遍 题,发现公式写错了,按照题目公式改正
4.PTA提交列表
题目7-2计算油费
1.实验代码
#include <stdio.h> int main() { double A,M; int B; char c; scanf("%lf%d %c",&A,&B,&c); if (c == 'm'){ switch(B){ case 90:M = A * 6.95 * 0.95;break; case 93:M = A * 7.44 * 0.95;break; case 97:M = A * 7.93 * 0.95;break; } printf("%.2f",M); } else if (c == 'e'){ switch(B){ case 90:M = A * 6.95 * 0.97;break; case 93:M = A * 7.44 * 0.97;break; case 97:M = A * 7.93 * 0.97;break; } printf("%.2f",M); } return 0; }
2.设计思路
(1)主要描述题目算法
第一步:仔细审题
①把题分为两大类:c == 'm'还是c == 'e' ②每大类又分为三种小情况:90还是93或者是97
③按照题目中的公式套用到每种情况中。
第二步:考虑用学过的什么知识点,个人认为用switch语句比较好
将所有的情况列出
if (c == 'm'){
switch(B){
case 90:M = A * 6.95 * 0.95;break;
case 93:M = A * 7.44 * 0.95;break;
case 97:M = A * 7.93 * 0.95;break;
}
else if (c == 'e'){ switch(B){ case 90:M = A * 6.95 * 0.97;break; case 93:M = A * 7.44 * 0.97;break; case 97:M = A * 7.93 * 0.97;break;}
第三步:编译运行检查是否有误。
(2)流程图
3.本题调试过程中遇到的问题及解决办法
错误提示截图
遇到的问题
答案错误
解决办法
重新在自己的编译器编译发现自己把B 打成b
4.PTA提交列表
题目7-3比较大小
#include<stdio.h> int main() { int a,b,c,t; scanf("%d%d%d",&a,&b,&c); if(a>b) {t=a,a=b,b=t;} if(a>c) {t=a,a=c,c=t;} if(b>c) {t=b,b=c,c=t;} printf("%d->%d->%d",a,b,c); return 0; }
2.设计思路
(1)主要描述题目算法
第一步:阅读题目,三个数 比大小
①借助另外一个变量 t ②把三个数 两个一组分成三组③两个数之间比大小
第二步: 运用if-if-if语句 分为三种情况
1.if(a>b)
{t=a,a=b,b=t;}
2.if(a>c)
{t=a,a=c,c=t;}
3. if(b>c)
{t=b,b=c,c=t;}
第三步:将自己的想法打成代码,并编译运行
(2)流程图
3.本题调试过程中遇到的问题及解决办法
因为这道题牛老师亲自给我讲过,没有问题。
4.PTA提交列表
题目7-4两个数的简单计算器
1.实验代码
#include <stdio.h> int main() { int x,y; char c; scanf("%d %c %d",&x,&c,&y); switch (c) { case '+':printf("%d",x+y);break; case '-':printf("%d",x-y);break; case '*':printf("%d",x*y);break; case '/':printf("%d",x/y);break; case '%':printf("%d",x%y);break; default :printf("ERROR\n");break; } return 0; }
2.设计思路
(1)主要描述题目算法
第一步:读题,要求设计一个计算器。
实现五种算法“+”,"-",”*“,"/","%"
第二步:运用switch语句,分五种情况:
①case '+':printf("%d",x+y);break;
② case '-':printf("%d",x-y);break;
③ case '*':printf("%d",x*y);break;
④case '/':printf("%d",x/y);break;
⑤case '%':printf("%d",x%y);break;
⑥default :printf("ERROR\n");break;
第三步:编译运行
(2)流程图
3.本题调试过程中 遇到的问题
错误提示截图
遇到问题
编译错误
解决方法:和题目7-2对比 发现switch后的()应该有c
4.pta提交列表
要求三
git地址
https://coding.net/u/zhangle1234567/p/PTA6/git/tree/master/
提交截图
要求四
个人总结
(1)本周学到的内容
1.复习if-else语句,新学习switch语句。
2.再进行大小比较的问题时,可引入中间变量
3.学会运用double/float数据
4.字符型数据(用char定义字符变量)
(2)难点
在遇到新题时不会运用switch 语句,比较大小时引入中间变量不容易想出
(3)意见
老师在黑板上写的东西后排看不见。
要求五
(1)点评同学作业链接
何宗彦http://www.cnblogs.com/hezongyan/p/7783360.html
徐敬淇http://www.cnblogs.com/SR1011/p/7801670.html
陈雨秋http://www.cnblogs.com/cyq66992152/p/7789995.html
(2)学习进度条