二維陣列經典例題 裝睡

2021-09-18 04:26:49 字數 1370 閱讀 3887

原題如下:你永遠叫不醒乙個裝睡的人 —— 但是通過分析乙個人的呼吸頻率和脈搏,你可以發現誰在裝睡!醫生告訴我們,正常人睡眠時的呼吸頻率是每分鐘15-20次,脈搏是每分鐘50-70次。下面給定一系列人的呼吸頻率與脈搏,請你找出他們中間有可能在裝睡的人,即至少一項指標不在正常範圍內的人。

輸入格式:

輸入在第一行給出乙個正整數n(≤10)。隨後n行,每行給出乙個人的名字(僅由英文本母組成的、長度不超過3個字元的串)、其呼吸頻率和脈搏(均為不超過100的正整數)。

輸出格式:

按照輸入順序檢查每個人,如果其至少一項指標不在正常範圍內,則輸出其名字,每個名字佔一行。

輸入樣例:

4amy 15 70

tom 14 60

joe 18 50

zoe 21 71

輸出樣例:

tomzoe

下面是我的**:

#includemain()

for(i=0;i=15

&&((a[i][4]-'0')*10+(a[i][5]-'0'))<=20)||

!(((a[i][7]-'0')*10+(a[i][5]-'0'))>=50

&&((a[i][7]-'0')*10+(a[i][8]-'0'))<=70

)) printf("%c%c%c\n",a[i][0],a[i][1],a[i][2]);

}}

幾個關鍵點:

int n;

scanf("%d",&n);

...char a[10][10];

for(i=0;i(1)未知輸入多少行:對於未知輸入情況,在迴圈中一般要想到用while,而for一般用於已知次數,這裡很明顯屬於後者。

(2)需要注意的是在定義二維陣列時,第乙個括號內的數字要想省略是需要在定義的同時賦值的,而且定義或應用時,在兩個[ ]內都不能用變數。

那怎麼實現定義n行呢?注意,這裡n是有最大值限制的,所以直接先定義最大值的行數,和要求的列數,後續用for迴圈賦值時,判斷語句為i=15

&&((a[i][4]-'0')*10+(a[i][5]-'0'))<=20)||

!(((a[i][7]-'0')*10+(a[i][5]-'0'))>=50

&&((a[i][7]-'0')*10+(a[i][8]-'0'))<=70

) )

這個if判斷語句很長,但條理很清晰,值得注意的是

(1)將單個數字字元轉換為對應的數字值:如:a[i][4]-『0』

將連續的多個數字字元轉換為對應的數字值:如:(a[i][7]-『0』)*10+(a[i][5]-『0』)

(2)判斷語句,不在15~20之間的數,在前面加!即可。兩個條件滿足乙個就輸出,所以之間用||連線。

二維陣列及陣列例題

1.定義 二維陣列本質上是以陣列作為陣列元素的陣列,即 陣列的陣列 型別說明符 陣列名 常量表示式 常量表示式 於數學中的 矩陣 類似。2.二維陣列的遍歷,拷貝方式及其他用法上可完全延用一維陣列的方法。1.鍵盤上獲取不超過10位數字的整數 1 求位數 2 分別輸出每一位的數字 3 將整數逆序 pub...

鍊錶例題及二維陣列例題

鍊錶解題需要經過手工推導,如下 手推一 手推 include include struct student int main return0 從手推中找出規律,形成迴圈,如下 例一運用了陣列。例一 include include struct student int main else phead ...

矩陣乘法(二維陣列例題)

題目 程式設計求兩個矩陣相乘的結果。輸入第一行是整數m,n,表示第乙個矩陣是m行n列的。接下來是乙個m n的矩陣。再下一行的輸入是整數p,q,表示下乙個矩陣是p行q列 n p 再接下來就是乙個p行q列的矩陣。要求輸出兩個矩陣相乘的結果矩陣 1 m,n,p,q 8 輸入樣例 輸出樣例 2 3 10 1...