C语言:编写代码,演示多个字符从两端移动,向中间汇聚

文章介绍了一种C语言编程方法,通过while循环和Sleep()、system()函数,动态地从两端向中间显示第一个字符串,模拟特定的视觉效果。程序首先生成两个相等长度的字符串,然后在每次循环中更新第二个字符串,同时使用系统命令清除屏幕,以展示动画效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:

给出第一个字符串,如:"welcome to school!!!!!"

设置第二个字符串"######################"

两字符串字符数相等

第二个字符串两端开始移动向中间汇聚慢慢显示出第一个字符串

                 

如:

"######################"

"we##################!!"

"welcome##########ol!!!!!"

……

welcome to##chool!!!!!

"welcome to school!!!!!"

                    

 =========================================================================

                       

思路:

总体思路:

(一). 生成题目要求的两个字符串定义左右下标

              

(二). 利用while循环将第二个字符串慢慢从左右两端向中间汇聚显示出第一个循环

               

(三). 使用 Sleep()函数system()函数 进行优化

                


                 

第一步:

(1). 生成第一个字符串 arr1 "welcome to school!!!!!"

第二个字符串 arr2 "######################"

两字符串字符数相等

                     

(2). 定义左右下标left right

                      

实现代码:

#include <stdio.h>
int main()
{
	//生成第一个字符串arr1:
	char arr1[] = "welcome to school!!!!!";
	//生成第二个字符串arr2:
	char arr2[] = "######################";

	//定义左右小标:left 和 right
	int left = 0;
	int right = strlen(arr1) - 1;
	//strlen(数组名称):求数组的长度,计算字符数组中\0前有多少个字符
	//数组长度 - 1 = 最右端下标 

	return 0;
}

实现图片:

 

                 


                 

第二步:

(1). 使用while循环结合左右下标进行循环替换

                     

(2). 利用左右下标将 arr1 左右两端的值付给 arr2 左右两端的值

                  

(3). 打印重新赋值后的arr2,

                     

(4). 调整左右下标,以便下次循环改变下一对左右两端的值。

                       

实现代码:

#include <stdio.h>
int main()
{
	//生成第一个字符串arr1:
	char arr1[] = "welcome to school!!!!!";
	//生成第二个字符串arr2:
	char arr2[] = "######################";

	//定义左右小标:left 和 right
	int left = 0;
	int right = strlen(arr1) - 1;
	//strlen(数组名称):求数组的长度,计算字符数组中\0前有多少个字符
	//数组长度 - 1 = 最右端下标 

	//使用while循环结合左右下标进行循环替换
	while (left <= right)
	//如果 left > right 说明数组中左右下标之间已经没有值了
	//有值就一直循环到没有值
	{
		//利用左右下标将 arr1 左右两端的值赋给 arr2 左右两端的值
		arr2[left] = arr1[left];//将arr1左边的值 赋给 arr2左边的值
		arr2[right] = arr1[right];//将arr2右边的值 赋给 arr2右边的值

		//打印重新赋值后的arr2:
		printf("%s\n", arr2);
		
		//调整左右下标,以便下次循环改变下一对左右两端的值:
		left++; //调整左下标
		right--; //调整右下标
	}

	return 0;
}

实现图片:

                 


                 

第三步:

(1). 使用 Sleep()函数 进行优化:休眠一段时间再执行该函数后面的语句

需要 头文件<windows.h>

使用该函数防止编译器执行太快不利于观察结果

                     

(2). 使用 system()函数 进行优化:system()函数可以执行系统命令

system("cls") 清理屏幕

这里是为了打印一句信息就清理该信息实现类似动态的效果

                  

实现代码:

