第六周作业
(一)
一 插入代码
1超速处罚
代码:
#include<stdio.h>
int main(){
int a=0,b=0;
double x;
scanf("%d %d",&a,&b);
x=(a-b)*100.0/b;
if(x<10)
printf("OK");
else if(x<50)
printf("Exceed %0.1f%%. Ticket 200",x);
else printf("Exceed%0.1f%%. License Revoked",x);
return 0;
}
设计思路
a:分析题意,分出两种情况,分别是<10与<50
b:整理思路,由提示可知该题需要用到double定义输出,并用else-if分出包括错误的三种情况
c:检查程序,并提醒自己格式(缩进)
流程图
问题及解决办法
一开始我用浮点函数定义了x,后来比较了double与float,double比float占位多,表示数据的范围更多
2油费
代码
#include <stdio.h>
int main(){
int a=0,b=0;
char c;
double y;
scanf("%d %d %c",&a,&b,&c);
switch(b){
case 90:
y=a*6.95;break;
case 93:
y=a*7.44;break;
case 97:
y=a*7.93;break;
default:
break;}
if(c=='m')
y=y*0.95;
if(c=='e')
y=y*0.97;
printf("%.2f\n",y);
return 0;
}
设计思路
a:理解题意,由题意可知,该题需要用用%0.2f定义输出变量
b:根据提示,需要整型定义加油量a,b,并用字符变量定义类别
c:根据提示,灵活运用switch语言,分成三种情况并完善程序
流程图
问题及解决办法
在该题中我落下了default,提交时显示编译错误,找书上看时才发现错误
3比较大小
代码
#include <stdio.h>
int main(){
int a=0,b=0,c=0,y=0;
scanf ("%d %d %d",&a,&b,&c);
if(a>b)
{
y=a;
a=b;
b=y;
}
if(a>c)
{
y=c;
c=a;
a=y;
}
if(b>c)
{
y=c;
c=b;
b=y;
}
printf("%d->%d->%d",a,b,c);
return 0;
}
设计思路
a:理解题意,输入三个数并排序
b:定义另一个变量,方便交换数字
c:注意输出格式,进行编程
流程图
问题及解决方法
一开始以为输出的横线是—,但是后来发现是-
4计算器
代码
#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;
case '%':printf("%d",a%b);break;
default :printf("ERROR\n");break;
}
return 0;
}
设计思路
a:由题意可知,出现多个分支需要用到switch函数
b:根据题目要求,编辑程序
流程图
![](http://images2017.cnblogs.com/blog/1239285/201711/1239285-20171108200308669-1949869778.png)
问题及解决办法
该题目比较简单,未遇到问题
(二)
提交列表
(三)
git提交截图
git地址
https://git.coding.net/simalang/pta.git
(四)
总结
学习并收获了switch函数的运用,以及else-if,等流程图的画法,循环结构,排序等等
我觉得循环结构比较难,尤其是while在开始与结尾时有点分不清
pta作业个别比较难,如果多给些提示就好了,另外我建议老师在课上或课下讲讲历年考试题,对期末会有帮助
(五)
点评
1http://www.cnblogs.com/liuzehua123/p/7797461.html
2http://www.cnblogs.com/1999-cyc/p/7795527.html
3http://www.cnblogs.com/wangzhiheng/p/7797353.html
表格与折线图