C語言新手練習之多維陣列 結構體及函式

2022-09-28 01:42:10 字數 2916 閱讀 5652

題目:

有乙個顏色集合,裡面有若干個顏色值(rbg系統表示)。現在有若干個顏色值需要對映到集合中的某個值。具體的對映方法是找到集合中和它的顏色距離最小的進行對映。在rgb顏色系統中,顏色用 (r,g,b) 三元組表示,r,g,b是0到255之間的整數。兩個顏色之間的距離定義如下:假設給定兩個顏色的三元組分別是 (ra,ga,ba) 和 (rb,gb,bb) ,那麼他們之間的距離

輸入:先輸入乙個整數n(1<=n<=20),表示集合中有多少種顏色。

接下來n行給出集合中的顏色,每一行三個整數,分別表示一種顏色的r,g,b值(0<=r,g,b<=255)。

接下來若干行給出需要對映的顏色值,每一行三個整數表示顏色的r ,g,b值(0<=r,g,b<=255)。

輸入三個-1表示對映查詢結束,需要對映的顏色不超過100個。

輸出:對於每乙個對映查詢,輸出集合中和他距離最小的那個顏色。

如果有多個距離最小的,輸出最先出現的那個。

解題思路:

前n組資料用來建立乙個二維陣列**,用於之後取用後面一部分的資料,每輸入一組,判斷一次是否結束,如果結束就退出先把min置於無窮大,為了從n組資料中找到乙個距離r,g,b最近的一組,使用替換的方法更新test中的資料每次輸入後,如果沒有結束,需要++m計數,為最後輸出結果使用

程式:#include

#include

#include

#include

#include

int main()

}執行結果:

[root@foundation1 51nod]# gcc 1887.c -o 1887 -lm

[root@foundation1 51nod]# ./1887

160 0 0

255 255 255

0 0 1

1 1 1

128 0 0

0 128 0

128 128 0

0 0 128

126 168 9

35 86 34

133 41 193

128 0 128

0 128 128

128 128 128

255 0 0

0 1 0

0 0 0

255 255 255

253 254 255

77 79 134

81 218 0

-1 -1 -1

(0,0,0)

(255,255,255)

(255,255,255)

(128,128,128)

(126,168,9)

有一條圓形公路,半徑為x個單位。noder的家在這條公路上,有乙個超市也在這條公路上。家和超市所形成的圓心角為z度。

現在車子上有l公升油,一公升油能開5個單位的路程。問noder用這l公升油能不能先從家開到超市購物,然後再從超市回家。

解題:首先把n組資料放在二維陣列中,存下這些資料角度如果大於180度,要按小的一邊(另一邊)的角度計算弧長公式 length = 角度 * 派 * 半徑 / 180最後判斷往返路程和油能走最長路程的大小

程式:#include

#include

#include

#include

#define pi 3.1415926

int main()else}}

題目:幼兒園裡面的小朋友在玩橡皮泥,每乙個小朋友都有一塊橡皮泥。每一塊橡皮泥都是乙個長方體塊。從橡皮泥的大小可以看出哪乙個小朋友是老大,哪乙個小朋友是小弟。擁有橡皮泥體積最大的小朋友總喜歡欺負擁有橡皮泥體積最小的小朋友。

現在給出n個小朋友的橡皮泥,請輸出誰欺負了誰

解題:主要難點是對新輸入一組資料的定位,先要置maxsize為無窮小,置如果是目前最小的,就把資訊放在maxsize和maxname中如果是目前最大的,就把資訊放在minsize和minname中

程式:#include

#include

#i程式設計客棧nclude

int main()

if(size < minsize)

}printf("%s %s\n",maxname,minname);

}題目:

在房間中g顆葡萄,現在有n個人。這n個人依次進入房間吃葡萄。每個人進去的時候都做如下操作,把葡萄分成n等份,發現還多出一顆,然後吃掉這一顆以及n等份www.cppcns.com中的乙份,然後走出房間。這n個人吃完之後,最後房間裡面的葡萄剛好可以分成n等分。問n最大是多少?

解題:graph函式用來模擬拿到葡萄個數的情況,返回不能成功或者分配人數函式中 i 從大往小實驗,rem用來表示葡萄的剩餘數對 j 部分的迴圈,模擬的是每個人依次進入房間後

程式:#include

#include

int graph(int i)else

}if(ok && rem%i == 0)

--i;

}sfcuglfhyoreturn -1;

}int main() 他們對應的編碼是:

x:01, y:10, p:0010, q:0000 那麼這樣的編碼是可譯編碼

如果是下面這種情況:

x:11, y:00, p:011, q:0010 就不是可譯編碼,因為y的編碼是q的編碼的字首。

解題:每乙個字串都需要相互比較,避免自己和自己比較strstr(str1,str2) 函式用於判斷字串str2是否是str1的子串

如果是,則該函式返回str2在str1中首次出現的位址;否則,返回null

所以,當strstr返回出的位址等於str1的位址時,證明str2是str1的字首考慮前面字串是後面字串的字首,也要考慮後面字串是前面字串的字首

程式:#include

#include

int main()}}

printf(ok?"yes\n":"no\n");

return 0;

}

C語言陣列之多維陣列

多維陣列 可以理解為存放陣列的陣列 以宿舍或公寓為例 元素 就是乙個乙個房間 1001 一層 相當於是一維陣列 一棟樓 就相當於二維陣列 乙個園區 就相當於三維陣列 乙個高教區 就相當於四位陣列 乙個城市 就相當於五維陣列 多維陣列定義演示 int arr 10 10 10 10 10 10 pri...

C語言多維陣列,結構體解析

首先講解乙個誤區 我們都知道a代表陣列的首位址,a也是陣列的位址,所以它們輸出的結果是一樣的,那麼為什麼a 1 和 a 1的結果不一樣呢?因為a代表的是陣列的首位址,也就是a 0 的位址,乙個int 型別的指標指向a 0 a代表是陣列的位址,也就是a 5 這個陣列的位址,所以這個是 int 5 型別...

UE4結構體陣列之多維陣列

多維陣列,就是陣列裡面還有陣列再裡面還有陣列,可以是固定型別的一套陣列,也可以是結構體型別的一套陣列。首先,我們需要明白乙個多維陣列的用處在哪?列入,乙個社群裡有很多家庭,而家庭裡面有幾個成員,每個成員都有每個成員的資訊。這就是乙個多維陣列。現在先建立乙個成員資訊表結構體,命名為 info 名字,年...