Longjingrap

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一,PTA实验作业

题目1.计算分段函数

本题目要求计算下列分段函数f(x)的值

1.代码

double x, result;
	scanf("%lf", &x);
	if (x >=0)
    result = sqrt(x);
	else
	  result = pow( x + 1, 2) + 2 * x + 1 / x;
	printf ("f(%.2f) = %.2f\n", x, result);
	return 0;

2.设计思路

  • (1)定义变量x和result;
  • (2)用if else语句进行分支
  • (3)x>=0 输出result = sqrt(x)
  • (4)否则输出result = pow( x + 1, 2) + 2 * x + 1 / x

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

  • (1)未输入数学函数#include(math.h),后来提示编码错误才意识到
  • (2)数学函数语法记不牢,把sqrt打错,pow的运用也记不牢,只好重新翻书记忆

4.本题PTA提交列表

题目2.输出三角形面积和周长

本题要求编写程序,根据输入的三角形的三条边a、b、c,计算并输出面积和周长。注意:在一个三角形中, 任意两边之和大于第三边。

1.代码

int a,b,c;
  double s,area,perimeter;
	scanf("%d%d%d",&a,&b,&c);
	if(a+b>c&&b+c>a&&a+c>b){
		s = (a+b+c)/2;
		area = sqrt(s*(s-a)*(s-b)*(s-c));
		perimeter = a+b+c;
  printf("area = %.2f; perimeter = %.2f\n",area,perimeter);
	}
	else{
	printf("These sides do not correspond to a valid triangle\n");

2.设计思路

  • (1)定义三边a,b,c和s,面积area,周长perimeter
  • (2)若三边符合三角形任意两边的和大于第三边,输出周长和面积
  • (3)不符合就输出These sides do not correspond to a valid triangle

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

  • (1)不懂得如何判断三角形任意两边的和大于第三边,最后去网上查阅
  • (2)没看清楚题目就开始写代码,前面要求直接输入数据,我打多了printf,导致一直错误,最后舍友提醒才意识过来

4.本题PTA提交列表

题目3.出租车计价

本题要求根据某城市普通出租车收费标准编写程序进行车费计算。

1.代码

double s,p1,p2,p;
	int n,t;
	scanf("%lf%d",&s,&t);
	if(s<=3){
		p1=10;
		}
	else if(s>3&&s<=10){
		p1=10+(s-3)*2;
		}
	else if(s>10){
		p1=24+(s-10)*3;
		}
	if(t<5){
		p2=0;
	}
	else if(t>=5){
		n=t/5;
		p2=2*n;
	}
	p=p1+p2;
	printf("%.lf\n",p);
	return 0;

2.设计思路

  • (1)定义变量路程s,时间t,路程收费p1,时间收费p2,总费用p,和n
  • (2)采用分支结构首先计算路程的收费p1
  • (3)再使用另外一个分支计算时间的费用p2
  • (4)把路程费用p1和时间费用p2相加得总费用p,然后输出

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

  • (1)题目关系式太多,无法下手,只好请教同学和上网搜索
  • (2)把题目的路程收费关系式列错,答导致案一直错误,重新认真阅读题目才发现错误

4.本题PTA提交列表

题目4.程序设计联考

请编写程序根据考生的账号区分考生的学校

1.代码

int account,n;
	scanf("%d",&account);
	 n=account/100000;
	 switch(n){
	 	case 1:
	 	printf("Hunan Agricultural University",n);
	 	break;
	 	case 2:
		printf("Jishou University",n);
	 	break;
	 	case 3:
		printf("Huaihua University",n);
		break;
		case 4:
		printf("Aerospace University",n);
		break;
		case 5:
		printf("Ocean University",n);
		break;
		default:
		printf("Other University",n);
		break;
		}
		return 0;

2.设计思路

  • (1)定义变量account,n
  • (2)利用n=account/100000求出六位数的第一位数
  • (3)采用switch语句,用caes 1-case 5来进行各个高校的输出
  • (4)如果n>5则输出Other University

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

  • (1)case后面用‘ ’来输入数字,导致结果只输出Other University,最后跟舍友讨论后发现错误
  • (2)不熟悉swtitch语句,只好翻开课本加深印象

4.本题PTA提交列表

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

三,本周学习总结

1.你学会了什么?

  • (1)学会了switch语句,也加深else if等分支结构的知识与运用
  • (2)要想写好算法,数学和细心必不可少,所以平时空闲时既要多敲代码,也要多学习数学,敲代码的时候要细心,不能太急躁,否则容易犯下小错误
  • (3)一道题目的算法有多种,在能计算的前提下要选择相对简单明了的算法,不能把题目复杂化。

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

  • (1)最主要的问题还是各种语法的熟练度不够
  • (2)编码错误时无法自己辨别错误在哪里,最后都是通过网上查询和请教舍友才明白错误所在

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

  • (1)首先自己来检查,来发现错误所在。
  • (2)实在检查不出来就请教舍友和班上的同学还有老师。
  • (3)多去网上查阅相关的知识,找出大致相同的算法来对比,找出错误。
posted on 2017-10-21 16:56  Longjingrap  阅读(317)  评论(1编辑  收藏  举报