題目:
給出第一個(gè)字符串,如:"welcome to school!!!!!",
設(shè)置第二個(gè)字符串:"######################",
兩字符串字符數(shù)相等。
從第二個(gè)字符串兩端開始移動(dòng),向中間匯聚,慢慢顯示出第一個(gè)字符串。
? ? ? ? ? ? ? ? ?
如:
"######################"
↓
"we##################!!"
↓
"welcome##########ol!!!!!"
↓
……
↓
“welcome to##chool!!!!!”
↓
"welcome to school!!!!!"
? ? ? ? ? ? ? ? ? ??文章來源:http://www.zghlxwxcb.cn/news/detail-476072.html
?=========================================================================
? ? ? ? ? ? ? ? ? ? ? ?
思路:
總體思路:
(一). 生成題目要求的兩個(gè)字符串,定義左右下標(biāo)。
? ? ? ? ? ? ??
(二). 利用while循環(huán)將第二個(gè)字符串慢慢從左右兩端向中間匯聚顯示出第一個(gè)循環(huán)。
? ? ? ? ? ? ? ?
(三). 使用 Sleep()函數(shù) 和 system()函數(shù) 進(jìn)行優(yōu)化。
? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ?
第一步:
(1). 生成第一個(gè)字符串 arr1?,"welcome to school!!!!!",
和第二個(gè)字符串 arr2?:"######################",
兩字符串字符數(shù)相等。
? ? ? ? ? ? ? ? ? ? ?
(2). 定義左右下標(biāo):left 和 right 。
? ? ? ? ? ? ? ? ? ? ??
實(shí)現(xiàn)代碼:
#include <stdio.h> int main() { //生成第一個(gè)字符串a(chǎn)rr1: char arr1[] = "welcome to school!!!!!"; //生成第二個(gè)字符串a(chǎn)rr2: char arr2[] = "######################"; //定義左右小標(biāo):left 和 right int left = 0; int right = strlen(arr1) - 1; //strlen(數(shù)組名稱):求數(shù)組的長(zhǎng)度,計(jì)算字符數(shù)組中\(zhòng)0前有多少個(gè)字符 //數(shù)組長(zhǎng)度 - 1 = 最右端下標(biāo) return 0; }
實(shí)現(xiàn)圖片:
?
? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ?
第二步:
(1).?使用while循環(huán)結(jié)合左右下標(biāo)進(jìn)行循環(huán)替換,
? ? ? ? ? ? ? ? ? ? ?
(2). 利用左右下標(biāo)將 arr1 左右兩端的值付給 arr2 左右兩端的值,
? ? ? ? ? ? ? ? ??
(3). 打印重新賦值后的arr2,
? ? ? ? ? ? ? ? ? ? ?
(4). 調(diào)整左右下標(biāo),以便下次循環(huán)改變下一對(duì)左右兩端的值。
? ? ? ? ? ? ? ? ? ? ? ?
實(shí)現(xiàn)代碼:
#include <stdio.h> int main() { //生成第一個(gè)字符串a(chǎn)rr1: char arr1[] = "welcome to school!!!!!"; //生成第二個(gè)字符串a(chǎn)rr2: char arr2[] = "######################"; //定義左右小標(biāo):left 和 right int left = 0; int right = strlen(arr1) - 1; //strlen(數(shù)組名稱):求數(shù)組的長(zhǎng)度,計(jì)算字符數(shù)組中\(zhòng)0前有多少個(gè)字符 //數(shù)組長(zhǎng)度 - 1 = 最右端下標(biāo) //使用while循環(huán)結(jié)合左右下標(biāo)進(jìn)行循環(huán)替換 while (left <= right) //如果 left > right 說明數(shù)組中左右下標(biāo)之間已經(jīng)沒有值了 //有值就一直循環(huán)到?jīng)]有值 { //利用左右下標(biāo)將 arr1 左右兩端的值賦給 arr2 左右兩端的值 arr2[left] = arr1[left];//將arr1左邊的值 賦給 arr2左邊的值 arr2[right] = arr1[right];//將arr2右邊的值 賦給 arr2右邊的值 //打印重新賦值后的arr2: printf("%s\n", arr2); //調(diào)整左右下標(biāo),以便下次循環(huán)改變下一對(duì)左右兩端的值: left++; //調(diào)整左下標(biāo) right--; //調(diào)整右下標(biāo) } return 0; }
實(shí)現(xiàn)圖片:
? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ?
第三步:
(1). 使用 Sleep()函數(shù) 進(jìn)行優(yōu)化:休眠一段時(shí)間再執(zhí)行該函數(shù)后面的語(yǔ)句,
需要 頭文件<windows.h> 。
使用該函數(shù)防止編譯器執(zhí)行太快不利于觀察結(jié)果。
? ? ? ? ? ? ? ? ? ? ?
(2). 使用 system()函數(shù) 進(jìn)行優(yōu)化:system()函數(shù)可以執(zhí)行系統(tǒng)命令,
system("cls") 是清理屏幕。
這里是為了打印一句信息就清理該信息,實(shí)現(xiàn)類似動(dòng)態(tài)的效果。
? ? ? ? ? ? ? ? ??
實(shí)現(xiàn)代碼:
#include <stdio.h> #include <windows.h> int main() { //生成第一個(gè)字符串a(chǎn)rr1: char arr1[] = "welcome to school!!!!!"; //生成第二個(gè)字符串a(chǎn)rr2: char arr2[] = "######################"; //定義左右小標(biāo):left 和 right int left = 0; int right = strlen(arr1) - 1; //strlen(數(shù)組名稱):求數(shù)組的長(zhǎng)度,計(jì)算字符數(shù)組中\(zhòng)0前有多少個(gè)字符 //數(shù)組長(zhǎng)度 - 1 = 最右端下標(biāo) //使用while循環(huán)結(jié)合左右下標(biāo)進(jìn)行循環(huán)替換 while (left <= right) //如果 left > right 說明數(shù)組中左右下標(biāo)之間已經(jīng)沒有值了 //有值就一直循環(huán)到?jīng)]有值 { //利用左右下標(biāo)將 arr1 左右兩端的值賦給 arr2 左右兩端的值 arr2[left] = arr1[left];//將arr1左邊的值 賦給 arr2左邊的值 arr2[right] = arr1[right];//將arr2右邊的值 賦給 arr2右邊的值 //打印重新賦值后的arr2: printf("%s\n", arr2); //使用Sleep()函數(shù)進(jìn)行優(yōu)化: Sleep(1000);//休眠1000毫秒,即1秒,再執(zhí)行后面的語(yǔ)句,需要頭文件:<windows.h> //使用system()函數(shù)進(jìn)行優(yōu)化: system("cls");//清理屏幕 //調(diào)整左右下標(biāo),以便下次循環(huán)改變下一對(duì)左右兩端的值: left++; //調(diào)整左下標(biāo) right--; //調(diào)整右下標(biāo) } return 0; }
實(shí)現(xiàn)圖片:
? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ?
第四步:
賦值完后,arr2被system(cls)清除了,所以出循環(huán)后再打印一次arr2。
? ? ? ? ? ? ? ? ? ? ?
實(shí)現(xiàn)代碼:
#include <stdio.h> #include <windows.h> int main() { //生成第一個(gè)字符串a(chǎn)rr1: char arr1[] = "welcome to school!!!!!"; //生成第二個(gè)字符串a(chǎn)rr2: char arr2[] = "######################"; //定義左右小標(biāo):left 和 right int left = 0; int right = strlen(arr1) - 1; //strlen(數(shù)組名稱):求數(shù)組的長(zhǎng)度,計(jì)算字符數(shù)組中\(zhòng)0前有多少個(gè)字符 //數(shù)組長(zhǎng)度 - 1 = 最右端下標(biāo) //使用while循環(huán)結(jié)合左右下標(biāo)進(jìn)行循環(huán)替換 while (left <= right) //如果 left > right 說明數(shù)組中左右下標(biāo)之間已經(jīng)沒有值了 //有值就一直循環(huán)到?jīng)]有值 { //利用左右下標(biāo)將 arr1 左右兩端的值賦給 arr2 左右兩端的值 arr2[left] = arr1[left];//將arr1左邊的值 賦給 arr2左邊的值 arr2[right] = arr1[right];//將arr2右邊的值 賦給 arr2右邊的值 //打印重新賦值后的arr2: printf("%s\n", arr2); //使用Sleep()函數(shù)進(jìn)行優(yōu)化: Sleep(1000);//休眠1000毫秒,即1秒,再執(zhí)行后面的語(yǔ)句,需要頭文件:<windows.h> //使用system()函數(shù)進(jìn)行優(yōu)化: system("cls");//清理屏幕 //調(diào)整左右下標(biāo),以便下次循環(huán)改變下一對(duì)左右兩端的值: left++; //調(diào)整左下標(biāo) right--; //調(diào)整右下標(biāo) } printf("%s\n", arr2); return 0; }
實(shí)現(xiàn)圖片:
? ? ? ? ? ? ? ? ? ??
最終代碼和實(shí)現(xiàn)效果
最終代碼:
#include <stdio.h> #include <windows.h> int main() { //生成第一個(gè)字符串a(chǎn)rr1: char arr1[] = "welcome to school!!!!!"; //生成第二個(gè)字符串a(chǎn)rr2: char arr2[] = "######################"; //定義左右小標(biāo):left 和 right int left = 0; int right = strlen(arr1) - 1; //strlen(數(shù)組名稱):求數(shù)組的長(zhǎng)度,計(jì)算字符數(shù)組中\(zhòng)0前有多少個(gè)字符 //數(shù)組長(zhǎng)度 - 1 = 最右端下標(biāo) //使用while循環(huán)結(jié)合左右下標(biāo)進(jìn)行循環(huán)替換 while (left <= right) //如果 left > right 說明數(shù)組中左右下標(biāo)之間已經(jīng)沒有值了 //有值就一直循環(huán)到?jīng)]有值 { //利用左右下標(biāo)將 arr1 左右兩端的值賦給 arr2 左右兩端的值 arr2[left] = arr1[left];//將arr1左邊的值 賦給 arr2左邊的值 arr2[right] = arr1[right];//將arr2右邊的值 賦給 arr2右邊的值 //打印重新賦值后的arr2: printf("%s\n", arr2); //使用Sleep()函數(shù)進(jìn)行優(yōu)化: Sleep(1000);//休眠1000毫秒,即1秒,再執(zhí)行后面的語(yǔ)句,需要頭文件:<windows.h> //使用system()函數(shù)進(jìn)行優(yōu)化: system("cls");//清理屏幕 //調(diào)整左右下標(biāo),以便下次循環(huán)改變下一對(duì)左右兩端的值: left++; //調(diào)整左下標(biāo) right--; //調(diào)整右下標(biāo) } printf("%s\n", arr2); return 0; }
實(shí)現(xiàn)效果:
文章來源地址http://www.zghlxwxcb.cn/news/detail-476072.html
到了這里,關(guān)于C語(yǔ)言:編寫代碼,演示多個(gè)字符從兩端移動(dòng),向中間匯聚的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!