水产网站源码,临沂网站维护,公司网站建设深,wordpress去掉仪表盘1.练习1#xff1a;多个字符从两端移动#xff0c;向中间汇聚
编写代码#xff0c;演示多个字符从两端移动#xff0c;向中间汇聚
#define _CRT_SECURE_NO_WARNINGS 1
#includestdio.h
#includestring.h
int main()
{//解题思路#xff1a;//根据题意再…1.练习1多个字符从两端移动向中间汇聚
编写代码演示多个字符从两端移动向中间汇聚
#define _CRT_SECURE_NO_WARNINGS 1
#includestdio.h
#includestring.h
int main()
{//解题思路//根据题意再结合数组的思想我们可以设置两个数组//arr1[left]/[right]替换到arr2[left]/right(每一步替换一个//就可以达成题目的目的。//↓↓↓char arr1[] wo hao shuai!;char arr2[] ;int left 0;int right strlen(arr1) - 1;//这里使用strlen函数需要包含头文件 string.h//strlen计算字符串长度时遇到/0就会停止。printf(%s\n, arr2);while (left right){arr2[left] arr1[left];arr2[right] arr1[right];left;right--;printf(%s\n, arr2);}return 0;
}
运行结果 这样写仅仅只是显示了每一步的结果并没有一个动态过程原因是因为代码运行速度过快所以此时我们可以加入sleep函数
#define _CRT_SECURE_NO_WARNINGS 1
#includestdio.h
#includestring.h
#includewindows.h
int main()
{//解题思路//根据题意再结合数组的思想我们可以设置两个数组//arr1[left]/[right]替换到arr2[left]/right(每一步替换一个//就可以达成题目的目的。//↓↓↓char arr1[] wo hao shuai!;char arr2[] ;int left 0;int right strlen(arr1) - 1;//这里使用strlen函数需要包含头文件 string.h//strlen计算字符串长度时遇到/0就会停止。printf(%s\n, arr2);while (left right){Sleep(1000);//单位是ms Sleep休眠函数S一定要大写arr2[left] arr1[left];arr2[right] arr1[right];left;right--;printf(%s\n, arr2);}return 0;
}
运行结果因为上传视频太复杂了大家可以自行下去尝试。
进阶
有兴趣的朋友们可以加system“cls”函数加入到以上函数中试试需要包含#includestdlib.h这个头文件。
2.练习2二分查找
在⼀个升序的数组中查找指定的数字n很容易想到的⽅法就是遍历数组但是这种⽅法效率⽐较低。 ⽐如我买了⼀双鞋你好奇问我多少钱我说不超过300元。你还是好奇你想知道到底多少我就让你猜你会怎么猜你会1234...这样猜吗显然很慢⼀般你都会猜中间数字⽐如150然后看⼤了还是⼩了这就是⼆分查找也叫折半查找。使用前提是所需查找的数组内部是有序的。 #define _CRT_SECURE_NO_WARNINGS 1
#includestdio.h
int main()
{int arr[] { 1,2,3,4,5,6,7,8,9,10 };int left 0;int right sizeof(arr) / sizeof(arr[0]) - 1;int key 7;//要找的数字int mid 0;//记录中间元素的下标int find 0;while (left right){mid left (right - left) / 2;if (arr[mid] key){right mid - 1;}else if (arr[mid] key){left mid 1;}else{find 1;break;}}if (1 find)printf(找到了,下标是%d\n, mid);elseprintf(找不到\n);
}
执行结果 完。