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.你碰到什么困难,打算如何解决?

有的题目一开始一点思路都没有,需要询问同学给我一点思路,并且在一些问题的争论中自己也学会了去调试程序来得出结论。