C語言陣列的妙用

2021-04-13 14:33:45 字數 1626 閱讀 3871

我的**http;//tigerion.cn

這周有點忙,零散的時間只是想了一些不成熟的東西,但也班門弄斧,拿出來跟大家交流,嘿嘿,不要介意。

第乙個問題,我的出發點是這樣的:

陣列中的元素,由它的下標的關係,而形成一種天然的邏輯關聯,或是順序吧,這點性質很好用。

舉幾個簡單的例子

1 給出一堆數(無重複),範圍是1~100,要求將數按順序輸出

那麼就可以建立一da[101]的陣列,每個元素賦初值為零,然後將每乙個數n ,da[n]=1,再按順序輸出即可

本來是雜亂無章的數,由陣列下標建立 一種對映之後就變得有序,當然這種方法很侷限,這裡只是轉轉思路罷了。

2 做乙個發牌的程式。

將每乙個牌編號得到1~54號,對於四種花色的 牌1~52,可以按照%4的結果來區分花色,對於分牌也很簡單了。

模擬現實生活中分牌的過程,先洗牌,牌洗好後也分好了。因為n%m=1是第乙個人的牌,餘數為二為第二個人的牌.....

實現過程可以找乙個大小為54的容器,da[54],然後隨機給每乙個位置找乙個沒用過的牌,

牌分好後再按順序發給每乙個人就行了,若共m個人

第乙個人1,1+m,1+2m....

第二個 2,2+m,2+2m...

....

程式寫出來吧

//給三個人發牌的程式

#include

#include

#include

#include

#include

#include

int main()

;//花色

char sig=;

for( i=0;i<54;i++) loc[i]=0,flag[i]=0;//初始化

i=0;

srand(time(null));

int temp;     

while(i<54) //洗牌

int j=0,key;

for(i=0;i<54;i++) //發牌,順便排序

{temp=j;

key=i%3;

while(temp>0&&loc[i]

#define max 100

using namespace std;

int main()

{int cir[max],m,n;

cout<<"please input n m:";

cin>>n>>m;

if (n<1||n>100||m<2)return 0;

for(int i=0;i1)

{count=1;

while(countnext即可

然而它倒底有什麼用處呢,我還沒找到好的例子,或許也派不上大的用場,同上面一樣,轉轉思路罷了。

只是想到了乙個簡單的例子。

做乙個rpg遊戲,每乙個人物構建 乙個物件,比方說從今天零晨1點開始,伺服器將陸陸續續上線的人建立乙個鍊錶,

然後到五點開始分配任務,從五點開始,位置排序成斐波那數列的去挖礦去,其它人去群怪,這時候建立乙個臨時的指標

陣列,與鍊錶搭建關聯,便很容易向玩家發布指令了。

然而還是很有侷限性,只能算是小聰明罷了。

希望跟 大家多提提意見,多多交流!

我的**http://tigerion.cn

c語言 妙用

c語言中 是什麼意思?a b怎麼理解?在 c語言中可能表示兩種運算子。如果運算物件只有乙個,且為右運算元,那麼 為取位址運算子,結果為操作物件的位址。例如 a 假設 a是乙個左值,即具有具體的可訪問的位址 結果為 a的位址。如果運算物件有兩個,那麼 表示位與運算。結果中的每乙個二進位制位等於兩個運算...

C語言 異或 的妙用

異或 位運算符號,相同的位置0,不同的位置1 例 0101 0001 0100 給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。說明 你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?例 輸入 2 2 1 輸出 1 輸入 2 3 3...

C語言 巨集定義的妙用

在 中為了提高可讀性,把一些數字進行巨集標識化,同時也方便後續修改 一處修改,到處生效 define year count sec 365 24 60 60 ul static u32 do and retry try cnt define do and retry func,target,try,...