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(%.2f) = %.2f\n",x,y);

 

2.设计思路

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

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

问题:在输入时scanf(“%.2f”,&x);

  解决方法:后来想到后面的printf有要精确小数的,就分别去掉一个调试了一下。

4.本题PTA提交列表

 

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

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

1.实验代码

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

 

2.设计思路

 第一步:定义整型变量边长a,b,c,浮点型变量s,面积area,周长perimeter

 第二步:输入a,b,c的值

 第三步:如果a+b>c并且b+c>a并且a+c>b,则perimeter=(a+b+c)*1.0;  s=(a+b+c)/2.0; area=sqrt(s*(s-a)*(s-b)*(s-c));并且输出面积area和周长perimeter的值,并且保留两位小数

 第四步:否则,则输出 “These sides do not correspond to a valid triangle”

 

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

•  问题:原本写成perimeter=a+b+c; s=(a+b+c)/2; devc++上运行答案总是不对

   解决方法:后来经同学指导,才想起来面积和周长是定义的浮点型,a,b,c是整型,根据题目要求的输出改成perimeter=(a+b+c)*1.0; s=(a+b+c)/2.0; 

  问题: 在devc++运行答案正确了之后,提交课堂派依旧不对,提交很多次还是不对

   解决方法:重新看了很多次题目要求后,发现在输出“These sides do not correspond to a valid triangle”时习惯性加了一个句点,“These sides do not correspond to a valid      

                     triangle.”,没有看清输出要求带来的不必要的麻烦。

4.本题PTA提交列表     

 

题目3:出租车计价

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

1.实验代码

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

2.设计思路

• 第一步:定义整型变量时间time,浮点型变量距离distance,费用money
• 第二步:输入distance和time的值
• 第三步:如果0<distance<=3,则费用money=10+(time/5)*2
• 第四步:如果3<distance<=10,则费用money=10+(distance-3)*2+(time/5)*2
• 第五步:否则费用 money=10+2*7+(distance-10)*3+(time/5)*2;

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

 问题:题意不理解,认为步骤4是3<distance<=13,答案一直不对

  解决方法:后来试了3<distance<=10

 问题:题目没有看清,一直都没有将时间的费用乘以2,导致结果错误

  解决方法:重新认真看了几遍题目,发现问题

4.本题PTA提交列表

 

 

题目4:程序设计联考

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

1.实验代码

    int a,number;        //a为一个六位整数,number为六位整数的第一位数字 
    scanf("%d",&a);
    number=a/100000;
    switch(number){
    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.设计思路

第一步:定义整型变量a,number,a为六位整数

第二步:输入a的值

第三步:利用number=account/100000计算出第一个数字

第四步:运用switch(number),case1输出Hunan Agricultural University,case2输出Jishou University,case3输出Huaihua University,case4输出Aerospace University,case5输出Ocean University,否则输出Other University

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

问题:case开始的时候没用空格隔开,没写default

  解决方法:翻书,请教同学发现问题,然后调试多遍通过了

4.本题PTA提交列表

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

 

PTA排名

 提交列表

 

三、本周学习总结

1.你学会了什么?

上周不会的switch现在会了,知道了case和break用处和使用方法,也会了switch与if的嵌套 。懂得了switch与if的if效率高区别,switch可以用break结束判断,if不行,所以switch也会比效率高,但是if语句的条件可表示范围,switch不可以,等等。还有字符型变量的输入,懂得ch=getchar(),putchar()是一次只能输入一个的,经常情况下要使用循环结构输入多个。单引号引起来的不管是数字还是符号都算作字符等等。

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

1. 题意理解依旧困难,遇到复杂的分支结构,思考后还是不清楚

2. 对于用乘以1.0使得数据成为浮点型,还是不清楚具体要在哪里加上

3. devc++上的调试还不是很会,有时还是一直盯着查看错误,很耗时

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

困难:题目不是理解不清楚就是审题不认真,复杂的题型不敢下手,看书经常前面刚看后面做题的时候就忘了

如何解决:我以后在做题前就先慢慢地把题目审清楚,看书记不住就多看几遍,多敲代码敲代码敲代码,越来越熟练就越来越不害怕下手复杂的程序。

posted on 2017-10-26 15:38  黑白熊熊  阅读(351)  评论(5编辑  收藏  举报

导航