题目要求
解题思路
1.判断字符串的右下标
char arr[] = "bit"; //[b i t \n]
// 0 1 2 3
所以一个字符串的右下标实际上是 字符串的长度-1
那么就需要用到strlen函数先求得字符串的长度,然后-1求出下标
即:int right = strlen(arr)-1;
2.循环语句的判断条件
-
想要达到由两边到中间汇聚的效果,那么必须先定义字符串左右的下标,然后通过下标来进行字符的互换,当换到中间字符时应该停止,所以左右下标的数值大小比较就可以作为循环语句的判断条件
#include<stdio.h>
#include<string.h> //strlen的头文件
int main()
{
char arr1[20] = "welcome to bit!!!!!" ;
char arr2[20] = "*******************" ;
int left = 0; //左下标
int right = strlen(arr1)-1; //右下标
while (left <= right)
{
arr2[left] = arr1[left]; //互换各自的字符
arr2[right] = arr1[right];
printf("%s\n", arr2);
left++; //改变左下标
right--; //改变右下标
}
return 0;
}
变式:每秒输出一个,直到输出结束
Sleep(1000);
Sleep函数是实现睡眠,单位是毫秒,作用就是每次转换的时候停顿一下
它的头文件是<windows.h>
#include<stdio.h>
#include<string.h>
#include<windows.h>
int main()
{
char arr1[20] = "welcome to bit!!!!!" ;
char arr2[20] = "*******************" ;
int left = 0;//左下标
int right = strlen(arr1)-1;
while (left <= right)
{
arr2[left] = arr1[left];
arr2[right] = arr1[right];
printf("%s\n", arr2);
Sleep(1000);
left++;
right--;
}
return 0;
}
变式:在同一行按秒输出
如何将屏幕清空
system("cls");
system是一个库函数,可以执行系统命令,cls是清空屏幕的一个命令
它的头文件是#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<windows.h>
#include<stdlib.h>
int main()
{
char arr1[20] = "welcome to bit!!!!!" ;
char arr2[20] = "*******************" ;
int left = 0;//左下标
int right = strlen(arr1)-1;
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;
}