循環


一、PTA實驗作業

題目一、7-4 統計學生成績(15 分)

本題要求編寫程序讀入N個學生的百分制成績,統計五分制成績的分布。百分制成績到五分制成績的轉換規則:

  • 大於等於90分為A;
  • 小於90且大於等於80為B;
  • 小於80且大於等於70為C;
  • 小於70且大於等於60為D;
  • 小於60為E。

輸入格式:

輸入在第一行中給出一個正整數N(≤1000),即學生人數;第二行中給出N個學生的百分制成績,其間以空格分隔。

輸出格式:

在一行中輸出A、B、C、D、E對應的五分制成績的人數分布,數字間以空格分隔,行末不得有多余空格。

輸入樣例:

7
77 54 92 73 60 65 69

輸出樣例:

1 0 2 3 1

1、本題PTA提交情況

2、設計思路

定義N,i,A,B,C,D,E        // N為輸進的數,A,B,C,D,E分別用來統計各個分數段的人數,i用來循環

先輸入N

從 i=0 到i<=n 的循環里面輸入N個數

每輸進去一個i就要加1,並且判斷是否滿足條件

 如大於等於90分 A++;

如小於90且大於等於80 B++;

如小於80且大於等於70 C++;

如小於70且大於等於60 D++;

如小於60 E++;

最后輸出各個分數段的統計結果

 

 

結構圖

 

 3、代碼截圖


 

4、調試過程

 

 在程序的編寫過程中未循環的輸入分數,所以該程序在運行的過程中只能輸入一個數,而不能輸N個數,所以無法統計各個分數段的人數

題目二、7-15 梅森數(20 分)

形如2n​​1的素數稱為梅森數(Mersenne Number)。例如22​​1=3、23​​1=7都是梅森數。1722年,雙目失明的瑞士數學大師歐拉證明了231​​1=2147483647是一個素數,堪稱當時世界上“已知最大素數”的一個記錄。

本題要求編寫程序,對任一正整數n(n<20),輸出所有不超過2n​​1的梅森數。

輸入格式:

輸入在一行中給出正整數n(n<20)。

輸出格式:

按從小到大的順序輸出所有不超過2n​​1的梅森數,每行一個。如果完全沒有,則輸出“None”。

輸入樣例:

6

輸出樣例:

3
7
31
1、本題PTA提交列表

2、設計思路

定義x,n,i,j,z=0,y  //n為所輸的最大整數,ij用於循環,y為需要判斷的數

輸入n

利用循環,從i=0到i=n

令y =2^i-1 

此時判斷y是否為素數(判讀y是否除了1和他本身以外沒有其他的約數)

如果是,則該數為梅森數,將其輸出

如果不是,就讓i++,進入循環

直至循環結束

 

結構圖

3、代碼截圖

4、調試過程

這題直接將所有小於2^n-1的所有數進行比較,沒有滿足梅森數的第一個條件2^i-1;

PTA顯示運行超時,但是在DEV上運行時答案是正確的,可能該程序沒有踩到PTA的測試點


 題目三、7-16 小於m的最大的10個素數 (15 分)

給定一個整數m(50<m<20000),找出小於m的最大的10個素數。

輸入格式:

輸入在一行中給出一個正整數m(50<m<20000)。

輸出格式:

在一行中按遞減順序輸出10個滿足條件的素數,每個素數輸出占6列。沒有其它任何附加格式和字符。

輸入樣例:

229

輸出樣例:

   227   223   211   199   197   193   191   181   179   173

1、本題PTA提交列表

 

2、設計思路

先輸入這個正整數m

利用循環 從i=1到i=10找小於該正整數的10個素數

先讓m--;

 

判斷m是否為素數(判讀m是否除了1和他本身以外沒有其他的約數)

 

如果是,則將其輸出

 

如果不是,就讓m--進入循環

 

直至循環結束

 

結構圖

3、代碼截圖

 

 

4、調試過程

(1)

 

剛剛開始沒有按照題目的要求輸出答案,每個答案占了9個字節

(2)

 

與之前的錯誤類似,第一個輸出的數前面的本來應該沒有空格,將輸出的方式改為%6d之后就可以解決了


 

二、與同學的代碼互評

          

我是利用while循環,不斷的找他的最小公倍數,然后再將這個分數除以這個最小公倍數

求出最簡分數;芷逸的找的條件跟我的不同,思路是相似的,我比較喜歡她的程序

 

 

三、本周題目集的PTA最后排名

四、本周學習總結

1、我學會了什么

通過對循環結構的學習,

掌握了對if-else、else-if 等結構的運用以及循環嵌套的運用;

for和when都可以實現循環,for語句和while語句都是在循環前先判斷條件,只有條件滿足才會進入循環;

for和while都是先判斷條件是否滿足,在進入循環;而do-while則是先進行運算,在判斷是否滿足條件。

break的作用是直接跳出當前循環,continue的作用是直接進行下一次循環

掌握了switch的用法,他的作用與if分支結構的作用一致

 

一般形式:

 

switch(表達式){ 

    case 常量表達式1:  語句1;
    case 常量表達式2:  語句2;
    … 
    case 常量表達式n:  語句n;
    default:  語句n+1;(這個可以不寫)

}

2、不會的地方

在編程的過程中對分數的運算不太熟練

在運用循環時條件有時寫不完全

3、循環考試總結

 (1).哪題做錯了,怎么改?

7-2這道題是部分正確,經調試后發現是在判斷條件時出錯了,在與其他同學交流的過程中理解了該題的解法

7-5這題答案錯誤,一開始對題意沒有理清,試后我參考了其他同學的代碼並詢問他的解題思路,后嘗試自己敲了一遍,解決了該題

(2)考試結果滿意么,怎么改進?

不是很滿意,在考試過程中常常會出現一道題由於自己的粗心而存在很多編寫的錯誤,由於一直沒有運行通過而亂了思路

之后我會多加練習,對書上一些知識點進行復習




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM