c語言 第二次作業,迴圈結構

2022-05-17 18:22:27 字數 3457 閱讀 8184

迴圈相比分支和順序結構難了許多,相對的來說我的c語言的基礎比之前有提高,但是還是很多題想了很久也想不出來,最後參考同學的答案,很多題目簡單的辦法想不到,經常如引入flag來控制迴圈的執行,還有巢狀,自己很難想到簡單的方法,只知道按照題目意思來,一步一步的解下去,最後往往發現自己的**很長,而很長的**又很難看出來錯誤,然後會影響後面做題的心情,需要一步一步除錯看**出了錯,再乙個就是這次迴圈讓我對除錯更加的熟練,因為迴圈就是條件容易錯,用除錯的辦法或者中間加上乙個printf的方法能夠很容易看出**除了問題。還有就是迴圈的題目,思路還行,就是如果一步一步按照思路來很容易寫出一段很長的**,比如說龜兔賽跑。我以後需要改進我的**長度,但是現在的作業太多了,以後再改。。。

判斷t分鐘後烏龜和兔子誰跑得更遠,跑的遠的贏,再輸出贏的動物跑的距離。

定義變數rabbit和tortoise來儲存兔子和烏龜跑過的路程。t代表總時間。 time代表某一刻的時間。

輸入時間t

for time=1 to t do

if flag==1 then 進入執行這個if後的裡的內容

if(i%10==0&&rabbit>tortoise)

令flag=0,然後 令rest=0,flag=0,進入else 每次迴圈加1分鐘,直到休息了30分鐘後令flag=1,進入if(flag==1)

if(time>t)

end for

if(rabbit>tortoise) printf("^_^ %d\n",rabbit);

else if(rabbit烏龜贏輸出@_@,兔子贏輸出^_^,平局則輸出-_-;後跟1空格,再輸出勝利者跑完的距離。

p1:看了同學的pta,在同學的指導下完成的。只用了20多行

p2:自己之前獨立完成的,寫了很多行**。

·q1:沒考慮比賽時長不足40分鐘的情況,預設比賽時長為40的倍數,直接進行計算

·a2: 後面在除錯的時候輸入30它輸出的結果是兔子跑了90公尺,烏龜跑了30+3*30公尺

·q2:一開始的思路很繁瑣,是按著題目的意思按部就班來,乙個條件乙個條件的判斷,多個if巢狀使用,某一步出錯了不好修改。

·a2:運用flag來控制休息時間的停止,並且在執行兔子睡覺時間的計算時兔子的休息時間是一分鐘一分鐘的加,而不是直接加三十,這是我沒考慮到的。

本題目要求讀入菱形起始字母和菱形的高度,然後輸出空心字元菱形。

int定義i:行數,j:行前空格數,n:輸入的菱形高度,k:控制每一行的字母和空格的輸出,mid:中間行。char定義ch:字母。首先求出mid=n/2+1,然後進入for迴圈,for i=1  to  n,do    for j=1 to fabs(mid-i)do 輸入空格

然後再在第乙個for迴圈中放入i 與mid 大小的判斷,

if(i<=mid)     則進入乙個for迴圈,

for k=1 to 2*i+1  do  ch+i-1,   然後再判斷位置,當處於第乙個位置和最後乙個位置時填寫字母,中間填寫空格,然後再將字母初始化為輸入的字母。然後再判斷,

if(i>mid)則進入另乙個for迴圈,

for k=1  to  2*(n-i)   do   ch=ch+(n-i)

再判斷是否為第乙個位置或者最後乙個位置,如果是,填字母,如果不是,填空格。一樣將字母初始化為輸入的字母,最後輸出結果。

1.錯誤**

2.正確**

·q1:一開始沒考慮好下半部分的每一行的字母加空格的總數的規律,導致上半部分對,下半部分是錯的,然後測試點2最大高度,最大字元出錯,其實應該是都錯,就乙個b 5是對的。

·a1:然後調整了k與n和i的關係,也通過了第二個測試點。

·a2:除錯之後看出了錯誤。

將一筆零錢換成5分、2分和1分的硬幣,要求每種硬幣至少有一枚,計算有幾種不同的換法

定義變數x放輸入的數

fen5,fen2,fen1為各硬幣的數量,max5,max2,max1為各硬幣的最大值用item來儲存x的值,因為x的值後面會改變,x=x-8確保三種硬幣各有乙個,然後

max=x/5-1          計算五分硬幣最多有多少個

for fen5=max5   to  fen5==1;do  

max2=(item-fen5*5)/2    求兩分硬幣最多有多少個

for   fen2=max2     to   fen2==1     do

max1=item-fen5*5-fen2*2    計算一分硬幣當次迴圈時的數量

for   fen1=max1     to    fen1==1  do

用if(1*fen1+2*fen2+5*fen5==item)來判斷當次迴圈是否滿足條件,滿足則輸出total硬幣總數,滿足的種數count+1;

最後輸出各個硬幣數,和硬幣總數還有滿足的種數

·q1:一開始計算max2的式子放錯位置,導致一直輸出不了正確答案  

·a1: 然後還是經過除錯得出max2的值不對。

·q2:自己能輸出正確答案但是一直錯誤,檢查了很多遍也出不來,有點崩潰

·a2:然後突然想到輸出格式的問題,輸出是count =     而我只有乙個值沒有count =

1.同學的**

2.我的**

(1)我先考慮的是將三種硬幣各分乙個,然後再計算。同學是直接算5分硬幣的最大值,2分硬幣的最大值,再進入迴圈,確定每次迴圈時1分硬幣的數量。

(2)他的**有乙個細節,用了while判斷是否2分硬幣為0,如果為0退出迴圈得出5分硬幣減1,然後再計算b,即2分硬幣的個數。

(3)  他的變數很少,靈活運用兩個while直接得出三個硬幣的數量,最後加乙個判斷就得出結果。

C語言 第二次作業

在本章中對迴圈的內容進行了加深訓練,學習了一種解決問題的方法迴圈巢狀,也學到了偽 的運用,在描述演算法是運用偽 往往能然閱讀者更能明白 的功能。目前對偽 的運用還不是很熟練,用偽 描述演算法也有點不習慣 總分 290 從讀入的整數資料中,統計大於零的整數個數和小於零的整數個數。用輸入零來結束輸入,程...

c語言第二次作業

includeint main void printf d d d d d a,b,c,d,e 設計思路 這道題目要求我們統計學生成績並且用五分制來判別人數,顯而易見的我們應該用 迴圈來解決這個問題,並且在迴圈中利用判斷語句來執行要求。第一步 了解題目大致含義 第二步 構建合適的演算法體系 第三步 ...

c語言第二次作業

includeint main void else if x 80 else if x 70 else if x 60 else printf d d d d d n a,b,c,d,e return0 二 設計思路 1 編譯預處理令,定義主函式。2 定義變數n,i,x。3 利用for迴圈輸入n個同...