#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
#include <windows.h>
#include <stdlib.h>
//演示多个字符从两端向中间汇聚
int main()
{
char arr[] = "******************************"; //设置演示长度为30个字符
int leftc = '\0';
int rightc = '\0';
int i = 0, j = 0, m = 0, length = strlen(arr);
int leftnum = 0, rightnum = 0; //表示左右端需要移动的字符数
//设置左端需要移动的字符
printf("请输入左端字符:\n");
for( i = 0; (leftc = getchar()) != EOF, leftc != 10; i++)
{
arr[i] = leftc;
leftnum++;
}
//设置右端需要移动的字符
printf("请输入右端字符:\n");
for (i = length - 1; (rightc = getchar()) != EOF, rightc != 10; i--)
{
arr[i] = rightc;
rightnum++;
}
//反序,调整右端输入显示
int temp = 0;
for (i = length - rightnum, j = length-1; i <= j; i++, j--)
{
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
//设置演示
printf("开始演示:\n");
//显示初始字符串
printf("%s\n", arr);
//Sleep(10); //延迟,windows下单位为毫秒
for (i = leftnum - 1, j = length - rightnum;;)
{
//左端字符移动
if ((i + 1) != j)
{
for (m = i; m >= 0; m--)
{
arr[m + 1] = arr[m];
}
arr[0] = '*';
i++;
}
else
{
break;
}
//右端字符移动
if ((j - 1) != i)
{
for (m = j; m <= length - 1; m++)
{
arr[m - 1] = arr[m];
}
arr[length - 1] = '*';
j--;
system("cls"); //清理屏幕
printf("%s\n", arr); //显示变化后的字符串
//Sleep(10);
}
else
{
system("cls");
printf("%s\n", arr); //显示变化后的字符串
//Sleep(10);
break;
}
}
printf("完成汇聚!\n");
return 0;
}
【C语言】实现从两端输入的字符向中间汇聚。
最新推荐文章于 2024-09-25 10:02:39 发布