2013-02-17 196 views
-2

我的代碼現在有一些嚴重的問題。該任務是編寫一個接受4位整數的函數,對其進行加密並返回新加密的數字。代碼在編譯後返回相同的東西嗎?

出於某種原因,我的代碼在編譯完成後返回完全相同的東西(編號爲1886676324)。它甚至沒有閱讀cout聲明。有人可以看一看,看看有什麼不對嗎?

#include <iostream> 
#include <stdio.h> 
#include <stdlib.h> 
using namespace std; 

int numSwap(int A[]) 
{ 
int t; 
int encryptedVal= 0; 
for(int i =0; i<4; i++) 
{ 
if((i == 0)|(i == 1)){ 
A[i+2] = t; 
A[i+2] = A[i]; 
A[i] = t; 
} 
encryptedVal = (A[i] * 10^(3-i)) + encryptedVal; 
} 
return encryptedVal; 
} 

int encrypt(int N) 
{ 
int A[4]; 
for(int i =0; i<4; i++) 
{ 
div_t M = div(N,(10^(3-i))); 
div_t Encrypted = div(7+M.quot,10); 
A[i] = Encrypted.rem; 
N= M.rem; 
} 
return numSwap(A); 
} 

int main() 
{ 
int UserVal; 
cout<< 'Please input the 4 digit value to be encrypted' <<endl; 
cin>>UserVal; 
encrypt(UserVal); 
return 0; 
} 
+4

歡迎來到Stack Overflow!要求人們發現代碼中的錯誤並不是特別有效。您應該使用調試器(或添加打印語句)來隔離問題,然後構造一個[最小測試用例](http://sscce.org)。 – 2013-02-17 21:32:20

+1

'^'不是爲了提高權力。它按位異或。 – 2013-02-17 21:32:38

+0

「它甚至沒有閱讀cout聲明。」 - 這是什麼意思? – 2013-02-17 21:33:34

回答

3

爲了與cout解決您的問題,請務必使用雙引號的字符串常量:

cout << "Please input the 4 digit value to be encrypted" << endl; 

單引號字符文字(如'a''b'),這是char類型。如果您在字符文本中輸入多個字符,那麼您將得到一個多字符文字,它的類型爲int,具有實現定義的值,因此是您獲得的輸出數。

+0

嗨,謝謝兄弟。原來單引號是主要問題 – JonAmen 2013-02-17 21:45:18

+0

@Jonathan如果我可以這麼說,'bro',我認爲主要問題是您沒有仔細閱讀您的C++書籍:) – us2012 2013-02-17 22:02:59