文章目录
循环与二分查找 字符判断
打印乘法口诀表
想法1,用循环,俩数相乘,看代码
列
int main()
{
int i = 0;
int j = 0;
for (i = 1; i <= 9; i++)
{
for (j = 1; j <= i; j++)
{
printf("%d*%d=%d ", i,j,i*j);
}
printf("\n");
}
return 0;
}
看下运行结果
图
可以看到这不是我们想要的结果,可是为什么呢???
看代码
列
#include<stdio.h>
int main()
{
int i = 0;
int j = 0;
for (i = 1; i <= 9; i++)
{
for (j = 1; j <= i; j++)
{
printf("%d*%d=%d ", j,i,i*j);//第一进来是1*1---->第二次---->i=2 j = 1 *1 -- >*2//所以i放在后面
}
printf("\n");
}
return 0;
}
原来是i和j的位置啊哪为啥换一下就好了呢解释:看图
循环do while
先看一下do while的流程图吧
图
do while 就是上来不管你里面条件真假都先执行一遍,然后在进行判断用的场景比较少!!(break和contiune)和在while中一致
二分查找
就是类似小的时候上课玩的猜数字游戏一样,老师给你一个大致的范围你去猜,一般人都会猜个中间值,然后老师会睡小了或者大了,那么二分查找也同理得
他的定义大致说一下建议和代码搭配一起看
在有序数组中(没有得不行),用下标来查找,就是用最首元素和最大得下标加起来除二就得到就等到了下标,然后判断,如果小了那么中间下标加一和最大得下标在相加除2,!!那么看代码
int main()
{
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int k = 7;
int sz = sizeof(arr) / sizeof(arr[0]);//计算元素个数
int left = 0;//最小下标
int right = sz - 1;//最大
while (left<=right)//
{
int mid = (left + right) / 2;//中间下标
if (arr[mid] < k)//记得是数组mid不要忘记
{
left = arr[mid] + 1;
}
else if (arr[mid]>k)
{
right = arr[mid] - 1;
}
else
{
printf("恭喜你找到了,下标是:%d", mid);
break;//找到了就跳出循环
}
}
if (left > right)//最小的下标大于最大的下标表示,已经全部找过没找的
printf("55~~~找不到你要得数字\n");
}
字符判断
字符判断用啥判断???
char arr1[]="daudada";
char arr2[]="cacascac"
这样吗???错错错,这样是比这字符数组首哥元素得数组名,那是没有意义得,那么用啥??当当当介绍一个新函数strcmp专门用来判读数组得,不过用它还需要引头文件string.看下代码emmm
int main()
{
char password[10] = { 0 };
scanf("%s", password);//数组的首元素就是地址
if (strcmp(password, "123456") == 0)
{
printf("密码正确");
}
return 0;
}
运行结果
strcmp对比是用assic对比,就是设a 和a对比是去assic中啊看对应得下表对比
assic️标
拓展内容(个人看法)
随机值
1.个人看法。。。。
rand()–>
图
这里得意思是生成一个随机数,可是他不够随机,应为他每次开始得位置都一样,第一次可能比较随机,可是第二次,第三次???那么他就成了固定得数了
这里得意思大致就是给srand函数设置一个种子他就会随机生成---->那么输入100 哦变了——————>按巨快没变好像不够灵活他好像也不够随机那么要想想哦哦哦,给他种子设置一个一直在变化得东西有啥??日期??这个变得好像也太慢了----》时间—》这个好像一直在变
那么介绍一个都想时间戳,他就是计算机创造开始得时间-现在得时间,哦哦哦,可是要怎么获取这个时间呢??
int main(){
//随机值
//rand(随机值在7fff的范围内,)----->生成起点都一样所以每次结果一样-->srand
//srand---->(输入值可以,不过使用快了就不随机)--->时间戳计算机其实计算机开始时间到现在开始的时间的值
int ret = rand();
srand((unsigned int)time(NULL));//
printf("%d", ret);
}
srand((unsigned int)time(NULL))这句话得意思是
生成一个随机值————————>在rand之前调用–>只需要设置一次,不然一直生成得话哪他不就和之前一样没有意思不够随机