1. 问题描述
利用C语言编写一个程序,实现多个字符从两端从中间汇聚。需要实现的效果如下所示:

2. 思路分析
1. 先创建两个字符数组:arr1[]和arr2[],arr1[]放入我们的目标字符,arr2[]放入数量相同的“#”。
2. 创建两个整型变量left、right,分别表示arr1[]和arr2[]的第一个元素的下标和最后一个元素的下标。
3. 将arr1[left]赋值给arr2[left],arr1[right]赋值给arr2[right],打印arr2数组,并且left++,right- -,如此循环,直到left > right。
4. 若想要得到一个动态的打印结果,则需要有时间的间隔,就需要利用Sleep函数。其可以使计算机程序进入休眠,使其在一段时间内处于非活动状态。在Windows操作系统中,Sleep()函数的参数是以毫秒为单位(1s = 1000ms)。
3. 代码实现
#define _CRT_SECURE_NO_WARNINGS
#include <Windows.h>
#include <stdlib.h>
int main()
{
char arr1[] = "welcome to swust!!!";
char arr2[] = "###################";
int left = 0;
int right = strlen(arr1)-1;//或者right=sizeof(arr2)/sizeof(arr2[0])-2
while (left <= right)
{
arr2[left] = arr1[left];
arr2[right] = arr1[right];
Sleep(1000);//设置时间间隔为1s
system("cls");//system是一个库函数,可以执行系统命令,用来清空屏幕
left++;
right--;
printf("%s\n", arr2);
}
return 0;
}
代码运行结果如上所示。
欢迎大家在评论区交流学习,更多代码资料见GitHub:C-language