今天分享编写代码,演示多个字符从两端移动,向中间汇聚。
实现在屏幕上输出welcome to Beijing
实现的方式如下 :
####################
w##################g
we################ng
wel###############ing
…
…
…
welcome to Beijing
编写这样一个代码首先我们要定义两个数组
char arr1[]="welcome to beijing ";
char arr2[]=’’###############’’;
通过计算下标让arr1数组中的元素代替arr2中的元素,设计思路如下:
arr2[left] = arr1[left];
arr2[right] = arr1[right];
printf("%s\n",arr2);
left++;
right–;
总体代码及其运行结果:
#include <stdio.h>
#include <string.h>
int main()
{
char arr1[] = "welcome to Beijing";
char arr2[] = "##################";
int left = 0;
int right = sizeof(arr1) / sizeof(arr1[0]) - 2;
//int right=strlen(arr1)-1;
while (left <= right)
{
arr2[left] = arr1[left];
arr2[right] = arr1[right];
printf("%s\n",arr2);
left++;
right--;
}
return 0;
}
结果:
w################g
we##############ng
wel############ing
welc##########jing
welco########ijing
welcom######eijing
welcome####Beijing
welcome ## Beijing
welcome to Beijing
为了使得运行结果更美观,对于程序做简单优化如下:
每次打印完成后清空屏幕,只保留最后一次的运行结果。我们需要用到cls来清空屏幕,不要忘了引用头文件Windows.h
优化后的代码及运行结果如下:
#include <stdio.h>
#include <string.h>
#include <windows.h>
int main()
{
char arr1[] = "welcome to Beijing";
char arr2[] = "##################";
int left = 0;
int right = sizeof(arr1) / sizeof(arr1[0]) - 2;
//int right=strlen(arr1)-1;
while (left <= right)
{
arr2[left] = arr1[left];
arr2[right] = arr1[right];
printf("%s\n",arr2);
Sleep(500);
system("cls");//cls清空屏幕,system用来执行系统命令
left++;
right--;
}
printf("%s\n",arr2);//最后一次打印
return 0;
}
结果如下:
welcome to Beijing