第五次做業

1.本章學習總結

1.1思惟導圖

1.2 本章學習體會及代碼量學習體會

1.2.1學習體會

本週代碼感覺:
多是上次數組做業拖過久了,指針的練習比較少,加上指針比較難,如今感受學習起來比較吃力(固然,最近學習懈怠也佔一大比例緣由)。
指針是C語言的靈魂,它使C語言有了其餘編程語言沒有的魅力,指針是函數的傳遞更加靈活了,以前函數只能有一個返回值,指針能夠用來傳送多個地址。
不過,學習指針這一章,最大的收穫仍是對字符串的進一步瞭解,#include<string.h>這個頭文件讓字符串在我心中有了和通常的變量有了分庭抗禮的地位,它能夠執行以前通常的變量同樣的東西,甚至通常變量作不了的一些有趣的是,它能夠作到。如strcmp,strcat,strmat之類的函數。算法

1.2.2代碼累計

PTA總分

2.1排名截圖

2.2個人總分:

100(可能會變更)

PTA做業

3.1

7-3 字符串的冒泡排序 (20 分)
咱們已經知道了將N個整數按從小到大排序的冒泡排序法。本題要求將此方法用於字符串序列,並對任意給定的K(<N),輸出掃描完第K遍後的中間結果序列。編程

3.1.1算法分析

輸入n,k//n表明字符串的數量,k表示要冒泡的次數
char a[1000][100]
for i=0 to n;
scanf("%s",a[i]);//輸入字符串
end for
static char temp[1000]//定義臨時數組,用於交換
for j=1 to k
for j=1 to k
if a[i+1]<a[i]
交換a[i+1]和a[i]
end if
end for
end for
for i=0 to n
輸出啊a[i]
end for數組

3.1.2代碼截圖

3.1.3數據測試

3.1.4提交列表

原本這道題我是有思路的,由於之前作過一維數組的冒泡法排序,可是這個題要輸入多個字符串,一開始我是沒有思路的,後來意識到能夠用二維數組來存放字符串,問題也就解決了。
int n,k編程語言

4大做業

對各類操做數和運算符,以及正確答案和輸入結果都存放在數組中,能夠對遊戲的過程進行數據保存,最重要的是用一個函數生成運算式,而不是用三個函數生成三種級別的式子。
此次把代碼改爲了指針版,其實仍是數組用的比較多,仍是指針掌握的不熟練。還有,此次的函數封裝要比上一次要多。函數

4.1改造函數介紹

4.1.1函數1——生成算式並計算結果

void Question(char degree)//把上一級選擇難度函數的選擇級別傳入
{
char ques[1000]//放算式
int level = degree-'0'//將難度級別的字符轉換成常數
int m,n//n爲運算符個數
char a[100]//把數轉換成字符串
switch level do
case 1 do n=4;i=3;break;
case 2 do n=2;i=5;break;
case 3 do n=2;i=5;break;
end switch
for i to i>0 j=0,a
m=rand()%n;
if i爲奇數
switch m do
m=rand()%4;
1,2,3,4分別表明+,-,*,/ //strcat(ques,"+")鏈接字符串
end switch
else i爲偶數
swtich level do
case 1 do 生成一位數,break;//生成的數放在x[j]中
case 2 do 生成二位數,break;
case 3 do 生成三位數,break;
end switch
if語句排除除法結果不存在和獲得小數的狀況
itoa(x[j],a,10);
strcat(ques,a)
end if
j++;
end for學習

代碼截圖

這段代碼主要借鑑了俊偉的,itoa函數減小了很多工做量,這段代碼可讓三個級別的式子在一個函數裏面生成,用三個函數出算式的代碼我也有寫,可是…………寫代碼的時候沒有看清老師的要求,覺得要寫一個生成算式的函數,以前的代碼也就刪了……嗚嗚嗚,之後必定好好看做業要求。測試

查當作績函數

代碼截圖

此次做業新加的,毫無技術可言,此次的程序的退出到要返回主界面才能退出……也算是一個改動吧,讓退出再也不那麼隨意。3d

代碼比較

函數1

原來的算式生成函數指針

感覺到之前的三個函數多贅餘了吧……將不得不說,把輸出從數轉化成字符串真的可使代碼簡潔許多。
之前的方法在輸出的時候要挨個輸出,如今用循環就能夠,不過要注意……沒完成一個循環,記得對字符串初始化。blog

總結

此次雖然名義上是把上次的函數封裝改爲指針版,可是……說句實話,*這個符號,我在個人代碼裏面只讓它充當了乘號和修飾的做用,指針掌握的不夠熟練,不敢貿然用指針,但指針畢竟是c語言一個很重要的東西,之後仍是要多加練習。 其實此次代碼我改動是比較大的(仍是叫重寫吧),把主要精力都放在了生成算式上,一些提示性話語和非法輸入處理方面作得可能差強人意…… 在生成算式的時候,一開始忘記了最後的初始化字符串……額……改了很久,並且在寫代碼的時候常常犯一些特別無聊的錯誤,好比if判斷條件後加分號。

相關文章
相關標籤/搜索