字符从两端向中间动态汇聚
练习: 编写代码,演示多个字符从两端移动,向中间汇聚(自定义长度字符)
1.这里我们定义字符串”happy new year!!! ”,对其进行思路演示。
演示过程
①初始
happy new year!!! #################
②通过下标左+右-向中间移动
h###############! ha#############!! hap###########!!! happ#########r!!! happy#######ar!!! happy #####ear!!! happy n###year!!! happy ne# year!!! happy ne# year!!! happy new year!!!
2.知识点
Ⅰ.**strlen()**计算字符串的有效长度,不包括0在内。
需引#include <string.h>头文件
Ⅱ.**sizeof()**计算数组的元素个数
Ⅲ.**Sleep()**程序运行睡眠(stop run) ;程序暂停执行指定的时间,让出cpu给其他线程,但是其监控状态仍然保持,当指定的时间到了会自动恢复运行状态。(其中1000ms=1s)
需引#inculude <windows.h>头文件
**注:**Sleep首字母需要大写
Ⅳ.**system(“cls”)**清空屏幕;在我们的程序中打印一行清除一行,为实现一行动态汇聚移动的效果,直到程序字符串演示结束。
3.代码实现
#include <stdio.h>
#include <string.h>//strlen头文件 计算字符串的有效长度
#include <windows.h>//Sleep、清空屏幕 头文件
int main()
{
char arr1[] = "happy new year!!!!!";//自己定义字符
char arr2[] = "###################";
int left = 0;//左下标
int right = strlen(arr1) - 1;//右下标
while (left <= right)
{
arr2[left] = arr1[left];
arr2[right] = arr1[right];
printf("%s\n",arr2);
Sleep(1000);//睡眠1秒(stop run) 1000ms=1s 动态效果
system("cls");//清空屏幕 为了能够一行演示两端移动
//左+右-向中间移动
left++;
right--;
}
printf("%s\n",arr2);
return 0;
}
4.总结
- 字符串需要以\0作为结尾,strlen函数返回的是在字符串中\0前面出现的字符个数(不包含\0)
- 字符串记得初始化
- 注意strlen()返回的类型,无符号长整型