一、PTA实验作业
题目1:7-1 计算分段函数[2]
本题目要求计算下列分段函数f(x)的值
1.代码
double x,fx;
scanf("%lf",&x);
if (x>=0)
{
fx=pow(x,0.5);
}
else
{
fx=(x+1)*(x+1)+2*x+1/x;
}
printf("f(%.2f) = %.2f",x,fx);
2.设计思路
第一步:定义双精度浮点变量x,fx
第二步:利用if else分支结构分别计算不同情况下fx的值
第三步:若x>=0则输出fx=pow(x,0.5)
第四步:否则输出fx=(x+1)(x+1)+2x+1/x;
第五步:按题目要求输出结果
3.本题调试过程碰到问题及解决办法
(1)误用中文符号,经devc检查后改正错误
(2)未使用数学函数#include<math.h>导致输出错误,检查后发现错误
(3)使用pow函数时应该添加#include<math.h>
4.本题PTA提交列表
题目2:7-4 输出三角形面积和周长
本题要求编写程序,根据输入的三角形的三条边a、b、c,计算并输出面积和周长。注意:在一个三角形中, 任意两边之和大于第三边。三角形面积计算公式:area=√s(s−a)(s−b)(s−c),其中s=(a+b+c)/2。
1.代码
int a,b,c;
double s,area,length;
scanf("%d%d%d",&a,&b,&c);
if (a+b>c&&a+c>b&&b+c>a)
{
s=(a+b+c)*1.00/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
length=a+b+c;
printf("area = %.2f; perimeter = %.2f",area,length);
}
else
{
printf("These sides do not correspond to a valid triangle");
}
2.设计思路
第一步:定义整型变量a,b,c以及双精度浮点变量area,length
第二步:利用if-else分支结构,若输入的两边之和小于第三边,则输出错误提示
第三步:否则根据题目公式计算三角形周长以及面积
第四步:按照题目格式输出答案
3.本题调试过程碰到问题及解决办法
(1)变量定义错误,没有根据要求定义双精度浮点型变量,导致输出错误,认真阅读课本得到解决
(2)变量相乘没有用*导致错误,经检查发现错误
4.本题PTA提交列表
题目3:7-6 出租车计价
题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:
起步里程为3公里,起步费10元;
超起步里程后10公里内,每公里2元;
超过10公里以上的部分加收50%的回空补贴费,即每公里3元;
营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)。
1.代码
int minute,money,k;
double l;
scanf("%lf%d",&l,&minute);
if(minute>=5)
{
k=minute/5*2;
}
else
{
k=0;
}
if(l<=3)
{
printf("%d",10+k);
}
else if(l<=10)
{
money=((10+(l-3)*2+k)+0.5)*10/10;
printf("%d",money);
}
else if(l>10)
{
money=((24+(l-10)*3+k)+0.5)*10/10;
printf("%d",money);
2.设计思路
第一步:根据题目要求,定义变量
第二步:利用if-else分支结构,分别计算题目中当起步里程为3公里,超起步里程后10公里,以及超过10公里的时所花费的费用
第三步:用另一个分支计算当停车时长大于分钟时的额外费用
第四步:计算总费用,按要求输出答案
3.本题调试过程碰到问题及解决办法
(1)公式错误,利用devc检查公式那一段,观测变量发现了。公式的错误
(2)语法错误,将%lf输入成%d,多次检查后改正
(3)设计程序时没有思路,在同学引导下逐渐得出结果
4.本题PTA提交列表
题目4:7-8 程序设计联考
自从湖南农业大学、吉首大学和怀化学院组织程序设计课程联考以后,举办联考的经验越来丰富。尤其是在使用PTA系统作为考试平台之后,联考工作得到了很多学校的认可和支持。所以,现在参与联考的学校比较多。为了便于区分考生,考生账号的第一位是学校代号。1代表Hunan Agricultural University,2代表Jishou University,3代表Huaihua University,4代表Aerospace University,5代表Ocean University。 请编写程序根据考生的账号区分考生的学校
1.代码
int account,number;
scanf("%d",&account);
number=account/100000;
if(number==1)
{
printf("Hunan Agricultural University");
}
else if(number==2)
{
printf("Jishou University");
}
else if(number==3)
{
printf("Huaihua University");
}
else if(number==4)
{
printf("Aerospace University");
}
else if(number==5)
{
printf("Ocean University");
}
else
{
printf("Other University");
}
2.设计思路
第一步:根据题目要求定义变量account和number
第二步:利用公式求出第一位数
第三步:利用分支结构按照题目要求输出答案
3.本题调试过程碰到问题及解决办法
(1)题目不清楚,没有说明"Other University“需要空格导致多次答案错误,尝试后得到正确结果
4.本题PTA提交列表
二、截图本周题目集的PTA排名。
PTA排名
1.你学会了什么?
(1)分支结构的应用
(2)利用c语言解决实际问题
(3)学会了如何使用devc的调试功能
(4)变量定义应该用单词而不是单个字母
2.你还不会什么
(1)switch语法运用的不够熟练
(2)无法快速找出程序的错误
3.你碰到什么困难,打算如何解决?
(1)编程时容易出现语法错误,需要检查很久才能发现,应该多用编程软件,提升查错速度
(2)还需要多做题目提升自己的能力与速度
(3)对switch语法掌握不熟练,还需多加训练,从课本,慕课,pta上进行学习