C语言第二次博客作业---分支结构

一、PTA实验作业

题目1.计算分段函数[2]

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

1.代码

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

2.设计思路

  • (1)定义浮点型变量x,result
  • (2)输入x
  • (3)如果x>=0,则result=pow(x,0.5),如果x<0,则result=pow(x+1,2)+2*x+1/x.
  • (4)输出f(x) = result,x与result都保留两位小数.

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

  • (1)开始没有注意要保留两位小数,导致答案错误,后来认真读题便找出了原因。

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);
	double s,area,perimeter;
	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\n",area,perimeter);
	}
	else{
	  printf("These sides do not correspond to a valid triangle\n");
	}

2.设计思路

  • (1)定义三个整型变量a,b,c,分别表示三角形三条边长。再定义三个浮点型变量 s,area,perimeter,分别表示周长的一半,面积,周长。
  • (2)输入三条边长a,b,c
  • (3)利用三角形的定义,使用if-else语句,输入表达式(a+b>c)&&(a+c>b)&&(b+c>a)作为条件
  • (4)如果三条边满足s = (a+b+c)/2.0,area = sqrt(s(s-a)(s-b)*(s-c)),则输出面积与周长。否则输出These sides do not correspond to a valid triangle。

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

  • (1)开始没有把公式放入if语句中,导致出现错误,后来通过仔细观察课本的代码,找出原因
  • (2)之前可能是由于复制过来的原因,少了int main(void),自己仔细看了很久也没能找出来,实在没办法最后发到群里被老师一眼看出,十分尴尬。。。以后要尽量避免这种低级错误。

4.本题PTA实验结果


题目3.出租车计价

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

起步里程为3公里,起步费10元;
超起步里程后10公里内,每公里2元;
超过10公里以上的部分加收50%的回空补贴费,即每公里3元;
营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)

1.代码

{
	int time;
  double mile;
	scanf("%lf%d",&mile,&time);   
	if(mile<=3){
	printf("%d",10+time/5*2);
	}
	else if(mile>3&&mile<=10){
	printf("%.0f",10+(mile-3)*2+time/5*2);
	}
	else{
	printf("%.0f",24+(mile-10)*3+time/5*2);
	}

2.设计思路

  • (1)定义time表示时间,mile表示公里
  • (2)输入公里和时间
  • (3)如果小于三公里,则通过10+time/5*2计算出价格并输出
  • (4)如果大于三公里小于十公里,则通过10+(mile-3)2+time/52计算出价格并输出
  • (5)如果大于十公里,则通过24+(mile-10)3+time/52计算出价格并输出。

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

  • (1)开始的时候公式都写错了,然后答案一直错误,后来我把计算步骤先在草稿上写了出来,并列了一个简单的算法,才打成功。
  • (2)把小于三公里的价格定义成了%.0f,当输入第一组数据的时候答案为0,通过同学的帮助知道了当公式里只有整型而没有浮点型的时候,输出的结果也必须定义为整型

4.本题PTA实验结果


题目4.程序设计联考

自从湖南农业大学、吉首大学和怀化学院组织程序设计课程联考以后,举办联考的经验越来丰富。尤其是在使用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;
  switch(number){
  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,一个输出数字number
  • (2)通过number=account/100000,把考生账号的首位数赋值给number
  • (3)若number为1,则输出Hunan Agricultural University
  • (4)若number为2,则输出Jishou University
  • (5)若number为3,则输出Huaihua University
  • (6)若number为4,则输出Aerospace University
  • (7)若number为5,则输出Ocean University
  • (8)否则,则输出Other University

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

  • (1)把number=account/100000放在了scanf语句之前,结果一直错误,后来在devc++多次尝试找到了错因

4.本题PTA实验结果

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

三、学习总结

1.你学会了什么?

  • (1)学会了运用if-else语句
  • (2)学会了怎么定义四舍五入的整数
  • (3)学会了在程序中如何利用数学函数来解决问题
  • (4)学到了新的switch语句

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

  • (1)switch还不能熟练掌握
  • (2)for循环语句没能弄清楚到底怎么使用
  • (3)在打代码的过程中还是容易出现一些简单的错误,不能准确转换浮点型变量和整形变量,导致答案经常错误

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

-我感觉在打代码的过程中还是比较吃力,在遇到一些比较复杂的程序,在不借助课本的情况下很难独自打出来,在做PTA作业的时候有的一两道题甚至做了两三个小时都还做不出正确答案,在学习和生活上的时间安排的比较混乱,感觉自己平时很忙但是也并没有学到很多东西,希望在接下的日子,慢慢的习惯大学的生活节奏,习惯属于我们专业的生活节奏。

posted @ 2017-10-25 20:27  故三  阅读(488)  评论(0编辑  收藏  举报