原本
#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
恕刪
這是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