/*
============================================================================
Name : Encryption.c
Author : liky
Version :
Copyright : 1.0
Description :
将一个小于8位的整数,执行简单加密,
加密的要求是首先将数据倒序,然后将每位数字都加上5,
再用和除以10的余数代替该数字,最后将第一位和最后一位数字交换
============================================================================
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/**
* 判断是否全部都是数字
**/
int isNumberAll(char src[]);
/**
* 将一个数字倒序输出
*/
void reverse(char src[]);
/**
* 每位数字加5,再模10
**/
void encoding(char src[]);
/**
* 将首尾两个字符交换
**/
void swap(char src[]);
int main() {
char *tst;
do {
fflush(stdin);
printf("请输入一个数字:/n");
gets(tst);
} while (!isNumberAll(tst));
//puts(tst);
reverse(tst);
//puts(tst);
encoding(tst);
//puts(tst);
swap(tst);
puts(tst);
/*
puts(tst);
reverse(tst);
puts(tst);
*/
}
int isNumberAll(char src[]) {
char tmp = *src;
int size = strlen(src);
int i = 0;
for (i=0; i<size; i++) {
tmp = *(src + i);
if (tmp < 48 || tmp >57) {
printf("含有非数字字符: %c/n", tmp);
return 0;
}
}
return 1;
}
void reverse(char src[]) {
char tmp;
int size = strlen(src);
int i;
for (i=0; i<size/2; i++) {
tmp = *(src + i);
*(src + i) = *(src + (size -1 - i));
*(src + size -i - 1) = tmp;
}
}
void encoding(char src[]) {
int size = strlen(src);
int i = 0;
for (i=0; i<size; i++) {
*(src + i) += 5; // 将每一位数字都加5
if (*(src + i) >57) {
*(src + i) = *(src + i) - 10;
}
//printf("取余后的数字是:%c/n",*(src + i));
}
}
void swap(char src[]) {
char tmp;
int size = strlen(src);
tmp = *src;
*src = *(src + size - 1);
*(src + size - 1) = tmp;
}