高級語言程序設計課程第六次個人作業
**高級語言程序設計課程第六次個人作業**
-
這個作業屬于哪個課程:
https://edu.cnblogs.com/campus/fzu/2024C -
這個作業要求在哪里:
https://edu.cnblogs.com/campus/fzu/2024C/homework/13303 -
學號:102400108
-
姓名:王馨怡
作業內容: -
編寫博客園發布的十二題
001
*題目:編寫函數fun(int m, int k, int xx[]),將小于整數m的非素數存入xx數組中,個數由k返回。
問題:怎么都沒有輸出
解決:在主函數中,我fun中寫成了xx[],問了同學后,把[]刪去,問題解決!(原來主函數引用時不能加[]啊!)


002
題目:編寫函數,將長度為n的字符串從第m個字符開始的全部字符復制成另一個字符串。
問題:發現最后多了一行換行
解決:原來自己又忘記跳過‘\n’了,補上后,問題解決

003
題目:編寫函數用冒泡法將數組按從小到大的順序排列。
問題:無
解決:無

004
題目:將n個整數按輸入順序的逆序排列,要求應用帶指針參數的函數實現。
問題:無
解決:無

005
題目:寫一個函數打印arr數組的內容,不使用數組下標,使用指針。
問題:出現死循環。
解決:很低級的錯誤,函數中的** n 沒有減1**,循環條件一直為真。

006
題目:編寫程序,分別找出多個n×m數組的最大值、最小值,并輸出兩個值的下標。
問題:無
解決:無


007
題目:判斷上三角矩陣。上三角矩陣指主對角線以下的元素都為0的矩陣;主對角線為從矩陣的左上角至右下角的連線。本題要求編寫程序,判斷一個給定的方陣是否上三角矩陣。
問題:無
解決:無(這題老師上課講過了)


008
題目:給定一個按升序排列的二維數組,編寫一個函數來判斷目標值是否存在于數組中。數組是一個m x n的矩陣,可使用算法快速查詢。
問題:不知道應該怎么設計算法
解決:翻書,找到了二分查找法,思考后,嘗試將二維數組的數存入新的一維數組中,這樣就可以使用二分查找法了。(但似乎運行時長有點長
我想到了第二種辦法:先判斷想找的數和第1個元素和最后一個元素的大小關系,如果不在區間內就return 0。然后將它和每一行的最后一個數比較,找到比他大的數中的最小值。然后又在那一行尋找,找得到就有return 1,否則return 0
第一種方法:二分查找法


第二種方法

009
**題目:編寫一個函數,輸入一個整數,將其分解為兩個質數之和。提示:函數可以聲明為int split(int n, int a, int b)。n作為傳入參數,a和b作為傳出參數。若無法分解返回0,可以分解則返回1。
問題:發現輸入 8 竟然無法被分解
解決:經調試,發現我的int split(int n, int *a, int *b)函數中,對i的判斷條件為i<sqrt(n),這是錯誤的,將其改為 i<n,問題解決。


010
題目:編寫函數void shift(char s, int n),請原地將字符串s循環左移n次。例如,字符串“hello”左移3次得到“lohel”。*
問題:不會逆序輸出
解決:上網查找方法原理,主要內容見shift函數部分。問題解決


011
題目:寫一個程序讀入一個二維整型數組并判斷它是否為魔方矩陣。在魔方陣中,所有的行、列和對角線都擁有相同的和。
問題:發現無論怎么輸入,都不為魔方矩陣
解決:經調試,我的 s1 又沒有初始化!!!改后,問題解決。


012
題目:利用指針,判斷兩個字符串是否相等。忽略大小寫。例如,輸入 “hello”和”hELlO”,認為它們是相等的。返回值:1表示相等。0表示不同)。
問題:一開始沒有考慮若輸入為非字母的情況
解決:完善函數:引用<ctype.h>庫函數中的判斷函數判斷是否為字符,問題解決。


總結思考:
1.對指針的使用,特別是數組指針的使用還不是很熟練,我覺得我應該多去看看例題,再挖掘一下。
2.依舊是初始化問題,有時候還是會忘記,但情況已經有了改善,至少有好幾題我已經會快速記住要初始化了!
3.在讀取字符串的時候,還是會遺忘考慮最后輸入的 \n ,這需要注意。
4.對于第八題的查找算法,還不是很清楚,我覺得我寫的算法用時應該很大,會很慢,還要再想想。
5.還是要多看看課本理論,這樣才會更快也更加理解題意與原理。

浙公網安備 33010602011771號