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

一、PTA实验作业

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

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

注:可在头文件中包含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(%.2lf) = %.2lf",x,y);
  return 0;

2.设计思路

-第一步:定义浮点形变量x,y
-第二步:输入x
-第三步:如果x>=0,y=sqrt(x)
-第四步:否则 y=pow(x+1,2)+2*x+1/x
-第五步:输出y的值,并保留两位小数

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

忘记了乘号,用Dev C++调试,找到了错误的语句,发现漏了*号,改正了过来

4.本题PTA提交列表

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

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

1.实验代码

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

2.设计思路

-第一步:定义整型变量a,b,c,定义浮点型变量area,s,perimeter
-第二步:分别输入a,b,c的值
-第三步:给出公式s=(a+b+c)/2.0;
area=sqrt(s(s-a)(s-b)*(s-c));
perimeter=a+b+c;
-第四步:如果a+b>c,a+c>b,b+c>a同时成立,输出area和perimeter的值
-第五步:否则输出These sides do not correspond to a valid triangle

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

1.三角形成立条件错误,写成((a+b>c)||(a+c>b)||(b+c>a),自己检查后发现了错误
2.s=(a+b+c)/2.0刚开始写的是s=(a+b+c)/2,利用dev C++调试的时候发现结果总是错误,请教同学后恍然大悟

4.本题PTA提交列表

题目3:出租车计价

本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:
•起步里程为3公里,起步费10元;
•超起步里程后10公里内,每公里2元;
•超过10公里以上的部分加收50%的回空补贴费,即每公里3元;
•营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)。

1.实验代码

	double miles,money;
	int minutes;
	scanf("%lf%d",&miles,&minutes);
	if(miles<3){
		money=10+minutes/5*2;
		printf("%.lf",money);
	}
	else if(miles<10){
		money=10+minutes/5*2+(miles-3)*2;
		printf("%.lf",money);
	}
	else{
		money=10+minutes/5*2+7*2+(miles-10)*3;
		printf("%.lf",money);

2.设计思路

-第一步:定义浮点型变量miles,money,定义整型变量minutes
-第二步:分别输入miles和minutes的值
-第三步:如果miles小于3,则车费money=10+minutes/5*2
-第四步:如果miles小于10,则车费money=10+minutes/5*2+(miles-3)*2
-第五步:否则车费money=10+minutes/5*2+7*2+(miles-10)*3

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

1.刚开始理解错题意,以为是3~13公里内每公里2元,利用dev C++调试,发现结果错误,将13改成10后,调试结果正确
2.不知道结果四舍五入该怎么解决,后面利用dev C++调试,输入%.lf,发现输出的数值和输出样例一样

4.本题PTA提交列表

题目4:程序设计联考

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

1.实验代码

        int account;
	scanf("%d",&account);
	switch(account/100000){
		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.设计思路

-第一步:定义整型变量account
-第二步:输入account的值
-第三步:利用account/100000的值判断出学校的代号
-第四步:输出学校的名字

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

Other University刚开始没用空格隔开,因为题目里也没有空开,后询问同学后,知道了错误的地方。

4.本题PTA提交列表

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

PTA排名

三、本周学习总结

1.你学会了什么?

掌握了switch语句的表达方式:

switch(表达式){
case 常量表达式1:语句段1;break;
...
case 常量表达式n:语句段n;break;
default:               语句段n+1;break;

和两种嵌套的if语句,知道了switch适用于固定值的判断,if else if则适用于范围或区间的判断,switch的执行效率较高

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

1.对于复杂的多分支结构还不是很熟悉
2.四舍五入这个问题还是有点不懂
3.整数除以整数得到的结果还是整数这个结论掌握得还不够,做作业时偶尔还是会犯错

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

1.时间分配不够合理,每次都是等到作业快截止才在赶作业。做个计划表,把自己每天要完成的任务写下来,并严格执行。
2.对于新学代码的格式要求有时会忘记,需要通过翻书才能正确打出代码。多利用课余时间翻书加深自己对代码格式的印象。
3.对于稍微有点难度的题目,刚开始总是感觉很混乱,没有一点思路,需要自己静下心来仔细想一想才会懂。

posted @ 2017-10-26 00:34  hoppp  阅读(283)  评论(6编辑  收藏  举报