標籤:sum 最大 演算法 ges img log 排序 結構 插入排序
一、PTA實驗作業題目1:倒順數字串1. 本題PTA提交列表
2. 設計思路
- 定義變數n,i,j
- 輸入n
- i的值 for 1 to n,輸出i,如果i<n,再輸出空格,i自增
- j的值for n-1 to 1,輸出空格,再輸出j,j自減
- 返回0
3.代碼
4.本題調試過程碰到問題及PTA提交列表情況說明
發現輸出了兩個6
因為j的初值取到n,所以還會重複輸出一個6
題目2: 列印菱形圖案1. 本題PTA提交列表
2. 設計思路
- 定義變數。。。。
- 輸入一個值存入n
- 第一個迴圈列印1~(n+1)/2行的圖案
- a=n+1-2i,b=2i-1
- j的值for 1 to a 輸出空格
- k的值for 1 to b 輸出*和空格
- 換行 end
-第二次迴圈列印(n+3)/2~n行圖案
- c=2i-n-1,d=2(n-i)+1
- l的值for 1 to c輸出空格
- m的值for 1 to d輸出*和空格
- 換行 end
3.代碼
4.本題調試過程碰到問題及PTA提交列表情況說明
運行發現跟PTA的圖案一模一樣,但是提交卻出現了格式錯誤,認真看下題目發現每個*後面都要空格,太慣性思維了
然後改了代碼還是有格式錯誤,輸入3發現
第二次迴圈的圖案列印出現問題
用3調試第二次的迴圈
發現c的值為負數。。。。。。 在草稿上把輸入的7當為特例寫代碼導致不具有普遍性,應該改正c的賦值
題目3:掉入陷阱的數字1. 本題PTA提交列表
2. 設計思路
- 定義變數
- 輸入一個數存入N
- i的值for 1 to 某個數(當N=N1時退出迴圈)
- 把N賦值給M和number
- 只要number!=0,number=number/10,n自增,迴圈結束得出N的位元n
- j的值for 1 to n, a=M%10, M=M/10,sum=sum+a,j自增 先得出sum的值
- N1=sum*3+1,得出新的數N1
- 輸出 i:N1
- 如果N=N1直接退出迴圈,否則 把N1賦值給N,把sum賦值0,換行 end
3.代碼
4.本題調試過程碰到問題及PTA提交列表情況說明
第一次就進入死迴圈而且還沒有換行,而且把計算N的位元n的迴圈放在外面,所以n的值不變了,我修改
改正後格式正確但是從第二個數開始就不正確了
發現第一次迴圈後sum的值不是0,會繼續加上去,在大迴圈後面重新給sum‘賦值為0
二、本周題目集的PTA最後排名
三、本周學習總結1.1 一維數組如何定義、初始化
1.定義一個數組需要明確數組的變數名,數組元素的類型和數組的大小,一般類型為 類型名 數組名[數組長度].
1.2 一維數組在記憶體中結構?可畫圖說明。數組名表示什嗎?
數組名是一個地址常量,存放數組記憶體空間的首地址
1.3 為什麼用數組?
在程式運行期間其值可以改變的量。其實理解得簡單一點,變數就是一塊小記憶體的名字,這塊記憶體的大小由這個變數的類型決定,同時也決定了這塊記憶體能存放資料的大小範圍
1.4 介紹選擇法、冒泡法、直接插入排序如何排序?虛擬碼展示.選擇法:
- for 0 to n-1 控制外迴圈個數
- 令k=i for i+1 to n 找下一個數到最後一個數中尋找最大值
- 若後面有比最大值更大 則k=j
否則用temp=a【k】,a【k】=a【i】,a【i】=temp 交換位置
冒泡法
- for 0 to n 控制循壞次數
for 0 to n-j 內迴圈個數
-if 這個數大於下個數,則用temp=a【i】,a【i】=a【i+1】,a【i+1】=temp 進行交換位置
插入法
- i的值for 1 to n 控制外迴圈次數
- j的值for i-1 to n
temp=a[i],a[j+1]=a[j],a[j+1]=temp 進行插入
1.5 介紹什麼是二分尋找法?它和順序尋找法區別?
- 假設資料是按升序排序的,對於給定值x,從序列的中間位置開始比較,如果當前位置值等於x,則尋找成功;若x小於當前位置值,則在數列的前半段中尋找; 若x大於當前位置值則在數列的後半段中繼續尋找,直到找到為止。
相對於循序法效率更高
1.6 二維數組如何定義、初始化?
類型名 數組名 [行長度] [列長度] = {{初值表0},…,{初值表k}…}
1.7 矩陣轉置怎麼實現?方陣中:下三角、上三角、對稱矩陣的行標i列標j的關係?請說明。
下三角 i>=j;上三角i<=j;對稱矩陣i=j
1.8 二維數組一般應用在哪裡?應用於某些有一定的位置邏輯的元素,如矩陣
2.本周的內容,你還不會什嗎?
多種的排序法掌握並不精,雖然演算法邏輯可以想出來,但是一旦用代碼敲出來又是另一番光景
C語言部落格作業--資料類型