主题:[讨论]高手!请进....
yanxiaoyang
[专家分:0] 发布于 2009-06-11 21:35:00
[color=008000]嗯 ~我是一个VC的初学者,在这我向VC高手们请教下面几个问题,希望高手们能够帮帮我~指导一下我~在此先谢高手了[/color]
[color=FF0000] 一、编写一个对数据进行加密的程序,数据是由五位整数构成的。要求如下:
1、自动产生五位0~9的数字作为随机数,这个五位数相互之间不能相同。
2、将每位数字按降序排序,然后将每位数字加上5,再用和除以10的余数代替该数字。
3、将数据逆序存储。
4、打印原文和加密后的数据。[/color]
[em3]
用VC写....
回复列表 (共1个回复)
沙发
MinQuanRen [专家分:190] 发布于 2009-06-17 16:36:00
#include <iostream>
#include <list>
#include <time.h>
using namespace std;
bool check_RandomArry(int* pArry, int nData)
{
for (int i = 0; i < 6; i++)
{
if (nData == pArry[i])
{
return false;
}
}
return true;
}
int GetRandomData()
{
srand(time(NULL));
int nArray[6] = {0};
int nTempRandomData = 0;
for (int i = 0; i < 5; )
{
nTempRandomData = (int(rand()*0.1 + rand()*0.01 + rand())) % 10;
if (!check_RandomArry(nArray, nTempRandomData))
{
continue;
}
nArray[i] = nTempRandomData;
i++;
}
char pstrArray[6] = {0};
//itoa(nArray, pstrArray, 10);
for (int i = 0; i < 5; i++)
{
sprintf(&pstrArray[i], "%d", nArray[i]);
}
int nRandomData = atoi(pstrArray);
return nRandomData;
}
bool sort_(int a, int b)
{
return (a > b ? true : false);
}
int AddSecret(int nRandData)
{
list<int> m_list;
char strArry[6] = {0};
sprintf(strArry, "%d", nRandData);
char ch;
for (int i = 0; i < 5; i++)
{
ch = strArry[i];
m_list.push_back(atoi(&ch));
}
m_list.sort(sort_);
int nResData[6] = {0};
int i = 4;
list<int>::iterator it = m_list.begin();
for (; it != m_list.end(); it++, i--)
{
(*it) += 5;
(*it) %= 10;
nResData[i] = (*it);
}
for (int i = 0; i < 5; i++)
{
sprintf(&strArry[i], "%d", nResData[i]);
}
return atoi(strArry);
}
int main(int argc, char* argv[])
{
int nRandomData = GetRandomData();
int nSecretData = AddSecret(nRandomData);
printf("Random data: %d\n", nRandomData);
printf("After Add Secret data: %d\n", nSecretData);
return 0;
}
我来回复