二維陣列練手小程式 後宮管理

2021-08-28 18:33:06 字數 3686 閱讀 2462

學習c語言兩個星期,用這個小小的文字遊戲練手。

這個程式的知識點是:

二維陣列、迴圈、各種基礎的函式。

內容和創意

都**於網易雲課堂→老九零基礎學程式設計 的教學課程( )

轉侵刪,謝謝。

程式中注釋得很詳細。

缺點:1、沒有加入對輸入的檢查判斷,胡亂輸入程式會奔潰。

2、那時候還不會多函式程式設計,所以沒有結構化程式設計,都弄到乙個switch裡了。

另外,如果有人知道如何在vs2017中對程式新增背景**的,可不可以跟我說一下如何操作,謝謝了。

#include

#include

#include

//strcmp函式(對比函式) strcpy函式(字串賦值函式)

#define max 6

//系統所能容納的最大的嬪妃數量

intmain()

;//names[6][10],表示至多可以有6個嬪妃,每個嬪妃的姓名最多佔20個字元

//用陣列定義嬪妃級別的型別

char levelsname[5]

[10]=

;//存放5個級別,每個級別的大小最多佔10個字元

//存放實際中每位嬪妃對應的級別,每個陣列元素對應每個妃子的當前級別

int levels[max]=;

//好感度陣列

int loves[max]=;

printf

("新帝登基,請輸入您的名號:");

scanf_s

("%s"

,emperorname,20)

;//錄入字串時不需要使用&符號

printf

("群臣:\"%s皇帝登基,皇上萬歲萬歲萬萬歲!\"\n\n"

,emperorname)

;printf

("請陛下處理今天的事務:\n");

//測試**:檢視當前嬪妃的狀態

printf

("\n**********當前嬪妃的狀態**********\n");

printf

("姓名 級別 好感度\n");

for(size_t i =

0; i < count; i++

)printf

("%s %s %d \n"

, names[i]

, levelsname[levels[i]

], loves[i]);

printf

("**********************************\n\n");

for(size_t days =

0; days <

10; days++

)//大迴圈,一共十天

else

printf

("陛下保重龍體啊,後宮已經人滿為患了!\n"

"!選妃失敗!");

break

;case2:

//翻牌寵幸應具備功能:1.找到翻牌娘娘的下標(該例用到for迴圈使i的值即為下標,未使用到searchindex變數,用for迴圈保證了每個妃子會被檢測一遍)

//2.修改這位妃子的狀態:好感度+10 級別+1 ,如果達到最高端就不再加 3.修改其他妃子的狀態:好感度-10

//知識點:strcmp(str+compare的縮寫)用於比較兩個字串。為零的時候相等,為1時前乙個大於後乙個,為-1時前乙個小於後乙個。字母的大小用ascii碼進行比較

printf

("請輸入要翻牌的娘娘名字:");

scanf_s

("%s"

,temporalname,20)

;for

(size_t i =

0; i (strcmp

(temporalname, names[i])!=

0)temporalnumber++;if

(temporalnumber==count)

printf

("您翻了個假牌子,跟空氣睡了一覺。");

}break

;case3:

//打入冷宮應具備功能:1.查詢到要刪除的娘娘的下標 2.用冒泡法把後乙個元素賦給前乙個元素 3.總數減1即count--

printf

("請輸入要打入冷宮的妃子的名字:");

scanf_s

("%s"

,temporalname,20)

;for

(size_t i =

0; i < count; i++)if

(strcmp

(temporalname, names[i])==

0)searchindex = i;

if(searchindex ==-1

)printf

("虛驚一場,無人打入冷宮,該吃吃該喝喝");

else

for(size_t i = searchindex; i < count -

1; i++

) count--

;for

(size_t i =

0; i < count; i++

) loves[i]+=

10;}break

;case4:

//召見愛妃應具備功能:1.查詢到要召見的妃子 2.增加該妃子的好感度

printf

("請輸入要召見的愛妃:");

scanf_s

("%s"

,temporalname,20)

;for

(size_t i =

0; i < count; i++)}

break

;default

:printf

("君無戲言,明天再問你了,陛下今天跟空氣玩去吧\n");

}//列印所有妃子狀態前,以級別從上到下進行排序,使用氣泡排序,氣泡排序外層迴圈控制輪數,內層迴圈控制每一輪的比較次數

for(size_t i =

0; i < count-

1; i++

)for

(size_t j =

0; j < count-

1-i; j++)if

(levels[j]

)//執行今天要做的事務後,列印一次嬪妃們的狀態

printf

("\n**********當前嬪妃的狀態**********\n");

printf

("姓名 級別 好感度\n");

for(size_t i =

0; i < count; i++

)printf

("%s %s %d \n"

, names[i]

, levelsname[levels[i]

], loves[i]);

printf

("**********************************\n\n");

for(size_t i =

0; i < count; i++)if

(loves[i]

<70)

kill++;if

(kill>=3)

getchar()

;getchar()

;return0;

}

小程式 動態修改二維陣列 示例

1.首先獲取使用者所有未刪除的位址 根據字段status進行判斷 規定 0 普通位址,1 預設位址,2 已刪除位址 2.當進行刪除操作成功後,遍歷位址陣列列表,找到對應操作成功的位址id,然後動態js更改其status狀態值 其實此處的狀態值只是乙個標識,也可以使用 hide 或 show 來進行區...

二維陣列 二維陣列和指標

include using namespace std int main 如上面這段程式所示,通過取位址符 指標 p 獲得了變數 a 的位址,那麼解引用符 就可以從 p 中得到變數 a 的值。也就是說,p a和 p a是等價的。p 是變數 a 的位址,從 p 中就可以取出 a 的值。反之,能從 p ...

陣列 二維陣列

一組相同型別的資料組合,是一種引用型別。陣列名稱不是固定的,與其存放的資料的型別有關。如 存放int型別的資料,陣列名稱 int 存放字串資料,陣列名稱 string 存放scanner型別的資料,陣列名稱 scanner陣列中的每個資料,都是這個陣列的元素。1 宣告 元素型別 變數名 元素型別 變...