题目:
给出第一个字符串,如:"welcome to school!!!!!",
设置第二个字符串:"######################",
两字符串字符数相等。
从第二个字符串两端开始移动,向中间汇聚,慢慢显示出第一个字符串
如:
"######################"
↓
"we##################!!"
↓
"welcome##########ol!!!!!"
↓
……
↓
“welcome to##chool!!!!!”
↓
"welcome to school!!!!!"
思路:
总体思路:
总体思路:
(一). 生成题目要求的两个字符串,定义左右下标。
(二). 利用while循环将第二个字符串慢慢从左右两端向中间汇聚显示出第一个循环。
(三). 使用 Sleep()函数 和 system()函数进行优化。
第一步:
(1). 生成第一个字符串 arr1 ,"welcome to school!!!!!",
和第二个字符串 arr2 :"######################",
两字符串字符数相等。
(2). 定义左右下标:left 和 right 。
实现代码:
#include <stdio.h> int main() { //生成第一个字符串arr1: char arr1[] = "welcome to school!!!!!"; //生成第二个字符串arr2: char arr2[] = "######################"; //定义左右小标:left 和 right int left = 0; int right = strlen(arr1) - 1; //strlen(数组名称):求数组的长度,计算字符数组中\0前有多少个字符 //数组长度 - 1 = 最右端下标 return 0; }
实现图片:
第二步:
(1). 使用while循环结合左右下标进行循环替换,
(2). 利用左右下标将 arr1 左右两端的值付给 arr2 左右两端的值,
(3). 打印重新赋值后的arr2,
(4). 调整左右下标,以便下次循环改变下一对左右两端的值。
实现代码:
#include <stdio.h> int main() { //生成第一个字符串arr1: char arr1[] = "welcome to school!!!!!"; //生成第二个字符串arr2: char arr2[] = "######################"; //定义左右小标:left 和 right int left = 0; int right = strlen(arr1) - 1; //strlen(数组名称):求数组的长度,计算字符数组中\0前有多少个字符 //数组长度 - 1 = 最右端下标 //使用while循环结合左右下标进行循环替换 while (left <= right) //如果 left > right 说明数组中左右下标之间已经没有值了 //有值就一直循环到没有值 { //利用左右下标将 arr1 左右两端的值赋给 arr2 左右两端的值 arr2[left] = arr1[left];//将arr1左边的值 赋给 arr2左边的值 arr2[right] = arr1[right];//将arr2右边的值 赋给 arr2右边的值 //打印重新赋值后的arr2: printf("%s\n", arr2); //调整左右下标,以便下次循环改变下一对左右两端的值: left++; //调整左下标 right--; //调整右下标 } return 0; }
实现图片:
第三步:
(1). 使用 Sleep()函数 进行优化:休眠一段时间再执行该函数后面的语句,
需要 头文件<windows.h> 。
使用该函数防止编译器执行太快不利于观察结果。
(2). 使用 system()函数 进行优化:system()函数可以执行系统命令,
system("cls") 是清理屏幕。
这里是为了打印一句信息就清理该信息,实现类似动态的效果。
实现代码:
#include <stdio.h> #include <windows.h> int main() { //生成第一个字符串arr1: char arr1[] = "welcome to school!!!!!"; //生成第二个字符串arr2: char arr2[] = "######################"; //定义左右小标:left 和 right int left = 0; int right = strlen(arr1) - 1; //strlen(数组名称):求数组的长度,计算字符数组中\0前有多少个字符 //数组长度 - 1 = 最右端下标 //使用while循环结合左右下标进行循环替换 while (left <= right) //如果 left > right 说明数组中左右下标之间已经没有值了 //有值就一直循环到没有值 { //利用左右下标将 arr1 左右两端的值赋给 arr2 左右两端的值 arr2[left] = arr1[left];//将arr1左边的值 赋给 arr2左边的值 arr2[right] = arr1[right];//将arr2右边的值 赋给 arr2右边的值 //打印重新赋值后的arr2: printf("%s\n", arr2); //使用Sleep()函数进行优化: Sleep(1000);//休眠1000毫秒,即1秒,再执行后面的语句,需要头文件:<windows.h> //使用system()函数进行优化: system("cls");//清理屏幕 //调整左右下标,以便下次循环改变下一对左右两端的值: left++; //调整左下标 right--; //调整右下标 } return 0; }
实现图片:
第四步:
赋值完后,arr2被system(cls)清除了,所以出循环后再打印一次arr2。
实现代码:
#include <stdio.h> #include <windows.h> int main() { //生成第一个字符串arr1: char arr1[] = "welcome to school!!!!!"; //生成第二个字符串arr2: char arr2[] = "######################"; //定义左右小标:left 和 right int left = 0; int right = strlen(arr1) - 1; //strlen(数组名称):求数组的长度,计算字符数组中\0前有多少个字符 //数组长度 - 1 = 最右端下标 //使用while循环结合左右下标进行循环替换 while (left <= right) //如果 left > right 说明数组中左右下标之间已经没有值了 //有值就一直循环到没有值 { //利用左右下标将 arr1 左右两端的值赋给 arr2 左右两端的值 arr2[left] = arr1[left];//将arr1左边的值 赋给 arr2左边的值 arr2[right] = arr1[right];//将arr2右边的值 赋给 arr2右边的值 //打印重新赋值后的arr2: printf("%s\n", arr2); //使用Sleep()函数进行优化: Sleep(1000);//休眠1000毫秒,即1秒,再执行后面的语句,需要头文件:<windows.h> //使用system()函数进行优化: system("cls");//清理屏幕 //调整左右下标,以便下次循环改变下一对左右两端的值: left++; //调整左下标 right--; //调整右下标 } printf("%s\n", arr2); return 0; }
实现图片:
最终代码和实现效果
最终代码:
#include <stdio.h> #include <windows.h> int main() { //生成第一个字符串arr1: char arr1[] = "welcome to school!!!!!"; //生成第二个字符串arr2: char arr2[] = "######################"; //定义左右小标:left 和 right int left = 0; int right = strlen(arr1) - 1; //strlen(数组名称):求数组的长度,计算字符数组中\0前有多少个字符 //数组长度 - 1 = 最右端下标 //使用while循环结合左右下标进行循环替换 while (left <= right) //如果 left > right 说明数组中左右下标之间已经没有值了 //有值就一直循环到没有值 { //利用左右下标将 arr1 左右两端的值赋给 arr2 左右两端的值 arr2[left] = arr1[left];//将arr1左边的值 赋给 arr2左边的值 arr2[right] = arr1[right];//将arr2右边的值 赋给 arr2右边的值 //打印重新赋值后的arr2: printf("%s\n", arr2); //使用Sleep()函数进行优化: Sleep(1000);//休眠1000毫秒,即1秒,再执行后面的语句,需要头文件:<windows.h> //使用system()函数进行优化: system("cls");//清理屏幕 //调整左右下标,以便下次循环改变下一对左右两端的值: left++; //调整左下标 right--; //调整右下标 } printf("%s\n", arr2); return 0; }
实现效果: