解密qq号码的知识
其实解密的过程就像是将这些数“排队”。每次从最前面拿两个,第1
个扔掉,第
2 个
放到尾部。
具体过程是这样的:刚开始这串数是“6
3 1 7 5 8 9 2 4”,首先删除6
并将
3 放到
这串数的末尾,这串数更新为“
1 7 5 8 9 2 4 3”。接下来删除
1 并将
7 放到末尾,即更新为
“
5 8 9 2 4 3 7”。再删除
5 并将
8 放到末尾即“
9 2 4 3 7 8”,删除
9 并将
2 放到末尾即“
4 3 7
8 2”,删除4
并将
3 放到末尾即“
7 8 2 3”,删除7
并将
8 放到末尾即“
2 3 8”,删除2
并将
3
放到末尾即“ 8 3”,删除8
并将
3 放到末尾即“
3”,最后删除3。
因此被删除的顺序是
“6 1
5 9 4 7 2 8 3”
首先,定义一个结构体,来存储队列的值,队头和队尾
struct queue
{
int data[100];//用来存储内容
int head;//定义头部
int tail;//定义尾部
};
完整的代码如下:
//使用结构体来实现
#define _CRT_SECURE_NO_DEPRECATE
#include<stdio.h>
#include<stdlib.h>
struct queue
{
int data[100];//用来存储内容
int head;//定义头部
int tail;//定义尾部
};
int Decrypt()
{
struct queue q;
int i;
q.head = 1;
q.tail = 1;
for (i = 1; i <= 9; i++)
{
//向队列中插入9个数
scanf("%d", &q.data[q.tail]);
q.tail++;
}
printf("qq号解密完了之后为:");
while (q.head < q.tail)//当队列不为空时
{
//打印队列首部并且将对首部出队
printf("%d ", q.data[q.head]);//q的data的头部
q.head++;
//将新队首的数字添加到队尾
q.data[q.tail] = q.data[q.head];
q.tail++;
//再将队首出队
q.head++;
}
getchar();
getchar();
return 0;
}
int main()
{
Decrypt();
system("pause");
return 0;
}
运行的结果: