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.设计思路

  • 第一步:定义俩个浮点型变量x和double。
  • 第二步:输入变量x的值。
  • 第三步:使用if else分支结构语句判断x的值,若x大于等于0,则结果为根号x,反之为(x+1)的平方加2x加x分之一。
  • 第四步:输出得到的结果,并保留2位小数。

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

  • 答案错误,中文输入发的问题;在编写代码是误用了中文输入发输出小括号(),使得答案错误,在老师的指点下,改正过来。

4.本题PTA提交列表

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

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

  • 第一步:定义双精度浮点型变量a,b,c,s,area,perimeter。
  • 第二步:输入变量啊a,b,c的值。
  • 第三步:根据公式perimeter=a+b+c,s=(a+b+c)/2,area = sqrt(s(s-a)(s-b)*(s-c));计算三角形的周长和面积。
  • 第四步:判断所输入的三条边是否满足三角形“俩条边之和大于第三条边”的关系,满足则输出三角形的面积和周长,反之输出These sides do not correspond to a valid triangle。

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

  • 或,与,非的用法还未完全了解,以至于在输入if的条件时把a+b>c&&a+c>b&&b+c>a输成了a+b>c||a+c>b||b+c>a,翻书后明白了三者符号的含义,输出了正确的答案。

4.本题PTA提交列表

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

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

1.实验代码

double s,money1,money2,sum;
int n,t;
scanf("%lf%d",&s,&t);
if(s<=3){
money1=10;
}
else if(s>3&&s<=10){
money1=10+(s-3)2;
}
else if(s>10){
money1=24+(s-10)
3;
}
if(t<5){
money2=0;
}
else if(t>=5){
n=t/5;
money2=2*n;
}
sum=money1+money2;
printf("%.lf\n",sum);

2.设计思路

  • 第一步:定义变量s,money1,money2,sum;分别代表路程,路程的费用,时间的费用和总费用。
  • 第二步:输入出租车行走的路程和时间。
  • 第三步:用if else语句判断路程和时间的长短,并计算出相应的费用。
  • 第四步:输出这次乘车的总费用。

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

  • 在提交的过程中,总是部分正确,pta提示是没有判断三公里和五分钟,这也使得我非常纳闷,在Dev c++上输出的结果都可以,最后找出了错误,题目没有看清,要将时间和路程分开来计算。

4.本题PTA提交列表

题目4:程序设计联考

1.实验代码

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

2.设计思路

  • 第一步:定义俩个变脸account,n;account用来放输入的学号,n用来放学号的第一个数字。
  • 第二步:判断n中的数字。
  • 第三步:输出相应的大学名称。

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

  • 和上一题一样,也是部分正确,错误在最后的一个Other University,在pta题目上Other和University间没有空格,复制粘贴得到的结果就是部分正确。

4.本题PTA提交列表

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

三、本周学习总结

1.你学会了什么?

  • 这一周,我学会了if else语句,while语句,switch语句,for语句的使用方法;还有使用break与不使用的区别;char的定义;case的用法;还有判断字符要用’‘号引起,判断数字则不需要。

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

  • 主要还是不熟悉,反应不快,并没有什么不会的内容。

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

  • 同上一周一样,在接触新的知识后,不能很好的用所学的知识打出完全正确的代码,需要翻书不断的巩固细节上的东西。写代码首先想到的是更前一段时间所学的,比如先用if else语句,写不出后才用switch语句。认为自己还是需要不断的更快的适应新知识的使用。

posted on 2017-10-26 00:07  不是本人  阅读(464)  评论(5编辑  收藏  举报

导航