#10697: 為什麼變數位置不同答案就不一樣


jth634 (阿災哥)

學校 : 政治大學
編號 : 53978
來源 : [122.118.162.180]
最後登入時間 :
2016-06-29 19:58:07
a059. 完全平方和 | From: [122.118.139.20] | 發表日期 : 2016-02-13 23:49

原本

#include<stdio.h>

int main()
{
int n;
int a,b;
int i;
int m;
int p=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d %d",&a,&b);
for(m=1;m*m<=b;m++)
{
p=0;                                     =====>為什麼放這裡會出問題?
if((a<=(m*m))&&((m*m)<=b))
p=p+m*m;
}

printf("Case %d: %d\n",i,p);
}
return 0;
}

結果第一筆測資是4  WA

_____________________________________________________

修改

#include<stdio.h>

int main()
{
int n;
int a,b;
int i;
int m;
int p=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d %d",&a,&b);
for(m=1,p=0;m*m<=b;m++)           <=====只把p=0移近for的括號內
{
if((a<=(m*m))&&((m*m)<=b))
p=p+m*m;
}

printf("Case %d: %d\n",i,p);
}
return 0;
}

結果AC

 

 
#10700: Re:為什麼變數位置不同答案就不一樣


ccu499410020 (笹川了平)

學校 : 國立中正大學
編號 : 18334
來源 : [118.171.227.158]
最後登入時間 :
2023-12-30 20:27:06
a059. 完全平方和 | From: [36.239.45.70] | 發表日期 : 2016-02-16 15:55

恕刪

 



這是for迴圈的作用流程

for(初始設定; 迴圈不結束條件; 每跑一次迴圈完後做的事)

{迴圈內容}

直接拿樓主問題當例子吧:

for(m=1,p=0;m*m<=b;m++)

{ ... }

這個把它拆開來看長這樣

m = 1;   p = 0;

...

m++;

...

m++

...直到m*m<=b

 

for(m=1;m*m<=b;m++)

{ p=0; ... }

這個把它拆開來看長這樣

m = 1;  

p = 0;

...

m++;

p = 0;

...

m++

...直到m*m<=b

 

 
ZeroJudge Forum