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

一、PTA实验作业

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

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

f2-11

注:可在头文件中包含math.h,并调用sqrt函数求平方根,调用pow函数求幂。

1.实验代码

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

2 设计思路

第一步:定义两个双精度浮点型变量x,y
第二步:从键盘输入一个数存入x中
第三步:若x大于等于0则y等于根号x
第四步:否则y= pow(x+1,2) + 2*x + 1/x
第五步:输出y

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

1.要开根号跟求平方时只输入了sqrt以及pow导致答案不准确。解决方法:在代码开头输入#include<math.h>

4.本题PTA提交列表

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

1.实验代码

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

2 设计思路

第一步:定义三个整形变量a,b,c
第二步:输入三个整形变量分别存入啊a,b,c中
第三步:定义三个双精度浮点型变量s,area,primeter
第四步:计算s=(1.0a+1.0b+1.0c)/2;
第五步:计算area=sqrt(s
(s-1.0a)(s-1.0b)(s-1.0*c));
第六步:计算primeter=a+b+c
第七步:判断a,b,c是否满足两边之和大于第三边,若满足则输出area和perimeter若不满足则输出These sides do not correspond to a valid triangle

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

1.对分支结构掌握不熟练导致程序判断错误输出错误的答案。解决方法:通过调试,修改if条件句中的条件。

4.本题PTA提交列表

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

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

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

1.实验代码

int fee,minute;
	double mile;
	scanf("%lf %d",&mile,&minute);
	if(mile<=3.0&&minute<5){
		fee=10;
	}
	if(mile<=3.0&&minute>=5){
		fee=10+minute/5*2;
	}
	if(mile>3.0&&minute<5){
		fee=10+(mile-3)*2; 
	}
	if(mile>3&&minute>=5){
		fee=10+(mile-3)*2+minute/5*2;
	}
	if(mile>=10&&minute<5){
		fee=10+7*2+(mile-10)*3;
	}
	if(mile>=10&&minute>=5){
		fee=10+7*2+3*(mile-10)+2*minute/5;
	}
	printf("%d",fee);
	return 0;

2 设计思路

第一步:定义两个整形变量fee与minute
第二步:定义一个双精度浮点型变量mile
第三步:输入两个数分别存于mile与minute中
第四步:判定mile与minute与题目所给条件的关系
第五步:根据判定结果算出不同的fee的值
第六步:输出符合条件的fee值

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

1.判定条件打的不准确导致结果错误。解决办法:通过Dev c的调试找出问题并修改
2.将mile定义为整形变量导致答案错误。解决办法:调试并更深一步了解整形变量与浮点型变量的定义并修改

4.本题PTA提交列表

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

1.实验代码

int number,x;
	scanf("%d",&number);
	x=number/100000;
	switch(x){
	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;
	}
	return 0;

2 设计思路

第一步:定义两个整形变量number,x
第二步:输入一个数存于number中
第三步:求出数number的第一位数字x
第四步:用switch语句对x进行判定
第五步:根据不同判定结果输出不同大学

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

1.对于switch语句掌握程度不够,case语句后忘记加break导致结果错误。解决办法:通过看书上代码找出错误。

4.本题PTA提交列表

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

三、本周学习总结

1.你学会了什么?

学会了用分支结构去编写c语言程序,并能通过分支结构去解决一些简单的问题。

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

对于if else语句跟switch语句的具体区别还不是太清楚,比如步知道什么时候用switch语句更方便。

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

课后认真复习,勤思考,勤打代码,不会的问题多问同学跟老师。

posted @ 2017-10-25 15:44  爻象  阅读(1243)  评论(6编辑  收藏  举报