#34177: C語言 求抓蟲


dreamer.aeu65@gmail.com (Noah)

學校 : 國立清華大學
編號 : 173796
來源 : [203.79.186.54]
最後登入時間 :
2024-05-04 16:12:04
a271. 彩色蘿蔔 -- 兔子 | From: [140.114.216.20] | 發表日期 : 2023-03-03 09:37

真的找不出錯啊...

自己帶測資進去顯示的m是對的,但如果m>0(兔子 still alive)就無法正確輸出

求解 感謝

 

#include <stdio.h>
int main() {
    int N;
    scanf("%d", &N);
    for(int i=0;i<N;i++) {
        int x, y, z, w, n, m, carrot, poison_state=0, test=0;
        scanf("%d%d%d%d%d%d", &x, &y, &z, &w, &n, &m);
        while(scanf("%d", &carrot)!=EOF) {
            m-=poison_state*n;
            switch(carrot) {
                case 0:
                    break;
                case 1:
                    m+=x;
                    break;
                case 2:
                    m+=y;
                    break;
                case 3:
                    m-=z;
                    break;
                case 4:
                    m-=w;
                    poison_state++;
                    break;
            }
            if(m<=0) {
                printf("bye~Rabbit\n");
                test=1;
                break;
            }
        }
        if(test==0)
            printf("%dg\n", m);
    }
    return 0;
}

 
#34181: Re: C語言 求抓蟲


liaoweichen1024@gmail.com (M_SQRT)

學校 : 新北市立新莊高級中學
編號 : 195452
來源 : [210.71.71.103]
最後登入時間 :
2024-05-06 12:16:25
a271. 彩色蘿蔔 -- 兔子 | From: [101.12.98.58] | 發表日期 : 2023-03-03 18:55

兩個問題:

  1. 可能會中毒死,所以有一個位置也要加m≤0的判斷。
  2. 一串數字的輸入用char arr[1000]來存,再用for(int i=0; i<strlen(arr); i+=2) 來執行,switch(arr[i]),記得case後面放的是字元。(我對C不夠熟,不太清楚你原本EOF的寫法怎麼改)
 
ZeroJudge Forum