-3

現在、コードに深刻な問題が発生しています。割り当ては、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

1 に答える 1

3

の問題を解決するにはcout、文字列リテラルに二重引用符を使用してください。

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

単一引用符は、 型の文字リテラル ('a'または など'b')用charです。文字リテラルに複数の文字を指定すると、実装定義の値を持つ型の複数文字リテラルintがあるため、出力として取得した数値になります。

于 2013-02-17T21:39:28.700 に答える