例题(c语言):一个字符串从两边向中间汇聚

1.代码

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<windows.h>
int main()
{
	char arr1[] = "welcome to bit...";
	char arr2[] = "#################";
	int left = 0;
	int right = strlen(arr2) - 1;
	printf("%d", right);
	while (left <= right)
	{
		Sleep(1000);
		system("cls");
		arr2[left] = arr1[left];
		arr2[right] = arr1[right];
		left++;
		right--;
        printf("%s\n", arr2);
	}
	
	return 0;
}
 

2.解析

2.1 第一步 初始化

首先需要设定两个字符串,一个是需要改成的字符串,另外一个是需要被改的字符串,需要注意的是,这两个字符串的字符个数必须要相等,只有这样,后面变换的时候才可以做到一一对应.

2.2 第二步 定位

题目的要求是字符串从两边向中间靠,所以我们需要确定字符串左边的下标(坐标)和右边的下标,

定位之后,才可以替换.

2.3 第三步 替换

替换就是将arr1的值一一覆盖到arr2上面去,同时将a二者的左坐标和右左边依次向中间移动.

2.4 第四步 循环

由于替换的这一个动作是同类型的动作多次重复,所以我们可以判定这是一个循环,所以可以使用一个while循环运行此重复的动作.

2.5 第五步 润色

在上述步骤完成后,管理员所编写的代码已经可以完成题目所提出的要求了,但是程式的运行结果给人的感觉并不好,结果是一下就出来了并且将每一次循环都打印出来了,就像这样

 

所以我们可以使用Sleep()函数使每一次结果显示之间有一个相等时间的停顿.此外,我们还可以使用system("cls"),将每一次显示的结果清除.

3. 有关又坐标的确定(strlen()为啥这么用)

strlen是字节计算字符串长度的,是不计算'\0'的. 

例如char arr[]="abc"; a,b,c的下标分别为0,1,2.如果使用strlen计算的话,结果是3,但元素c的下标是2,所以需要减1.

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值