#include <iostream>
#include <string>
using namespace std;
int main()
{
int n;
while(cin>>n){
if(n==0)
return 0;
else{
string num;
int count=0,sum=0;
while(n>0){
int tmp=n%2;
n/=2;
num[count]=tmp+'0';
count++;
}
cout<<"The parity of ";
for(int i=count-1;i>=0;i--){
sum+=num[i]-'0';
cout<<num[i];
}
cout<<" is "<< sum <<" (mod 2)."<<endl;
}
}
}
丟上去的時候 顯示
系統呼叫了 abort 函式! *** stack smashing detected ***: /4235110/code_4235110.exe terminated Aborted (core dumped)
求解><
你在宣告 string num; 時 num 預設會是空字串,
所以當你下面執行 num[count]=tmp+'0';
num[count] 可能會超出 num 的記憶體範圍而導致RE,
當 n=2147483647 時應該就能測出bug來了~
另外講個 string 的小技巧,
若要在字串 (string) s 後面接上字元 (char) c 可以這麼做:
s.push_bakc(c);
或
s += c
希望有幫助到你~ OwO