一、PTA实验作业

题目1:计算分段函数

1.实验代码

	double x,y;
	scanf("%lf",&x);
	if(x>=0){
	  y=sqrt(x);
	  printf("f(%0.2f) = %0.2f",x,y);
	}
	else{
	  y=pow(x+1,2)+2*x+pow(x,-1);
	  printf("f(%0.2f) = %0.2f",x,y);
	}

2.设计思路

(1)定义双精度浮点型变量x,y;
(2)输入变量x的值;
(3)判断x的值:
如果x大于等于0,那么y=sqrt(x);
否则以表达式y=pow(x+1,2)+2*x+pow(x,-1);
(4)输出答案f(x)=result。

3.本题调试过程碰到问题及解决办法

  • 本题没有遇到新的问题,还是常见的小错误,乘号被忽略;虽然还是错了,但是一下子就反应过来了!

4.本题PTA实验结果

题目2:7-4 输出三角形面积和周长

1.实验代码

  int a,b,c;
  double area,perimeter ,s;
  scanf("%d %d %d",&a,&b,&c);
  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为三角形面积,perimeter 为三角形周长,s;
(2)输入a,b,c三条边长的值;
(3)判断三条边长能否构成三角形,即任意两边和大于第三边;
如果能构成三角形,则area=sqrt(s(s-a)(s-b)*(s-c)),perimeter=a+b+c,其中s=(a+b+c)/2,然后输出三角形的面积和周长;
否则输出These sides do not correspond to a valid triangle。

3.本题调试过程碰到问题及解决办法

  • 没有意识到整型除于整型的结果也是整型,导致调试时结果老是错误的,把除数的2改成2.0就好了;
  • 任意两边和大于第三边的条件表达不准确;

4.本题PTA实验结果


题目3:7-6 出租车计价

1.实验代码

	int  minute;
	float miles,cost;
	cost=10;
	scanf("%f %d",&miles,&minute);
	
	if(miles<=3)
	  cost=cost+minute/5*2;
	else if(miles>3&&miles<=10)
	  cost=cost+(miles-3)*2+minute/5*2;
	else
	  cost=cost+14+(miles-10)*3+minute/5*2;
	
	printf("%.0f",cost);
	

2.设计思路

(1)定义整型变量等待时间minute,单精度浮点型变量miles为行车里程,总费用为cost;
(2)起步费为10元,所以给cost赋的初值为10;
(3)当里程不超过三公里时,cost=cost+minute/52;
当里程在三到十公里之间时,cost=cost+(miles-3)
2+minute/52;
当里程超过十公里时,cost=cost+14+(miles-10)
3+minute/5*2;
(4)输出总费用cost的值。

3.本题调试过程碰到问题及解决办法

(1)一开始把cost设成整型变量,但是这样的结果并不能自动进行四舍五入,所以尝试把它设成浮点型变量,然后保留0位小数,调试结果正确;
(2)题目中的“超过起步里程后十公里内”理解错误,误以为是超过里程后的十公里,所以导致答案错误,后来请教同学后才理解。

4.本题PTA实验结果


题目4:7-8 程序设计联考

1.实验代码

  int account,i; 
  scanf("%d",&account);
  i=account/100000;
	
  switch(i){
    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表示六位数的学号,i为学号的首位;
(2)用i=account/100000来取学号的首位;
(3)当i=1时输出Hunan Agricultural University;
当i=2时输出Jishou University;
当i=3时输出Huaihua University;
当i=4时输出Aerospace University;
当i=5时输出Ocean University;
(4)否则输出Other University;

3.本题调试过程碰到问题及解决办法

  • 本题主要是因为在复制答案时一个输出结果多了一个空格,一个答案少了一个空格;其他的答案都是中间空一格,所以试着调整了一下;复制答案也不一定是准确的,以后会留心些。

4.本题PTA实验结果


二、截图本周题目集的PTA最后排名。

三、本周学习总结

1.你学会了什么?

(1)学会了调试:之前编译有错误了有些错误提示看不懂,找起来很麻烦;但是学会了调试之后,自己可以给自己纠错,而且效率会有所提高;
(2)学了分支结构一些基础的用法,可能运用起来还不是很好,但是通过完成PTA和预习作业,感觉运用起来会非常方便;
(3)明白了if-else语句和switch语句的主要区别,然后根据情况使用更适合的语句,也会减少好多麻烦。

2.本周的内容,你还不会什么?

(1)分支结构的算法写得还是比较差,表述的不好,会多向写得好的同学学习;
(2)if-else语句中的大括号有和没有的区别还不是很清楚;

3.你碰到什么困难,打算如何解决?

(1)理解能力需要加强,而且写算法花费的时间太多了,导致题目做得慢,多看看同学的算法,先学习他们的基本框架让自己先能够掌握;
(2)有时候写的程序太复杂了,没有想到比较简便的解题思路,会走很多弯路,代码看起来也不好看,应该还是需要多练习多实践。

posted on 2017-10-26 13:04  EVOLYM  阅读(187)  评论(4编辑  收藏  举报