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

一、PTA实验作业

题目1:7-1 计算分段函数

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

1.实验代码

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

2 设计思路

  • 1.先定义两个变量x,y。
  • 2.输入x的值。
  • 3.如果x>=0,则用公式 y=pow(x,0.5);计算,如果x<0则用公式 y=pow(x+1,2)+2*x+1/x;进行计算。
  • 4.输出f(x)的值。

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

  • 1.在定义语句 scanf("%lf",&x);时忘记在x前面加上&。 解决办法:系统提示编译错误后就仔细看了一遍程序,把&加上去就可以运行了。
  • 2.没有注意f(x) = result之间的空格。 解决办法:加上空格就对了。

4.本题PTA提交列表

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

本题要求编写程序,根据输入的三角形的三条边a、b、c,计算并输出面积和周长。注意:在一个三角形中, 任意两边之和大于第三边。三角形面积计算公式:area=√
​s(s−a)(s−b)(s−c) ,其中s=(a+b+c)/2。

1.实验代码

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

2 设计思路

  • 1.定义三个变量 side1,side2,side3;来表示输入的三条边长,再定义三个变量area,perimeter,s;来分别表示三角形的面积,周长,以及1/2周长。
  • 2.如果输入的三个数满足两边之和大于第三边,即side1+side2>side3&&side2+side3>side1&&side1+side3>side2,则将这三个边长代入公式s=(side1+side2+side3)1.0/2;计算1/2周长。将1/2周长代入area=sqrt(s(s-side1)(s-side2)(s-side3));计算面积。将三条边长代入 perimeter=side1+side2+side3;中计算出周长。
  • 3.输出area,perimeter.
  • 3.如果不满足两边之和大于第三边则输出"These sides do not correspond to a valid triangle".

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

  • 在s=(side1+side2+side3)*1.0/2;算式中没有乘以1.0,导致运算结果一直不正确。
  • 解决办法:在devc中监视变量s,area,perimeter.调试运行时输入5 5 3,调试过程中s的值却为6,回去看程序发现是整数除以整数问题没注意,在算式里乘以1.0就对了。

4.本题PTA提交列表

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

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

  • 起步里程为3公里,起步费10元;

  • 超起步里程后10公里内,每公里2元;

  • 超过10公里以上的部分加收50%的回空补贴费,即每公里3元;

  • 营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)。

1.实验代码


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

2 设计思路

  • 1.定义三个变量mile表示行驶路程,y表示正常行驶的收费,time表示临时停车的时间,fx表示临时停车的收费。
  • 2.如果time小于5则fx=0,如果fx大于5,则fx=time/5*2;
  • 3.如果mile小于3,y=10,如果mile大于3小于10,y=10+2(mile-3);如果mile大于10,y=24+3(mile-10);
  • 4.输出总费用即y+fx

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

  • 1.最后输出的值部分正确,部分不正确,后来发现是因为没有四舍五入。 解决办法:一开始先去百度怎么四舍五入,可是还是没有正确,最后是问了同学将printf后的%lf,改成%。0lf就正确了。
  • 2.提交pta后显示部分正确。 解决办法:回去仔细读了遍题发现时间定义成了双精度浮点型,改成整型就对了。

4.本题PTA提交列表

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

自从湖南农业大学、吉首大学和怀化学院组织程序设计课程联考以后,举办联考的经验越来丰富。尤其是在使用PTA系统作为考试平台之后,联考工作得到了很多学校的认可和支持。所以,现在参与联考的学校比较多。为了便于区分考生,考生账号的第一位是学校代号。1代表Hunan Agricultural University,2代表Jishou University,3代表Huaihua University,4代表Aerospace University,5代表Ocean University。 请编写程序根据考生的账号区分考生的学校。

1.实验代码

int account,math;
	scanf("%d",&account);
	math=account/100000;
	switch(math){
	  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;

2 设计思路

  • 1.定义两个变量,account表示考生账号,math表示考生账号的第一位。
  • 2.math=account/100000计算出math的值。
  • 3.如果math=1输出"Hunan Agricultural University“,如果math=2输出"Jishou University”,如果math=3输出"Huaihua University“,如果math=4输出”Aerospace University“,如果math=5输出”Ocean University“。
  • 4.如果math等于其他值则输出"Other University”

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

  • 1.一开始不知道要用switch语句,用了if-else语句 。 解决办法:将if-else语句改为switch语句。
  • 2.提交到pta提示部分正确。 解决办法:将输出的量与题目对照发现学校名称打错了,改过来就正确了。

4.本题PTA提交列表

PTA排名

三、本周学习总结

1.你学会了什么?

  • 1.if-else语句的运用比之前熟练了一点,switch语句也可以进行简单的应用。
  • 2.真正体会到了整数除以整数问题中乘不乘1.0的差别。
  • 3学会了用devc调试程序来找出自己程序的错误。

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

  • 如果需要判断一个范围内的一些数一定要求用switch语句来做的话可能就不怎么会写。

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

  • 1.在输入变量的值scanf中变量前老是忘记加&,导致devc停止运行。经过这几次印象已经挺深了,以后对这个问题也会多加注意。
  • 2.判断条件时经常把“==”误用成“=”,然后输出的结果与正确答案相差非常大,以后会记住并注意的。
posted @ 2017-10-24 18:03  晗光凡影  阅读(253)  评论(1编辑  收藏  举报