第六周作业
要求二
题目7-1 高速公路超速处罚
1.实验代码
#include <stdio.h> int main() { int x,y; float z; scanf("%d %d",&x,&y); z=(float)(x-y)*100/(float)y; if(z<10||x<y) printf("OK"); else if(z<50) printf("Exceed %.0f%%. Ticket 200",z); else printf("Exceed %.0f%%. License Revoked",z); return 0; }
2, 设计思路
a,读懂题目,定义两个整型变量车速x,限速y,和一个浮点型变量超速百分比z;
b,根据题意列出计算公式:超速百分比=(车速-限速)*100/限速;
c,由于题目存在判断,故用if else结构,即if (z<10),输出ok;else if(z<50),输出Exceed %Z. Ticket 200;else,输出Exceed %Z. License Revoked。
3.程序框图
4.遇到的问题及解决方法
问题截图
问题是输出的结果并不是题目要求的超速百分比,即无法输出百分数,
解决方法:先自己调试发现并没有找到问题,然后自上网查询,与网上的答案对比后,明白想要输出百分数需这样写:Exceed %.0f%%且求百分比的计算公式也可先用(车速-限速)*100/限速,得到的值就是所占的百分比
5.运行结果图
6.提交列表
编译错误的原因已在第四条中提到。
题目7-2 计算油费
1.实验代码
#include <stdio.h> int main() { int a,b; double x; char c; scanf("%d %d %c",&a,&b,&c); if(c=='e') { if(b==90) { x=a*6.95*0.97; printf("%.2f",d); } else if(b==93) { x=a*7.44*0.97; printf("%.2f",d); } else if(b==97) { x=a*7.93*0.97; printf("%.2f",d); } } else if(c=='m') { if(b==90) { x=a*6.95*0.95; printf("%.2f",d); } else if(b==93) { x=a*7.44*0.95; printf("%.2f",d); } else if(b==97) { x=a*7.93*0.95; printf("%.2f",d); } } return 0; }
2, 设计思路
a,读懂题目,定义两个整型变量加油量a,汽油品种b,一个字符型变量c(m-自助,e-协助),和一个浮点型变量应付款额x;
b,根据题意,列出各自变量范围内的计算公式,即当服务类型是e时,b=90,费用x=a*6.95*0.97;b=93,费用x=a*7.44*0.97;b=97,费用x=a*7.93*0.97.
当服务类型是m时,b=90,费用x=a*6.95*0.95;b=93,费用x=a*7.44*0.95;b=97,费用x=a*7.93*0.95;
c,根据输入的数值确定范围,并进行相应的计算,最后输出结果。
3.程序框图
4.遇到的问题及解决方法
遇到的问题截图
遇到的问题是if中的条件出现错误;
解决方法:讲英文的错误提示翻译成汉语,并回看老师上课讲过的关于字符型变量的内容,知道了字符型变量需要将其用单引号括住。
5.运行结果图
6.提交列表
编译错误是由于字符型变量没有用单引号括住,
题目7-3 比较大小
1.实验代码
#include <stdio.h> int main(){ int a,b,c; scanf("%d%d%d",&a,&b,&c); if(b<a){ a+=b; b = a-b; a = a-b; } if(c<b){ b+=c; c=b-c; b=b-c; } if(b<a){ a+=b; b = a-b; a = a-b; } printf("%d->%d->%d",a,b,c); return 0; }
2.设计思路
a,理解题意,需要输入三个整数,故定义三个整型变量a,b,c,并用到scanf函数;
b,现将三个变量两两进行比较,并写出相应条件下的公式:if(b<a) a+=b; b = a-b; a = a-b; if(c<b) a+=b;c=b-c;b=b-c; if(b<a) a+=b;b = a-b;a = a-b;
c,根据输入的数值根据条件依次进行比较,最终输出比较结果。
3.程序框图
4.遇到的问题及解决方法
这道题目老师上课讲过与之十分类似的,所以没有问题。
5.运行结果图
6.提交列表
错误原因是中途切换了输入法。
题目7-4 两个数的简单计算器
1.实验代码
#include <stdio.h> int main() { int a,b; char operate; scanf("%d %c %d",&a,&operate,&b); switch(operate){ case '+': printf("%d",a+b); break; 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"); } return 0; }
2.设计思路
a,理解题目,由于此题有五种运算符可以选择,属于多分支选择,故用switch语句;
b,根据题意;定义两个整型变量a,b,和一个字符型变量operate;
c,根据条件写出printf中的内容,例如:case '+': printf("%d",a+b)。
3.程序框图
4.遇到的问题及解决方法
遇到问题截图:
遇到的问题是编译错误,无法运行。
解决方法:自己看书,看老师发到群里的课件,发现switch后的括号中是有内容的,即括号中应填上operate。
截图:
5.运行结果图
6.提交列表
错因:switch后的括号中没有内容。
要求三
Git地址:https://git.coding.net/Hunjunxian/zuoye.git
上传文件截图:
要求四
个人总结:
1.进行条件较少的判断时,用if或if -else if结构,进行多条件的判断时则用switch语句;switch语句可使程序大大简化。
2.再进行大小比较的问题时,可引入中间变量,使程序简洁明了。
3.强制性的double/float,在有些变量未设定变量类型时,可在语句前加(double/float)进行强制定义,保证程序顺利运行。
4.难点是引入中间变量,将两个变量进行交换,对于一题多解的情况无法快速的选出最优解法。
5.不明白的知识点暂时没有,就是switch语句使用不是很熟练。
6.本次作业中出现的问题都是一些基本的,只是在编程时容易忽略,下次完成作业一定细心认真,且课后也会对基础知识加以巩固。
7.建议:希望以后的作业可以在周三之前布置,在周末交,这样就有充足的时间去写,不会像这次的作业一样,完成的特别匆忙,存在的瑕疵也比较多。以上就是我的建议,希望老师可以采纳。
要求五
我评价的博客:
何宗彦:http://www.cnblogs.com/hezongyan/
王佳乐:http://www.cnblogs.com/wjl1124/
透光玻璃:http://www.cnblogs.com/boke2017boke/
学习进度条:
时间 | 代码行数 | 时间1 | 博客字数 | 时间2 | 知识点 |
2017.11.06 | 122 | 4.5小时 | 450 | 45分钟 | if else结构和switch语句 |
折线图: