1、PTA实验作业
1:计算分段函数【2】
本题目要求计算下列分段函数f(x)的值:
注:可在头文件中包含math.h,并调用sqrt函数求平方根,调用pow函数求幂。
1.实验代码
{
float x,y;
scanf("%f",&x);
if(x >= 0)
y = sqrt(x);
else
y = pow(x+1,2) + 2 * x + 1 / x;
printf("f(%.2f) = %.2f",x,y);
2.设计思路
- (1):定义两个浮点型变量用来储存x,y的值;
- (2):判断x值是否大于0,如果是执行第三步,不是则执行第四步;
- (3):y=sqrt(x);
- (4):y=pow(x+1.2)+2*x+1/x;
- (5):结束程序
3.本题调试过程碰到问题及解决办法
没什么问题吧。
4.本题PTA提交列表(要提交列表,不是结果)
2.输出三角形面积和周长
本题要求编写程序,根据输入的三角形的三条边a、b、c,计算并输出面积和周长。注意:在一个三角形中, 任意两边之和大于第三边。三角形面积计算公式:area=√s(s−a)(s−b)(s−c),其中s=(a+b+c)/2。
1.实验代码
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
float area,perimeter,s;
if((a+b>c)&&(a+c>b)&&(b+c>a))
{
s=(a + b + c) / 2.0;
area=sqrt(s * (s - a) * (s - b) * (s - c));
perimeter = a + b + c;
printf("area = %.2f; perimeter = %.2f",area,perimeter);
}
else
printf("These sides do not correspond to a valid triangle");
}
2.设计思路
- (1):定义三个变量a,b,c分别表示三角形三边的长度;定义两个浮点型变量area和C分别表示三角形的面积和周长。
- (2):读取输入的三边长度;
- (3):根据三角形三边的关系(任意两边的长度大于第三边),判断这三条边是否能构成三角形;
- (4):要是能构成三角形,根据三角形面积公式area=√s(s−a)(s−b)(s−c),其中s=(a+b+c)/2,和周长公式C=a+b+c计算出结果,要是不能构成三角形,直接进行第五步;
- (5):输出结果,结束程序。
3.本题调试过程碰到问题及解决办法
该题目重在判断三边是否可以构成三角形,注意别忘了如何判断就好。
4.本题PTA提交列表(要提交列表,不是结果)
3.出租车计价
本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:
- 起步里程为3公里,起步费10元;
- 超起步里程后10公里内,每公里2元;
- 超过10公里以上的部分加收50%的回空补贴费,即每公里3元;
- 营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)。
1.实验代码
{
float L;
int money,time;
scanf("%f %d",&L,&time);
if(L <= 3)
money = 10 + time / 5 * 2 + 0.5;
else if(3 < L && L <= 10)
money = 10 + (L - 3) * 2 + time / 5 * 2 + 0.5;
else
money = 24 + (L - 10) * 3 + time / 5 * 2 + 0.5;
printf("%d",money);
}
2.设计思路
- (1):定义一个浮点型变量L表示行驶里程,定义两个整型变量money和time分别表示收费和停车时间;
- (2):输入行驶里程和停车时间:
- (3):要是L<=3,计算 money = 10 + time / 5 * 2 + 0.5;
- (4):要是3<L<=10,计算money = 10 + (L - 3) * 2 + time / 5 * 2 + 0.5;
- (5):要是L>10,计算money=24+(L-10)3+time/52+0.5;
- (6):输出money。
3.本题调试过程碰到问题及解决办法
该题目要求我们最后的结果需要四舍五入,所以在计算money的时候,我在后面都加上了一个0.5,这样就可以满足题目要求了。
4.本题PTA提交列表
4.程序设计联考
自从湖南农业大学、吉首大学和怀化学院组织程序设计课程联考以后,举办联考的经验越来丰富。尤其是在使用PTA系统作为考试平台之后,联考工作得到了很多学校的认可和支持。所以,现在参与联考的学校比较多。为了便于区分考生,考生账号的第一位是学校代号。1代表Hunan Agricultural University,2代表Jishou University,3代表Huaihua University,4代表Aerospace University,5代表Ocean University。 请编写程序根据考生的账号区分考生的学校。
1.实验代码
{
int account;
scanf("%d",&account);
switch(account / 100000){
case(1):printf("Hunan Agricultural University");
break;
case(2):printf("Jishou University");
break;
case(3):printf("Huaihua University");
break;
case(4):printf("Aerospace University");
break;
case(5):printf("Ocean University");
break;
default:printf("Other University");
break;
}
2.设计思路
- (1):定义一个整型变量account表示学生学号
- (2):输入该学生学号,并计算account/100000取它最高位上的数
- (3):利用switch语句,判断该数字是多少,并进入对应的输出语句,结束程序
3.本题调试过程碰到问题及解决办法
刚开始我定义的一个变量来表示account/100000的值,后来发现这一步是多余的,我直接把这个计算式放入switch后,调试后发现也可以。
4.本题PTA提交列表(要提交列表,不是结果)
二、截图本周题目集的PTA最后排名
三、本周学习总结
1.你学会了什么?
学会了if else 语句和switch语句的使用,并且了解了这两种语句的区别,在PTA最后那个题目时,开始想着要有24种case来计算平年和闰年的的天数,后来和同学讨论后,发现更为简便的方法,感觉很有趣,有时候思考问题的角度需要多方面的。
2.本周的内容,你还不会什么?
可能一些比较困难的题目自己还不会做,大体内容感觉都可以理解。
3.你碰到什么困难,打算如何解决?
有的题目一开始一点思路都没有,需要询问同学给我一点思路,并且在一些问题的争论中自己也学会了去调试程序来得出结论。