目录
前言
前面我们已经学到了C语言的数组,今天我们就可以利用数组实现一些有意思的效果
一、实现思路
想要实现逐字向中间汇聚成句,我们首先要有个占位的一行,我们这里用“******”来占位,假设我们要打印出的句子是我的名字:"bit on the road";
首先不难想到,不管是占位的,还是要显示的一句话,我们要用数组来存储下来;
char arr1[] = "bit on the road!!!";
char arr2[] = "******************";
其次,既然我们确定了数组,那我们就可以确定数组的长度,也确认了数组的左右下标:
int left = 0;
int right = strlen(arr2)-1;
然后,我们就可以利用下标引用操作符,来修改arr2数组了:
arr2[left] = arr1[left];
arr2[right] = arr1[right];
printf("%s\n", arr2);
最后利用循环来实现对整句话的修改:
int main()
{
char arr1[] = "bit on the road!!!";
char arr2[] = "******************";
int left = 0;
int right = strlen(arr2) - 1;
printf("%s\n", arr2);
while (left <= right)
{
arr2[left] = arr1[left];
arr2[right] = arr1[right];
printf("%s\n", arr2);
left++;
right--;
}
return 0;
}
运行结果:
虽说结果已经达成我们所想,但是效果却不是很完美,我们来给它加点新玩意。
二、两个新函数
1.Sleep()函数
在C语言中,sleep函数是一个非常有用的函数,用于实现程序的延时功能。无论是在控制程序执行速度、模拟实时系统、或者创建交互式用户体验,sleep函数都能够发挥重要作用。它允许程序在指定的时间间隔内暂停执行,并在暂停期间使系统的处理器资源得到休息。
1.1 sleep 函数的基本语法:
unsigned int sleep(unsigned int seconds);
❗️在VC中使用带上头文件#include <windows.h>,在Linux下,gcc编译器中,使用的头文件因gcc版本的不同而不同#include <unistd.h> 。
❗️在VC中,Sleep中的第一个英文字符为大写的"S" ,在linux下不要大写,在标准C中是sleep, 不要大写,简单的说VC用Sleep, 别的一律使用sleep。
❗️在VC中,Sleep()里面的单位,是以毫秒为单位,所以如果想让函数滞留1秒的话,应该是Sleep(1000); 在Linux下,sleep()里面的单位是秒,而不是毫秒。
1.2 示例
#include<stdio.h>
#include<windows.h>
int main()
{
int a=1;
Sleep(3000);// 滞停3s打印a
printf("%d",a);
return 0;
}
运行结果:
Sleep函数结果演示
2.system()函数
2.1 system()函数的介绍
❗️首先使用system函数要包含头文件#include <stdlib.h>;system函数可以通过调用一些命令来实现一些特殊的功能,我们这里直接就开始讲解了,我主要是为了让大家可以先快速上手,之后会有更详细的讲解。
2.2 system函数清理屏幕
system("cls");
当代码运行在以一上的句代码时就会清理屏幕上的所有内容,合理的使用这样一句代码可以让我们在写自己的项目时及时清除屏幕上的五用信息,使我们的界面更加整洁美观。
2.3 示例
#include <stdio.h>
#include <stdlib.h> //system函数的头文件
int main()
{
for (int i = 0; i <20 ; i++)
{
system("cls");
printf("%d ",i);
}
return 0;
}
运行结果:
三、代码实现
根据以上两个函数,我们每进行一次替换打印就清屏,最后实现一个视觉效果:
我们可以有以下代码:
#include <stdio.h>
#include <string.h>
int main()
{
char arr1[] = "bit on the road!!!";
char arr2[] = "******************";
int left = 0;
int right = strlen(arr2)-1; //还可以用sizeof(arr2)/sizeof(arr2[0])-2
printf("%s\n", arr2);
while (left <= right)
{
arr2[left] = arr1[left];
arr2[right] = arr1[right];
printf("%s\n", arr2);
Sleep(1000);
system("cls");
left++;
right--;
}
printf("%s\n", arr2);
return 0;
}
有人可能不理解为什么可以换成sizeof(arr2)/sizeof(arr2[0])-2;,大家可以在评论区解答一下;
运行结果:
C语言实现--多个字符向中间汇聚成句
总结
今天我们不仅利用前面的知识制作了一个有意思的程序---多个字符向中间汇聚成句,我们也学到了两个新函数---Sleep和system,并及时进行利用。优秀的代码都是经过千锤百炼的,一口吃不成胖子。暑假将过,加油!