一· 7-7 計算火車運行時間 (15 分)
本題要求根據火車的出發時間和達到時間,編寫程序計算整個旅途所用的時間。
輸入格式:
輸入在一行中給出2個4位正整數,其間以空格分隔,分別表示火車的出發時間和到達時間。每個時間的格式為2位小時數(00-23)和2位分鍾數(00-59),假設出發和到達在同一天內。
輸出格式:
在一行輸出該旅途所用的時間,格式為“hh:mm”,其中hh為2位小時數、mm為2位分鍾數。
輸入樣例:
1201 1530
輸出樣例:
03:29
1.實驗代碼
#include<stdio.h> int main() { int a, b, h1, h2, m1, m2, h, m; scanf("%d %d", &a, &b); h1 = a/100; h2 = b/100; m1 = a%100; m2 = b%100; if(m2 < m1) { m = m2+60-m1; h = h2-h1-1; }else { m = m2-m1; h = h2-h1; } printf("%02d:%02d", h, m); return 0; }
2.設計思路
(1) 文字描述
第一步:輸入的是四位數,前倆位為小時后倆位是分鍾,小時是四位數除以100取整,分鍾是四位數除以100取余。
第二步:判斷分鍾相減是否小於零,如果小於零需要從小時借位。不小於零輸出旅途所用時間。
第三步:在借位時,借的是60而不是100,借位后繼續計算然后輸出旅途所用時間。
(2)流程圖
3.本體調試過程碰到問題及解決方法
認真閱讀這道題目后,我發現這道題有幾個地方必須要過關。
1.小時與分鍾的選取 2.判斷分鍾是否夠用 3.當后者分鍾過小時需要錯位,而錯位是60
4.輸出時小時與分鍾格式為hh:mm
在做題時我就遇到了輸出格式錯誤的問題,我輸出是h:mm型不符合題目要求。
后來向同學請教如何輸出hh:mm型,最后知道輸出時要保證是倆位要用“%.2d”,而我用的卻是“%d”。
二·7-4 求奇數和 (15 分)
本題要求計算給定的一系列正整數中奇數的和。
輸入格式:
輸入在一行中給出一系列正整數,其間以空格分隔。當讀到零或負整數時,表示輸入結束,該數字不要處理。
輸出格式:
在一行中輸出正整數序列中奇數的和。
輸入樣例:
8 7 4 3 70 5 6 101 -1
輸出樣例:
116
1.實驗代碼
#include<stdio.h> int main() { int x, i = 0; scanf("%d", &x); while(x>0) { if(x % 2 == 1) { i = i + x; } scanf("%d", &x); } printf("%d", i); return 0; }
2.設計思路
(1)文字描述
第一步:輸入整數x,輸入奇數和為i
第二步:判斷x是否為正整數
第三步:判斷x是否為奇數
第四步:求出所有奇數和,輸出i
(2)流程圖
3.本體調試過程碰到問題及解決方法
循環是學習C語言的重點與難點。
然而這道題我卻犯了一個低級錯誤,弄混“=”與“==”的意義,經過自己的反省找到正確答案。
這道題在循環1里算是簡單的,拿到這里把錯誤寫出來是為了時刻提醒自己不可以犯同樣錯誤。
三·7-7 尋找250 (10 分)
對方不想和你說話,並向你扔了一串數…… 而你必須從這一串數字中找到“250”這個高大上的感人數字。
輸入格式:
輸入在一行中給出不知道多少個絕對值不超過1000的整數,其中保證至少存在一個“250”。
輸出格式:
在一行中輸出第一次出現的“250”是對方扔過來的第幾個數字(計數從1開始)。題目保證輸出的數字在整型范圍內。
輸入樣例:
888 666 123 -233 250 13 250 -222
輸出樣例:
5
1.實驗代碼
#include<stdio.h> int main() { int x; char a[999]; scanf("%d", &x); int i = 1; while(x != 250) { scanf("%d", &x); i++; } printf("%d", i); return 0; }
2.設計思路
(1)文字描述
第一步:構造一個數列
第二步:給x賦值並構造一個循環變量i
第三步:讓其循環,當x = 250 時輸出i的值
(2)流程圖
3.本體調試過程碰到問題及解決方法
認真閱讀題目后,我自我感覺這道題很簡單,但是在開始敲代碼時我發現我錯了,在面對這道題時我發現我無從下手。
直到后來我查閱資料知道可以構造一個數列完成。解決這一問題后我豁然開朗,但還是把“!=”與“=!”整混了,
后來自己多次嘗試並向同學請教得知“!=”是不等於。
四·總結
從最開始的“Hello Word”開始了解編程,讓我受益匪淺,慢慢喜歡上編程。
1.所學內容
在這幾周的學習中,我學習到每個代碼開始都要有一個頭文件,結束時要有“return 0”,在求平均數保留小數時不能忘了乘1.0,這個很容易讓人忘記,應該牢記。
在循環學習中,我深入了解了while,do while,for循環的使用。for語句在使用時()里面應該用“;”間隔,而我經常犯錯用“,”間隔。
一個數的幾次冪在電腦中要用pow表示,在使用數學公式時需要插入數學的頭文件。我也了解了基本函數的使用。
2..遇到問題及解決方法
1·在編程中“=”為賦值的意思,而“==”為等於的意思,我經常把“=”當成等於使用。
2·在輸入一個數讓其小於等於x時,總是在小於等於加一個空格。
3·總是忘記保留小數,直接%d輸出。
以上問題都是一些小問題,但導致問題所在還是練習代碼較少,因此我應多練習,避免不應該放錯誤。
在遇到不會問題時,應該多思考,及時向老師與同學請教。
五·點評
1.點評阮曙光同學 https://www.cnblogs.com/diqiu/p/10041671.html
2.點評李曉旭同學 https://www.cnblogs.com/lixiaoxu695022762/p/9999202.html
3.點評蘇末然同學https://www.cnblogs.com/smr2018023977/p/10035661.html