一.實驗題目,設計思路,實現方法。
題目一 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\n"); for(fahr=lower;fahr<=upper;fahr+=2) { celsius=5.0*(fahr-32)/9.0; printf("%d%6.1f\n",fahr,celsius); } }else printf("Invalid.\n"); 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!\n"); } if((fabs(b-c)>=(c*0.1))&&b<c){ printf("You are tai shou le!\n"); } if((fabs(b-c)>=(c*0.1))&&b>c){ printf("You are tai pang le!\n"); } } 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\n",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\n",fahr,celsius)
心得:多翻閱書本,不懂要問。
題目三 4-2-6是不是太胖了
問題:1.理解錯誤題目,以為要一下子輸入全部的值再一起判斷
方法:1.采用循環語句,循環輸出,一個一個判斷。
心得:正確理解題目意思很關鍵,在卡殼的時候試着換種思路。
題目四 4-2-7裝睡
問題:1.名字不知道怎么輸出
方法:1.運用字符串char
題目五 4-2-8 計算天數
問題:1.因為大小月的差異不知道如何相加。
方法:1.采用switch語句,設置多個分支,外加for循環語句,使程序從一月開始加至(n-1)個月。再添加日數)
心得:多多翻書,看看學習視頻