大家好,我是立志教会大家C语言的山鬼泣江。
大家看题目一定会感到有点懵,但是看一下演示一定就明白了。
多个字符从两边向中间汇集
好啦,相信现在大家一定就明白了,接下来就可以讲一下原理了。
实现这个效果的核心逻辑很简单,不过只是一个 for 循环或者是 while 循环,但是我为什么还是把这个写成课一篇博客呢?因为这个题会牵扯很多零碎的知识点,比如说清屏和延时打印。
废话少说,直接上代码!
#include<string.h>
int main()
{
int left=0;
int right=8;
char arr1[10] = "*********";
char arr2[10] = "I LOVE U!";
int a = strlen(arr2) - 1;
int b = strlen(arr1) - 1;
while (left<=right)
{
arr1[left] = arr2[left];
arr1[right] = arr2[right];
printf("%s\n", arr1);
left++;
right--;
}
return 0;
}
这样我们就完成了初步的任务,但是这个还是和我们预想的效果不太一样。
首先,我们想要的是只有一行——一直在变化的一行,而不是像现在一样,分为5行出现。
其次,我们是想让他一个图像一个图像的出现。
如果用一句话来概括就是我们想要的是“时间”上的改变,而不是像现在一样在“空间”上的改变。
这个时候我们便需要两个函数,sleep 函数和 system("cls") 。
sleep ( ) 函数,翻译是睡觉,也就是延迟的意思,所以sleep函数的作用就是使本应出现的字符进行延迟出现,在括号()中填入数字就可以使其延迟填入数字的时间 ,单位是毫秒。
system("cls"),意思是清屏的意思,作用是消除屏幕上所有字符。
注意,sleep函数和system函数都是<windows.h>的头文件,大家不要忘记加上哦。
以下是修改过后的代码。
#include<stdio.h>
#include<string.h>
#include<windows.h>
int main()
{
int left=0;
int right=8;
char arr1[10] = "*********";
char arr2[10] = "I LOVE U!";
while (left<=right)
{
arr1[left] = arr2[left];
arr1[right] = arr2[right];
printf("%s\n", arr1);
Sleep(1000);//延迟打印
system("cls");//清屏
left++;
right--;
}
printf("%s\n", arr1);
return 0;
}
多字符终稿
好啦,这是刷题系列的第三道题。我是立志教会大家学会C语言的山鬼泣江,大家再见~~~