一.实验题目,设计思路,实现方法。
题目一 7-7计算火车运行的时间
本题要求根据火车的出发时间和达到时间,编写程序计算整个旅途所用的时间。
输入格式:
输入在一行中给出2个4位正整数,其间以空格分隔,分别表示火车的出发时间和到达时间。每个时间的格式为2位小时数(00-23)和2位分钟数(00-59),假设出发和到达在同一天内。
输出格式:
在一行输出该旅途所用的时间,格式为“hh:mm”,其中hh为2位小时数、mm为2位分钟数
题目二 4-6 输出华氏-摄氏温度转换表
输入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."。
输入样例1:
32 35
输出样例1:
fahr celsius 32 0.0 34 1.1
输入样例2:
40 30
输出样例2:
Invalid
题目三 4-2-6是不是太胖了
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!
。输入样例:
3 169 136 150 81 178 155
输出样例:
You are wan mei! You are tai shou le! You are tai pang le!
题目四 4-2-7装睡
你永远叫不醒一个装睡的人 —— 但是通过分析一个人的呼吸频率和脉搏,你可以发现谁在装睡!医生告诉我们,正常人睡眠时的呼吸频率是每分钟15-20次,脉搏是每分钟50-70次。下面给定一系列人的呼吸频率与脉搏,请你找出他们中间有可能在装睡的人,即至少一项指标不在正常范围内的人。
输入格式:
输入在第一行给出一个正整数N(≤10)。随后N行,每行给出一个人的名字(仅由英文字母组成的、长度不超过3个字符的串)、其呼吸频率和脉搏(均为不超过100的正整数)。
输出格式:
按照输入顺序检查每个人,如果其至少一项指标不在正常范围内,则输出其名字,每个名字占一行。
输入样例:
4 Amy 15 70 Tom 14 60 Joe 18 50 Zoe 21 71
输出样例:
Tom Zoe
题目五 4-2-8 计算天数
本题要求编写程序计算某年某月某日是该年中的第几天。
输入格式:
输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。
输出格式:
在一行输出日期是该年中的第几天。
输入样例1:
2009/03/02
输出样例1:
61
输入样例2:
2000/03/02
输出样例2:
62
二.源程序
题目一 7-7计算火车运行的时间
#include <stdio.h> int main(void) { int a, b; int c, d; int e, f; scanf("%d%d", &a, &b); e = a / 100 * 60 + a % 100; f =b / 100 * 60 + b % 100; c = (f - e) / 60; d = (f - e) % 60; printf("%02d:%02d",c,d) ; return 0; }
题目二 4-6 输出华氏-摄氏温度转换表
#include<stdio.h> int main (void) { int lower,upper,fahr; double celsius; scanf("%d %d",&lower,&upper); if (lower<=upper&&upper<=100) { printf("fahr celsius "); for(fahr=lower;fahr<=upper;fahr+=2) { celsius=5.0*(fahr-32)/9.0; printf("%d%6.1f ",fahr,celsius); } }else printf("Invalid. "); return 0 ; }
题目三 4-2-6是不是太胖了
#include<stdio.h> #include<math.h> int n,a,b,c; int main(){ scanf("%d",&n); while(n--){ scanf("%d%d",&a,&b); c = (a-100)*1.8; if(fabs(b-c)<(c*0.1)){ printf("You are wan mei! "); } if((fabs(b-c)>=(c*0.1))&&b<c){ printf("You are tai shou le! "); } if((fabs(b-c)>=(c*0.1))&&b>c){ printf("You are tai pang le! "); } } return 0; }
题目四 4-2-7装睡
#include <stdio.h> int main() { 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 ",name); } } return 0; }
#include <stdio.h> int main() { int y, m, d; int p,i; scanf("%d/%d/%d", &y, &m, &d); p = d; for(i = 1; i < m; i++) { switch(i) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: p += 31; break; case 4: case 6: case 9: case 11: p += 30; break; case 2: if((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0)) p += 29; else p += 28; } } printf("%d", p); return 0; }
三.问题,方法,心得
题目一 7-7计算火车运行的时间
问题:1.如果到达分钟数大于出发分钟数相减为负数。
2.输出格式00:00如何表示。
方法:1.化为同一单位进行运算,如统一化为分钟
2.采用%02d:%02d的方式输出
心得:1.思考问题要细致,审题要仔细,从多方面思考
2.善于借助工具查询相关知识(百度)
题目二 4-6 输出华氏-摄氏温度转换表
问题:1.输出格式中“6个字符宽度,靠右对齐”不知如何实现。
方法:1.printf("%d%6.1f ",fahr,celsius)
心得:多翻阅书本,不懂要问。
题目三 4-2-6是不是太胖了
问题:1.理解错误题目,以为要一下子输入全部的值再一起判断
方法:1.采用循环语句,循环输出,一个一个判断。
心得:正确理解题目意思很关键,在卡壳的时候试着换种思路。
题目四 4-2-7装睡
问题:1.名字不知道怎么输出
方法:1.运用字符串char
题目五 4-2-8 计算天数
问题:1.因为大小月的差异不知道如何相加。
方法:1.采用switch语句,设置多个分支,外加for循环语句,使程序从一月开始加至(n-1)个月。再添加日数)
心得:多多翻书,看看学习视频