【C语言】动态地演示多个字符从两端移动,向中间汇聚
来源:互联网 发布:平面图用什么软件画 编辑:程序博客网 时间:2024/04/29 11:30
第一次看到这个问题,确实有点懵:动态地?字符移动?……不过,尝试着在纸上画一画,还是能想来题目的意思。
实现思路:
多个字符可以组成一个字符串(定义为字符数组),再定义一个新的字符数组(两个数组大小相同)。因为要求是“字符从两端移动”,所以,需要两个整型变量(left和right)作为数组下标以便同时分别访问数组中的前面的和后面的字符,访问到以后将二者内容分别拷贝到第二个数组中相应的空间(赋值),然后将left和right的值作以调整,因为“向中间汇聚”,所以left增大,right减小,继续访问数组1中剩余的字符并拷贝……访问和拷贝的过程需要用循环来实现,while循环和for循环都行。
图解:
程序代码:
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<Windows.h>int main(){ char arr1[] = "Nice to meet you!"; char arr2[] = "*****************";//数组1和数组2大小相同 int left = 0; int right = strlen(arr1) - 1;//求出任意一个数组的大小(不包含'\0') printf("%s\n", arr2); while (left <= right) { Sleep(1000); arr2[left] = arr1[left]; arr2[right] = arr1[right]; left++;//左边的字符向右移动 right--;//右边的字符向左移动 printf("%s\n", arr2);//每移动一对字符,打印一次 } system("pause"); return 0;}
输出结果:
注意:
⑴“动态地”,就是要在屏幕上输出每一步拷贝后的第二个字符数组的内容,为了达到“动态”效果,我们需要用到一个函数:Sleep(),这是一个休眠函数,它的参数是需要休眠的时间,单位是毫秒。如:Sleep(1000),就是休眠1秒钟。这样,就可以每输出一次数组2,休眠1秒,然后继续输出。函数名中的“S”要大写,Sleep()包含在头文件Windows.h中。
⑵一个字符串总是以‘\0’结束,在访问、拷贝和输出时只需对有效字符进行操作。
⑶访问、拷贝和输出是一个循环的过程,循环执行的条件就是left<=right,临界点即为left=right,此时arr1[left]和arr2[right]是同一个字符,此时还应该将此字符进行拷贝,所以不能写成left < right,否则会漏掉一个字符。当left>right时,循环结束。
我这里用的是while循环,大家可以尝试用for循环再实现一下,对比看有什么区别。
- 【C语言】动态地演示多个字符从两端移动,向中间汇聚
- C语言编写代码,演示多个字符从两端移动,向中间汇聚
- 演示多个字符从两端移动,向中间汇聚。
- 演示多个字符从两端移动,向中间汇聚
- 演示多个字符从两端移动,向中间汇聚。
- 演示多个字符从两端向中间汇聚
- 编写代码,演示多个字符从两端移动,向中间汇聚。
- 编写代码,演示多个字符从两端移动,向中间汇聚。
- 编写代码,演示多个字符从两端移动,向中间汇聚。
- 编写代码,演示多个字符从两端移动,向中间汇聚
- C语言演示多个字符由两端向中间汇聚
- C::写一个可以演示多个字符从两端移动,中间汇聚的代码
- 【C语言】模拟用户登录系统 以及演示多个字符从两端向中间靠拢
- 两端输出字符,从两端移动向中间汇聚; 模拟三次密码输入
- 演示字符从两边向中间汇聚
- 让我想输出的字符串 从两端向中间汇聚
- n的阶乘;计算1!+2!+3!+4!+...+10!;编写代码,演示多个字符从两边移动,向中间汇聚;求ax^2+bx+c=0的解;写一个程序返回参数二进制中1的个数;6.求两个数的最大公约数。
- 从两端动态输出一串字符
- 使用Oracle与PowerDesigner联合建表常识
- ImageLoader基础使用
- Fiddler安装与配置
- 纪念碑谷附录三(小偷)
- 霍夫曼编码的简单介绍
- 【C语言】动态地演示多个字符从两端移动,向中间汇聚
- 设计模式学习---第四节:策略模式
- 类层次优于标签类。
- Java面试(编程)——统计一个字符串中有几个数字、汉字和字母
- 异步加载js
- TWITTER SDE 电面面经
- wamp的Apache无法启动
- NRF51822之发射功率
- 11月6日学习心得