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

一、PTA实验作业

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

本题目要求计算下列分段函数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",x,result);

2 设计思路

  • (1)定义两个浮点型变量x,result。
  • (2)输入x的值。
  • (3)若x>=0,result=x开平方。
  • (4)若想x<=0,result=pow(x+1,2)+2*x+1/x。
  • (5)最后以保留两位小数的形式输出result的值。

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

在做本题时,没有什么思路和语法上的错误,主要是格式上,输出中存在空格的遗漏,导致格式错误。

4.本题PTA提交列表

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

1.实验代码

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

2 设计思路

  • (1)定义3个整形变量a,b,c,来代表三角形的三个边长。
  • (2)再定义三个浮点型变量s,area,perimeter,s=(a+b+c)/2,area代表面积,perimeter代表周长。
  • (3)输入三角形的三边边长a,b,c,
  • (4)如果a+b>c 并且 a+c>b 再加上 b+c>a,说明这三条边能构成一个三角形。
  • (5)则perimeter=a+b+c,s=(a+b+c)/2,area=sqrt(s(s-a)(s-b)*(s-c)),计算出周长和面积的值,并输出。
  • (6)若这三条边不能构成三角形则输出These sides do not correspond to a valid triangle。

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

(1)首先第一次在定义变量时没有考虑到s和area,应该为浮点型,导致结果不正确。
(2)再者调用数学函数时没有在前面开头输入编译预处理命令,#include<math.h>
(3)再者就是没有看清题目要求保留几位小数导致结果错误。

4.本题PTA提交列表

题目3: 出租车计价

1.实验代码

	int minute;
	double mileage,fee,extra;
	scanf("%lf%d",&mileage,&minute);
	if(mileage<=3){
		fee=10;
	}
	else if(mileage>3 && mileage<=10){
		fee=10+(mileage-3)*2;
	}
	else{
		fee=10+14+(mileage-10)*3;
	}
	if(minute<5){
		extra=0;
	}
	else{
		extra=minute/5*2;
	}
	fee=fee+extra;
	printf("%.0f",fee);

2 设计思路

  • (1)定义一个整形变量minute,三个浮点型变量mileage,fee,extra(extra代表停车时所多需要交的钱,mileage代表里程。
  • (2)输入mileage,minute的值。
  • (3)如果里程数小于三公里,则fee=10,如果里程数在3公里到10公里之间,则fee=10+(mileage-3)2,如果里程高于十公里,则fee=10+14+(mileage-10)3
  • (4)如果停车的时间mnute<5,则extra=0,否则extra=minute/5*2。
  • (5)最后将fee和extra的值相加放到fee上,最后输出fee的值。

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

(1)第一点就是对题目的含义没有理解透彻,导致结果一直错误,我还一直很纳闷,感觉自己思路没有错可是就是不会对,后来看了同学的代码,与自己对照下,再次去看题目,才理解透彻。
(2)再者就是刚开始对于时间这个额外的前不知道要怎样加到总钱数上,最后是由助教教我在定义一个extra的变量,使得思路更加清晰。

4.本题PTA提交列表

题目4: 程序设计联考

1.实验代码

	int account,x;
	
	scanf("%d",&account); 
	x=account/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;
		
	}

2 设计思路

  • (1)首先定义account,x,这两个整形变量。
  • (2)在输入一个大于六位数的account。
  • (3)x=account/100000,得出x的值。
  • (4)进行条件判断
    switch (x){
    当x= 1:输出("Hunan Agricultural University");break;
    当x= 2:输出("Jishou University");break;
    当x= 3:输出("Huaihua University");break;
    当x= 4:输出("Aerospace University");break;
    当x= 5:输出("Ocean University");break;
    否则 :输出("Other University");break;
    进行以上操作。最后输出相应的答案。

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

这题相对比较简单,就只有因为刚开始接触switch语句是有点不熟悉,在最后漏了个defoult导致结果错误。

4.本题PTA提交列表

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

三、本周学习总结

1.你学会了什么?

本周学习了条件语句的使用,懂得了简单的对于if,if lse,和else if,还有if的嵌套语句的使用,还有switch语句的使用,还学会了如何对自己的代码进行调试。
还接触了for循环语句

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

对于本周的内容都有大致的掌握,可是对于if嵌套语句,和没有else的if语句还不太会用,不是很理解其用法。

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

我觉得遇到问题先自己思考,不懂的话我会去于同学探讨,或则问助教。

posted @ 2017-10-25 20:55  z&jack  阅读(267)  评论(2编辑  收藏  举报