題目1:7-4 打印菱形圖案
1. 本題PTA提交列表
2. 設計思路
1.定義變量i,j,k,n;且聲明i為要打印的行數,j是控制輸出打印空格和星星,n是菱形為菱形的高
2.輸入n
3.i=1,j=1
4.先打印上半部分,第一行到n/2+1行,輸出空格個數為n-2i+1,輸出的個數為2i-1換行,i++
5.i=n/2,i--
6.打印下半部分,第n/2+2行到第n行,輸出的空格個數為n+1-2i,輸出的個數為2i-1換行,j++
3.代碼截圖
4.本題調試過程碰到問題及PTA提交列表情況說明。
剛開始的時候沒有想到說可以分析菱形的上下部分來控制輸出,所以寫出了以下的代碼
發現輸出的空格都沒有實現,后來改用老師的方法,先輸出上半部分,再輸出 下半部分
前面的空格公式錯誤,導致輸出錯誤,后來重新推導出正確的公式后,輸出正確
題目2:7-7 發紅包
1. 本題PTA提交列表
2. 設計思路
1.定義數組 a[7]={100,50,20,10,5,2,1}存放紙幣類型
2.定義數組b[7]={0}存放各類型紙幣的張數
3.定義整型變量 i,n;
4.scanf("%d",&n);
5.for(i=0;i<7;i++){//i從0開始,循環七次
b[i]=n/a[i];//張數等于總金額除以紙幣大小
n=n-a[i]*b[i];
6.printf("%3d元:%3d張\n",a[i],b[i]);
7.結束算法
3.代碼截圖
4.本題調試過程碰到問題及PTA提交列表情況說明。
剛開始的時候以為這題和以前做得換硬幣的題目相似,故寫了以下代碼
輸不出結果,并且過程太過繁瑣,所以想到調用數組
發現可以輸出,但是沒有右對齊,后來在網上查了資料,-%d表示左對齊,%d表示右對齊,但是提交后還是編譯錯誤,仔細閱讀題目后發現是要求個位數對齊,于是改為%3d,輸出正確
題目三:
1. 本題PTA提交列表
2. 設計思路
定義函數 arithmetic( int value )
.主函數部分:1.定義第一個操作數 value1
2.輸入這個操作數
3.調用函數求表達式的解
函數部分:1./定義第二個操作數value2,flag=1/flag用于判斷是否為非法標識符以及除數為0的情況,
2.定義字符變量op
3.輸入第二個操作數,字符
4.判斷輸入的字符是否為合法標識符
5.若輸入的字符為=,則結束算法
6.若字符為+,則value1=value1+value2
7.若字符為-,則value1=value1-value2
8.若字符為,則value1=value1value2
9.若字符為/,且value2不等于0,則value1=value1/value2;若value2等于0,則flag=0
10.重復步驟3-9.直到不滿足條件
11.判斷flag的值,若flag=0,輸出ERROR,否則輸出value1
12.返回value1
13.結束算法
3.代碼截圖
4.本題調試過程碰到問題及PTA提交列表情況說明
想的太過簡單,思路還停留在題目四則運算的階段,而題目要求的是先輸入一個表達式
后來問了同學,可以調用函數來解決,可是提交后還是錯誤,后來發現在判斷字符時忘了加“=”,
改過之后提交卻還是部分正確,
二、截圖本周題目集的PTA最后排名。
三、本周學習總結(3分)
1.你學會了什么?
1.1 一維數組如何定義、初始化?
一維數組定義的一般形式為:
類型名 數組名 [數組長度];
一維數組的初始化和簡單變量的初始化一樣,在定義數組時,也可以對數組元素賦初值,其一般形式為:
類型名 數組名 [數組長度] = {初值表},初值表中依次放著數組元素的初值
1.2 一維數組在內存中結構?可畫圖說明。數組名表示什么?
在定義數組之后,系統根據數組中元素的類型及個數在內存中分配了一段連續的存儲單元用于存放數組中的各個元素,并對這些單元進行連續編號,即下標,以區分不同的單元,每個單元所需的字節數有數組定義時給定的類型來確定;數組名表示該數組中第一個單元的地址,即首地址
1.3 為什么用數組?
在程序中使用數組,可以讓一批相同類型的變量使用同一個數組變量名,用下標來相互區分。它的優點是表達簡潔,可讀性好,便于使用循環
1.4 介紹選擇法、冒泡法、直接插入排序如何排序?偽代碼展示.
1.5 介紹什么是二分查找法?它和順序查找法區別?
二分查找(又稱為折半查找)是在有序序列中查找比較多的查找算法,基本思路:設有一個從小到大的序列,取中間的元素m進行比較,如果等于需要查找的元素x則返回元素m的下標,若x大于m則再從右邊的區間查找,若x小于m則再從左邊的區間查找,這樣每次減少一半的查找范圍。時間復雜度為O(lgn),查找速度相對順序查找要快很多,但是查找的數據序列必須是有序序列(即數據是從小到大或從大到小排序的)。
區別:二分法是折半查找,而順序查找則是歷便數組的查找,對于數據較多時,二分法查找的效率更高
1.6 二維數組如何定義、初始化?
二維數組的定義形式為:
類型名 數組名 [行長度] [列長度]
二維數組的初始化方法有兩種:
1.分行賦初值
類型名 數組名 [行長度] [列長度] = { {初值表0},...,{初值表k},...};把初值表k中的數據依次賦值給第k行的元素
1.7 矩陣轉置怎么實現?方陣中:下三角、上三角、對稱矩陣的行標i列標j的關系?請說明。
行列互換;方陣中下三角:i>=j
上三角:i<=j
對稱矩陣:i=j
1.8 二維數組一般應用在哪里?
用來表示一個二維表中按行,列組織在一起的信息。為了唯一確定二維表中的一個元素,必須給出兩個下標。按照習慣,第一個下標確定的是元素所在的行號,第二個列標確定元素所在的列號
2.本周的內容,你還不會什么?
對于數組的使用還不是很熟悉,還有二維數組還不是很理解,各個進制之間的轉化還不是靈活的運用;
對于冒泡排序,選擇排序還不是很理解
課堂派上的題目