#17097: 各位高手可以幫我看看哪裡有問題嗎?


legendarylegend (傳奇中的傳奇)

學校 : 臺北市立敦化國中
編號 : 89426
來源 : [111.250.144.184]
最後登入時間 :
2019-07-17 20:04:54
a244. 新手訓練 ~ for + if -- 新手訓練系列 ~ 1 | From: [140.122.107.169] | 發表日期 : 2019-03-08 20:11

#include<stdio.h>

int main(){
int N[9999][3];
int a,b,k,g,c;
while(scanf("%d", &k)!=EOF){
for(b=0;b<k;b++){
for(a=0;a<=2;a++){
scanf("%d", &N[b][a]);
}
if(N[b][0]=1){
g=N[b][1]+N[b][2];
}else if(N[b][0]=2){
g=N[b][1]-N[b][2];
}else if(N[b][0]=3){
g=N[b][1]*N[b][2];
}else{
g=N[b][1]/N[b][2];
}
N[b][3]=g;
}
for(c=0;c<k;c++){
printf("%d\n", N[c][3]);
}
}
return 0;
}

 
#17102: Re:各位高手可以幫我看看哪裡有問題嗎?


inversion (「我們所認識的可符香是個像天使的好女孩」之葉林 *Cries...)

學校 : 國立清華大學
編號 : 43537
來源 : [49.159.6.107]
最後登入時間 :
2022-05-28 19:29:12
a244. 新手訓練 ~ for + if -- 新手訓練系列 ~ 1 | From: [49.158.83.43] | 發表日期 : 2019-03-08 22:10

#include

int main(){
int N[9999][3];
int a,b,k,g,c;
while(scanf("%d", &k)!=EOF){
for(b=0;b<k;b++){
for(a=0;a<=2;a++){
scanf("%d", &N[b][a]);
}
if(N[b][0]=1){
g=N[b][1]+N[b][2];
}else if(N[b][0]=2){
g=N[b][1]-N[b][2];
}else if(N[b][0]=3){
g=N[b][1]*N[b][2];
}else{
g=N[b][1]/N[b][2];
}
N[b][3]=g;
}
for(c=0;c<k;c++){
printf("%d\n", N[c][3]);
}
}
return 0;
}


N[b][0]=1 應為 N[b][0] == 1 才是判斷 N[b][0] 是否為 1 。否則將只是把 N[b][0] 的值設為 1 。N[b][0]=2 、 N[b][0]=3 也與此同理。

 

另外,當陣列被宣告為 N[9999][3] ,其不會有 N[b][3] 的位置。(因為索引值是從 0 ~ 3 - 1 也就是 0 ~ 2),因此,可以宣告成 N[9999][4] 。

 

還有,因為題目給定的 b 、 c 之值可能高達 2147483647 。而 b * c = 4611686014132420609 , int 變數會塞不下,建議可以宣告成 long long 。

 

最後,實際上每輸入 3 個數字 a 、 b 、 c 就可以輸出結果了。不用特地將所有結果存起來,再一次輸出。因為先輸出、後輸出,實際印出來的結果對評測的程式是一樣的。

 

以上。希望有幫助到您。

 
ZeroJudge Forum