#include #define N 100
int main()
{
char array1[N] = "\0";
char array2[N] = "\0";
char array3[N] = "\0";
int i = 0;
int j = 0;
int m = 0; //字符串中除去‘-’剩下的字符个数
int K; //密钥
printf("请输入一串字符:\n");
gets(array1);
printf("请输入密钥K:\n");
scanf("%d", &K);
//删掉数组1中的‘-’, 并将其存储到数组2
for(i = 0; array1[i] != '\0'; i++)//循环录入用户输入的字符串
{
if(array1[i] != '-')
{
array2[j] = array1[i];//将用户录入的字符串删除-后存储至array2
j++;
}
}
m = strlen(array2); //计算数字符串组中字符的个数
//将数组2中的数据逆向存储到数组3,方便对其添加‘-’
for(i = 0, j = m - 1; j >= 0; j--, i++)//利用循环将array2反向存储至array3
{
array3[i] = array2[j];
}
//利用对密钥K取余,对数组3进行添加‘-’操作
for(i = 0; i < N; i++)
{
if(i % (K + 1) == 0 )
{
for(j = N; j != (i - 1); j--)
{
array3[j + 1] = array3[j];
}
array3[i] = '-';
}
}
m = strlen(array3);
//若末元素为破折号,则删去
if(array3[m - 1] == '-')
{
array3[m - 1] = "\0";
m = m - 1;
}
//将数组3逆向输出,就是对数组1操作的结果
printf("格式化后的结果是:\n");
for(i = m - 1; i >= 1; i--)//利用ASCAII码进行大小写变换
{
if(array3[i] >= 'a' && array3[i] <= 'z')
{
printf("%c", array3[i] - 32);
}
else
printf("%c", array3[i]);
}
return 0;
}