#include <stdio.h>
#include <windows.h>
int main()
{
	//生成第一个字符串arr1:
	char arr1[] = "welcome to school!!!!!";
	//生成第二个字符串arr2:
	char arr2[] = "######################";

	//定义左右小标:left 和 right
	int left = 0;
	int right = strlen(arr1) - 1;
	//strlen(数组名称):求数组的长度,计算字符数组中\0前有多少个字符
	//数组长度 - 1 = 最右端下标 

	//使用while循环结合左右下标进行循环替换
	while (left <= right)
	//如果 left > right 说明数组中左右下标之间已经没有值了
	//有值就一直循环到没有值
	{
		//利用左右下标将 arr1 左右两端的值赋给 arr2 左右两端的值
		arr2[left] = arr1[left];//将arr1左边的值 赋给 arr2左边的值
		arr2[right] = arr1[right];//将arr2右边的值 赋给 arr2右边的值

		//打印重新赋值后的arr2:
		printf("%s\n", arr2);
		
		//使用Sleep()函数进行优化:
		Sleep(1000);//休眠1000毫秒,即1秒,再执行后面的语句,需要头文件:<windows.h>

		//使用system()函数进行优化:
		system("cls");//清理屏幕

		//调整左右下标,以便下次循环改变下一对左右两端的值:
		left++; //调整左下标
		right--; //调整右下标
	}

	return 0;
}

实现图片:

                 


                 

第四步:

赋值完后,arr2被system(cls)清除了,所以出循环后再打印一次arr2

                     

实现代码:

#include <stdio.h>
#include <windows.h>
int main()
{
	//生成第一个字符串arr1:
	char arr1[] = "welcome to school!!!!!";
	//生成第二个字符串arr2:
	char arr2[] = "######################";

	//定义左右小标:left 和 right
	int left = 0;
	int right = strlen(arr1) - 1;
	//strlen(数组名称):求数组的长度,计算字符数组中\0前有多少个字符
	//数组长度 - 1 = 最右端下标 

	//使用while循环结合左右下标进行循环替换
	while (left <= right)
	//如果 left > right 说明数组中左右下标之间已经没有值了
	//有值就一直循环到没有值
	{
		//利用左右下标将 arr1 左右两端的值赋给 arr2 左右两端的值
		arr2[left] = arr1[left];//将arr1左边的值 赋给 arr2左边的值
		arr2[right] = arr1[right];//将arr2右边的值 赋给 arr2右边的值

		//打印重新赋值后的arr2:
		printf("%s\n", arr2);
		
		//使用Sleep()函数进行优化:
		Sleep(1000);//休眠1000毫秒,即1秒,再执行后面的语句,需要头文件:<windows.h>

		//使用system()函数进行优化:
		system("cls");//清理屏幕

		//调整左右下标,以便下次循环改变下一对左右两端的值:
		left++; //调整左下标
		right--; //调整右下标
	}

	printf("%s\n", arr2);

	return 0;
}

实现图片:

                    

最终代码和实现效果

最终代码:

#include <stdio.h>
#include <windows.h>
int main()
{
	//生成第一个字符串arr1:
	char arr1[] = "welcome to school!!!!!";
	//生成第二个字符串arr2:
	char arr2[] = "######################";

	//定义左右小标:left 和 right
	int left = 0;
	int right = strlen(arr1) - 1;
	//strlen(数组名称):求数组的长度,计算字符数组中\0前有多少个字符
	//数组长度 - 1 = 最右端下标 

	//使用while循环结合左右下标进行循环替换
	while (left <= right)
	//如果 left > right 说明数组中左右下标之间已经没有值了
	//有值就一直循环到没有值
	{
		//利用左右下标将 arr1 左右两端的值赋给 arr2 左右两端的值
		arr2[left] = arr1[left];//将arr1左边的值 赋给 arr2左边的值
		arr2[right] = arr1[right];//将arr2右边的值 赋给 arr2右边的值

		//打印重新赋值后的arr2:
		printf("%s\n", arr2);
		
		//使用Sleep()函数进行优化:
		Sleep(1000);//休眠1000毫秒,即1秒,再执行后面的语句,需要头文件:<windows.h>

		//使用system()函数进行优化:
		system("cls");//清理屏幕

		//调整左右下标,以便下次循环改变下一对左右两端的值:
		left++; //调整左下标
		right--; //调整右下标
	}

	printf("%s\n", arr2);

	return 0;
}

实现效果:

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高高的胖子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值