所以我無法弄清楚這一點。 (顯然)C++代碼神奇地添加1到輸出
基本上變量數在開始時聲明,然後只在一個地方修改或增加。預計的最終數量是78682
。當count等於那個時,我會打印出字符串「ok
」。當計數增加到78683
時,代碼檢查條件並打印字符串「not ok
」。
它從不打印「not ok
」,但在最後打印計數值時,它是78683
!什麼時候C++增加了?
另一件事是,當下面的評論未註釋時,最終結果然後變成78682
,雖然我只是不明白爲什麼。任何人? (順便說一句哦,代碼需要一分鐘運行....)
#include <stdio.h>
int main(){
int count=0, sum=0;
int length []={1,2,4,10,20,40,100,200};
int value [] ={200,100,50,20,10,5,2,1};
int tmp[8] ={0};
bool stop=false;
while(!stop){
sum=0;
for(int j=0,k=0; j<8; j++){
sum+=value[j]*tmp[j];
if(j==7){
if(sum==200){
count++;
if(count==73682) printf("ok\n");
if(count==73683) printf("not ok\n");
}
k=j;
tmp[k]++;
while(tmp[k]==length[k]+1){
tmp[k]=0;
k--;
tmp[k]++;
if(tmp[0]==2)
{
//tmp[0]--;
stop=true;
}
}
}
}
}
printf("Total %d.", count);
return 0;
}
那不是'C++'。相當遙遠,我會說。不像它真的很重要,但仍然。 – luk32
@ luk32用g ++編譯並運行它。它是C++。 – TurtleTread
'printf'是* not * C++,因此這不是「純粹的」C++。 – ChiefTwoPencils