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

1.实验题目

7-7 计算火车运行时间(15 分)

本题要求根据火车的出发时间和达到时间,编写程序计算整个旅途所用的时间。

输入格式:

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

输出格式:

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

 

4-6 输出华氏-摄氏温度转换表(15 分)

输入2个正整数lowerupperlowerupper100),请输出一张取值范围为[lowerupper]、且每次增加2华氏度的华氏-摄氏温度转换表。

温度转换的计算公式:C=5×(F32)/9,其中:C表示摄氏温度,F表示华氏温度。

输入格式:

在一行中输入2个整数,分别表示lowerupper的值,中间用空格分开。

输出格式:

第一行输出:"fahr celsius"

接着每行输出一个华氏温度fahr(整型)与一个摄氏温度celsius(占据6个字符宽度,靠右对齐,保留1位小数)。

若输入的范围不合法,则输出"Invalid."。

 

4-2-6 到底是不是太胖了(10 分)

据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9所得到的公斤数。真实体重与标准体重误差在10%以内都是完美身材(即 | 真实体重 标准体重 | < 标准体重×10%)。已知市斤是公斤的两倍。现给定一群人的身高和实际体重,请你告诉他们是否太胖或太瘦了。

输入格式:

输入第一行给出一个正整数N 20)。随后N行,每行给出两个整数,分别是一个人的身高H(120 < H < 200;单位:厘米)和真实体重W(50 < W 300;单位:市斤),其间以空格分隔。

输出格式:

为每个人输出一行结论:如果是完美身材,输出You are wan mei!;如果太胖了,输出You are tai pang le!;否则输出You are tai shou le!

 

2.设计思路:

7-7 计算火车运行时间

  因输入是两个四位整数,则先把小时和分钟分离开。小时数用到达的直接减去出发的。若到达时间的分钟数大于出发的,用到达的分钟数直接减去出发的;若到达时间的分钟数小于出发的,需要向小时的借位,即到达的分钟数加上60再减去出发的分钟数,此时小时数需减去1。此题还须考虑边界条件,即分钟数相等和时钟数相等的特殊情况。

4-6 输出华氏-摄氏温度转换表

  先判定数据的合法性,若lower>upper或lower>100,则直接输出Invalid。主要是用循环语句每次增加2华氏度再输出相应的摄氏度。最后注意输出的格式正确。

4-2-6 到底是不是太胖了

  读入N行数,算出标准体重,再用真实体重-标准体重的绝对值与标准体重作比较,从而判断太胖、太瘦或完美。

 

3.实现方法:

7-7 计算火车运行时间

  用%和/把时钟数和分钟数分离。再用if语句判断。

4-6 输出华氏-摄氏温度转换表

  用if语句和运算符&&判断数据的合法性,再在if语句中嵌入循环for语句实现每次增加2华氏度。

4-2-6 到底是不是太胖了

  用for循环达到读入N行数。用绝对值函数fabs()计算真实体重与标准体重的绝对值。

 

 

二.源程序

7-7 计算火车运行时间
    h1=t1/100;h2=t2/100;
    m1=t1%100;m2=t2%100;
    if(m1<m2)
    {
     printf("%02d:%02d",h2-h1,m2-m1);
 }
 if(m1>m2)
 {
  printf("%02d:%02d",h2-h1-1,m2+60-m1);
 }
    if(h1==h2 && m1==m2)
 {
  printf("00:00");
 }
 if(m1==m2 && h1!=h2)
 {
  printf("%02d:00",h2-h1);
 }
 

4-6 输出华氏-摄氏温度转换表
 if(lower<=upper && upper<=100 &&lower<=100)
 { 
 printf("fahr celsius\n");
 for(F=lower;F<=upper;F+=2)
 {
  C=5.0*(F-32)/9.0;
  printf("%d%6.1lf\n",F,C);
  }
    }
    else
    printf("Invalid.");
 

4-2-6 到底是不是太胖了


#include<math.h>

 for(i=1;i<=N;i++)
{
 scanf("%lf%lf",&a,&b);
 c=(a-100)*1.8;
 if(fabs(b-c)<c*0.1)
 {
  printf("You are wan mei!\n");
  } 
 if(fabs(b-c)>=c*0.1 && b>c)
 {
 printf("You are tai pang le!\n");
 }
 if(fabs(b-c)>=c*0.1 && b<c)
 {
  printf("You are tai shou le!\n");
 }
}
 

 

 

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

  这几题没有太大难度,主要是一些细节的问题,平时要多留心。

  在4-6 输出华氏-摄氏温度转换表中稍注意输出格式控制(占据6个字符宽度,靠右对齐,保留1位小数)。

  scanf()函数输入数据时经常忘记前面的&。调用数学函数诸如fabs,sqrt,pow时要加头文件#include<math.h>。

  C语言中要表达lower不能像数学的那样,而要分开--lower<=upper&&upper<=100。