第一篇正式内容,加油加油

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

本文介绍了sleep()函数的使用、二分法查找的注意事项演示和输出阶乘之和简化方法

一、Sleep()函数的使用

使用Sleep()需要添加【windows.h】的头文件
Sleep就是使程序遇到他后暂停若干时间后继续执行。至于暂停的时间,
与()中的数值有关,单位是毫秒,即Sleep(1000)就是暂停1秒
示例:
没有添加Sleep函数之前:
在这里插入图片描述

添加Sleep函数之后的运行结果:
在这里插入图片描述
插入后就可以明显看到一行一行的运行情况
总体代码如下:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<windows.h>
// 编写代码,演示多个字符从两端移动,向中间汇聚。
int main()
{
char arr1[] = “welcome to you!!!”;
char arr2[] = “*********************”;
int left = 0;
int right = strlen(arr2) - 1;
while (left <= right)
{
arr2[left] = arr1[left];
arr2[right] = arr1[right];
printf(“%s\n”, arr2);
Sleep(1000);//睡眠(等待)1秒再继续执行
//system(“cls”);//清屏
left++;
right–;
}
//printf(“%s\n”, arr2);

return 0;

}

二、二分法查找元素

首先一定要注意使用二分法查找的前提条件:
必须在一个有序序列中查找,找到后返回目标元素的下标!
代码演示:
//在1-10的升序数组中查找目标元素,找到返回其下标值,否则输出未找到
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int k = 0;
scanf(“%d”, &k);
int length = (sizeof(arr) / sizeof(arr[0]));
int left = 0;//初始化最左边下标
int right = length - 1;//初始化最右边下标
int flag = 0;//定义他来判断执行没有找到的情况
int mid = (left + right) / 2;//初始化中间下标
//循环判断条件:左下标大于右下标则没有找到,循环结束
while (left <= right)
{
if (arr[mid] < k)
{
left = mid + 1;
mid = (left + right) / 2;
}
else if (arr[mid] > k)
{
right = mid - 1;
mid = (left + right) / 2;
}
else
{
printf(“找到了,下标为:%d\n”, mid);
flag = 1;
break;
}
}
//没有找到的则flag的值没有改变,执行此if语句
if (flag == 0)
{
printf(“没有找到!\n”);
}
return 0;
}
结果展示:
在这里插入图片描述

三、计算1-10的阶乘之和

本题题目较简单,计算1-10的阶乘之和,大家肯定首先想到用两个for循环,但是,如果用一个for循环将其计算处理呢,这样岂不是可以大大减少时间复杂度。
下面先展示一下大部分人第一时间会想到的方法:
在这里插入图片描述
这种方法也有一个需要注意的点:用ret变量存储每个数的阶乘加到sum身上后要对其进行置为1处理,否则就出现了多乘的错误
下面展示只用一个for循环的方法:

在这里插入图片描述
这里就边对每个数进行阶乘边将其顺便加到sum上,并且后面的数也只在前面ret的基础上乘上自身,推荐这个方法,同时我们在写代码的时候一定要注意多思考,可以想想有没有更加简便的方法!

总结

上面这三个小题目是我的一点点理解看法,谢谢大家可以指正不足的方法,一定会看!!!

猜你喜欢

转载自blog.csdn.net/m0_71214261/article/details/131790163