一.实验题目,设计思路,实现方法
1.实验题目
7-7 计算火车运行时间(15 分)
本题要求根据火车的出发时间和达到时间,编写程序计算整个旅途所用的时间。
输入格式:
输入在一行中给出2个4位正整数,其间以空格分隔,分别表示火车的出发时间和到达时间。每个时间的格式为2位小时数(00-23)和2位分钟数(00-59),假设出发和到达在同一天内。
输出格式:
在一行输出该旅途所用的时间,格式为“hh:mm”,其中hh为2位小时数、mm为2位分钟数。
4-6 输出华氏-摄氏温度转换表(15 分)
输入2个正整数lower
和upper
(lower
≤upper
≤100),请输出一张取值范围为[lower
,upper
]、且每次增加2华氏度的华氏-摄氏温度转换表。
温度转换的计算公式:C=5×(F−32)/9,其中:C表示摄氏温度,F表示华氏温度。
输入格式:
在一行中输入2个整数,分别表示lower
和upper
的值,中间用空格分开。
输出格式:
第一行输出:"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。