PTA-2017实验2.2 计算分段函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PTA-2017实验2.2 计算分段函数相关的知识,希望对你有一定的参考价值。

参考技术A

7-1 计算摄氏温度(10 分)
给定一个华氏温度F,本题要求编写程序,计算对应的摄氏温度C。计算公式:C=5×(F−32)/9。题目保证输入与输出均在整型范围内。

输入格式:
输入在一行中给出一个华氏温度。

输出格式:
在一行中按照格式“Celsius = C”输出对应的摄氏温度C的整数值。

输入样例:

输出样例:

源码

7-2 计算分段函数[1](10 分)
本题目要求计算下列分段函数f(x)的值:

输出样例1:

输入样例2:

输出样例2:

源码

7-3 计算存款利息(10 分)
本题目要求计算存款利息,计算公式为interest=money×(1+rate) ​year ​​ −money,其中interest为存款到期时的利息(税前),money是存款金额,year是存期,rate是年利率。

输入格式:
输入在一行中顺序给出三个正实数money、year和rate,以空格分隔。

输出格式:
在一行中按“interest = 利息”的格式输出,其中利息保留两位小数。

输入样例:

输出样例:

源码

7-4 计算分段函数[2](10 分)
本题目要求计算下列分段函数f(x)的值:

输出样例1:

输入样例2:

输出样例2:

源码

7-5 求整数均值(10 分)
本题要求编写程序,计算4个整数的和与平均值。题目保证输入与输出均在整型范围内。

输入格式:
输入在一行中给出4个整数,其间以空格分隔。

输出格式:
在一行中按照格式“Sum = 和; Average = 平均值”顺序输出和与平均值,其中平均值精确到小数点后一位。

输入样例:

输出样例:

源码

7-6 阶梯电价(15 分)
为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量50千瓦时(含50千瓦时)以内的,电价为0.53元/千瓦时;超过50千瓦时的,超出部分的用电量,电价上调0.05元/千瓦时。请编写程序计算电费。

输入格式:
输入在一行中给出某用户的月用电量(单位:千瓦时)。

输出格式:
在一行中输出该用户应支付的电费(元),结果保留两位小数,格式如:“cost = 应付电费值”;若用电量小于0,则输出"Invalid Value!"。

输入样例1:

输出样例1:

输入样例2:

输出样例2:

源码

7-7 计算火车运行时间(15 分)
本题要求根据火车的出发时间和达到时间,编写程序计算整个旅途所用的时间。

输入格式:
输入在一行中给出2个4位正整数,其间以空格分隔,分别表示火车的出发时间和到达时间。每个时间的格式为2位小时数(00-23)和2位分钟数(00-59),假设出发和到达在同一天内。

输出格式:
在一行输出该旅途所用的时间,格式为“hh:mm”,其中hh为2位小时数、mm为2位分钟数。

输入样例:

输出样例: *

源码

第三次实验计算分段函数 第四次计算分段函数和循环NEW 第五次分支+循环加强版 实验报告

一.实验题目,设计思路,实现方法

第四次分支+循环 加强版 (2-2计算个人所得税,2-7 装睡,2-8计算天数)

设计思路:2-2 用if-else的语句,与计算分段函数的题类似的做法;2-7 运用for语句依次进行呼吸频率和脉搏的比较;2-8 运用数组的思想求出在平年的情况下的天数,然后用if-else进行分支判断是否为闰年加上一天。

实现方法:前两个就是一般的if-else与for语句;2-8 先定义一个整数型数组共十二个元素,然后输入时间进行计算,接着进行平闰年的判断。

二.源程序

2-2 double a,b;
    scanf("%lf",&a);
    if (a<=1600) {
    b=0.00;
    }
    else if (a<=2500) {
    b=0.05*(a-1600);
    }
    else if (a<=3500) {
    b=0.10*(a-1600);
    }
    else if (a<=4500) {
    b=0.15*(a-1600);
    }
    else {
    b=0.20*(a-1600);
    }
    printf("%.2lf",b);

2-7 int i,a,b,N;
  char name [9];
  scanf("%d",&N);
  for (i=1;i<=N;i++) {
    scanf("%s%d%d",name,&a,&b);
    if (a>20||a<15||b<50||b>70) {
      printf("%s\n",name);
    }
  }

2-8 int a,b,c,s,i;
  int m[12]={31,28,31,30,31,30,31,31,30,31,30,31};
  s=0;
  scanf("%d/%d/%d",&a,&b,&c);
  for (i=0;i<b-1;i++) {
    s=s+m[i];
  }
  if (b<2) {
      printf("%d",s+c);
  }
  else {
      if (a%4==0&&a%100!=0||(a%400==0)) {
          printf("%d",s+c+1);
      }
    else {
        printf("%d",s+c);
      }
  }

三.遇到的问题及解决方法,心得体会

2-2 出现了无收入的错误,寻求了学姐的帮助,得知定义了double型的变量,进行计算时的常量最好不能为整型;另外,当a<1600时不能带入进公式计算,否则将出现0负的情况。

2-7 通过这道题学会了如何定义和输入字符,以及懂得了如何控制输出宽度。

2-8 在dev中编译运行无误后提交部分正确,才发现是没考虑到一月的情况,意识到错误后增添了一个if-else的判断所给日期的月份是否大于2的语句,最后才完全正确。

if-else的语句中大括号的位置对齐很重要!

 

以上是关于PTA-2017实验2.2 计算分段函数的主要内容,如果未能解决你的问题,请参考以下文章

第三次实验计算分段函数 第四次计算分段函数和循环NEW 第五次分支+循环加强版 实验报告

[PTA]实验2-2-4 计算分段函数[2]

[PTA]实验2-2-1 计算分段函数[1]

[PTA]实验2-2-6 计算分段函数[3]

第一次实验报告

基础实验3-2.2 单链表分段逆转 (25分)--单链表