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

简介: 题目:给出第一个字符串,如:"welcome to school!!!!!",设置第二个字符串:"######################",

题目:

给出第一个字符串,如:"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;
}

实现图片:

9adbeb9ac6dd47bfa54b72a697311488.png

第二步:

(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;
}

实现图片:

image.png

第三步:

(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;
}

实现图片:

df02210667e241ed9ffa13aa3607dd71.png

第四步:

赋值完后,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;
}

实现图片:

image.png

最终代码和实现效果

最终代码:

#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;
}


实现效果:

c224e14f7dbd4eeca9352dcf173a155a.png

相关文章
|
2月前
|
存储 安全 数据管理
C语言之考勤模拟系统平台(千行代码)
C语言之考勤模拟系统平台(千行代码)
58 4
|
1月前
|
存储 算法 C语言
【C语言】字符常量详解
字符常量是C语言中处理字符数据的重要工具。通过单引号括起一个字符,我们可以方便地使用字符常量进行字符判断、字符运算和字符串处理等操作。理解字符常量的表示方法、使用场景和ASCII码对应关系,对于编写高效的C语言程序至关重要。
142 11
|
1月前
|
存储 C语言 开发者
【C语言】格式化输出占位符及其标志字符详解(基于ISO/IEC 9899:2024)
在C语言中,格式化输出通过 `printf` 函数等格式化输出函数来实现。格式说明符(占位符)定义了数据的输出方式,标准ISO/IEC 9899:2024(C23)对这些格式说明符进行了详细规定。本文将详细讲解格式说明符的组成部分,包括标志字符、宽度、精度、长度修饰符和类型字符,并适当增加表格说明。
44 6
|
1月前
|
存储 算法 程序员
C 语言递归算法:以简洁代码驾驭复杂逻辑
C语言递归算法简介:通过简洁的代码实现复杂的逻辑处理,递归函数自我调用解决分层问题,高效而优雅。适用于树形结构遍历、数学计算等领域。
|
2月前
|
存储 安全 物联网
C语言物联网开发之设备安全与代码可靠性隐患
物联网设备的C语言代码安全与可靠性至关重要。一是防范代码安全漏洞,包括缓冲区溢出和代码注入风险,通过使用安全函数和严格输入验证来预防。二是提高代码跨平台兼容性,利用`stdint.h`定义统一的数据类型,并通过硬件接口抽象与适配减少平台间的差异,确保程序稳定运行。
|
2月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
65 1
|
3月前
|
存储 搜索推荐 C语言
深入C语言指针,使代码更加灵活(二)
深入C语言指针,使代码更加灵活(二)
|
3月前
|
存储 程序员 编译器
深入C语言指针,使代码更加灵活(一)
深入C语言指针,使代码更加灵活(一)
|
3月前
|
C语言
深入C语言指针,使代码更加灵活(三)
深入C语言指针,使代码更加灵活(三)
深入C语言指针,使代码更加灵活(三)
|
3月前
|
C语言
C语言字符(串)函数
C语言字符(串)函数