欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

2019CVTE技术支持软件编程2

程序员文章站 2022-03-20 19:54:34
题目:有8位数密码,加密规则如下:第一步取最后一位数;第二部将倒数第二位数放到最前形成一个新数,再取新数最后一位,以此循环取完所有数为止;如98698426,密码为64982689,时间复杂度为O(N)。 思路:在输入字符串之间扩展固定长度内存,以便存储移动过来的数据。由规律得出:该固定长度为str ......

题目:有8位数密码,加密规则如下:第一步取最后一位数;第二部将倒数第二位数放到最前形成一个新数,再取新数最后一位,以此循环取完所有数为止;如98698426,密码为64982689,时间复杂度为o(n)。

思路:在输入字符串之间扩展固定长度内存,以便存储移动过来的数据。由规律得出:该固定长度为strlen(string)-1。其余按照题目操作编程即可。

/*注意作者未考虑时间复杂度,另外改程序适用于51个长度内的字符串操作(51 + (51-2) = 100),不局限于8个。*/

#include <stdio.h>

#include <string.h>

#include <malloc.h>

char str[101];

int  main()

{

       int   i, j, len;

       scanf("%s", str);

       len = strlen(str);

       memmove(str + (strlen(str)-2), str, strlen(str));

       for (j = len-3, i = strlen(str)-1; j > -1; i--, j--)

       {

              printf("%c", str[i--]); //打印当前字符

              str[j] = str[i]; //将下一个位置字符移动到字符串首位

       }

       printf("%c%c\n", str[i], str[j+1]);

       return 0;

}