學習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 宣告 元素型別 變數名 元素型別 變...