當前位置:網站首頁>【C語言】從兩端向中間打印字符串

【C語言】從兩端向中間打印字符串

2022-01-27 23:24:38 星河信使

打印一串字符串如果能加上一些酷炫的效果,那會很有意思。今天我們用C語言實現多個字符從兩端移動,向中間匯聚。

首先寫出起始和最終的效果,用兩個字符數組存儲兩個字符串

char arr1[] = "Hello World!!!!!";//hhh最先想到的就是這玩意,真是深入DNA
char arr2[] = "################";

接著寫出左下標和右下標。左下標為0,右下標可以用兩種方式來計算。萬能的方法是用sizeof。

//左下標
int left = 0;
//右下標
int sz = sizeof(arr1) / sizeof(arr1[0]);//數組的元素個數(包括'\0')
int right = sz - 2;//先减去隱藏的'\0',再减去1(下標從0開始)

由於是字符數組,可以用strlen

//右下標
int right = strlen(arr1) - 1;//長度不包括'/0',所以减去1即可

我們把arr2打印出來,然後把arr1的最左邊字符和最右邊字符拿到arr2裏,接著讓left和right向中間靠攏,往複形成循環。當left比right小時說明還有字符可以拿。

while (left <= right)
{
	printf("%s\n", arr2);
	arr2[left] = arr1[left];
	arr2[right] = arr1[right];
	left++;
	right--;
}

打印完後可以先睡眠1秒然後清屏,效果就更好了。

while (left <= right)
{
	printf("%s\n", arr2);
	Sleep(1000);//睡眠1000毫秒,即1秒,頭文件<windows.h>
	system("cls");//system調用系統指令,cls為清屏,頭文件<stdlib.h>
	arr2[left] = arr1[left];
	arr2[right] = arr1[right];
	left++;
	right--;
}

由於最後清屏了,最好再打印一遍arr1

printf("%s\n", arr1);

完整代碼如下

#include <stdio.h>
#include <string.h>
#include <windows.h>
#include <stdlib.h>

//編寫代碼,演示多個字符從兩端移動,向中間匯聚
int main()
{
	char arr1[] = "Hello World!!!!!";//hhh最先想到的就是這玩意,真是深入DNA
	char arr2[] = "################";

	//左下標
	int left = 0;
	//右下標
	//int sz = sizeof(arr1) / sizeof(arr1[0]);
	//int right = sz - 2;//先减去隱藏的'\0',再减去1(下標從0開始)
	int right = strlen(arr1) - 1;//長度不包括'/0',所以减去1即可
	
	while (left <= right)
	{
		printf("%s\n", arr2);
		Sleep(1000);//睡眠1000毫秒,即1秒,頭文件<windows.h>
		system("cls");//system調用系統指令,cls為清屏,頭文件<stdlib.h>
		arr2[left] = arr1[left];
		arr2[right] = arr1[right];
		left++;
		right--;
	}
	printf("%s\n", arr1);

	return 0;
}

版權聲明
本文為[星河信使]所創,轉載請帶上原文鏈接,感謝
https://cht.chowdera.com/2022/01/202201272324384485.html

隨機推薦