科技风格网站,wordpress 08影院,莱芜金点子最新招工,网站空间的配置前言#xff1a;
c语言为b站鹏哥#xff0c;嗯对应视频37集
昨天做的c语言#xff0c;今天在来做一遍#xff0c;发现做错了
今天改了平均值的计算#xff0c;
就是说最大值加上最小值#xff0c;如果说这个数值非常大的话#xff0c;两个值加上会超过int类型的最大…前言
c语言为b站鹏哥嗯对应视频37集
昨天做的c语言今天在来做一遍发现做错了
今天改了平均值的计算
就是说最大值加上最小值如果说这个数值非常大的话两个值加上会超过int类型的最大值从而导致数值的重新计算导致结果不稳定所以换一种计算方法
第二题折半查找法 环境介绍就是dev c软件运行编译 就是说最大值减去最小值然后中间有个差值将他分成一半给最小值那两个就都是平均值了 #include stdio.h
int main()
{int arr[] {1,2,3,4,5,6,7,8,9,10};int left 0;int pj sizeof(arr)/sizeof(arr[0]); //就是那个sizeof计算字符串整型都可以用全部元素都计算了//定义一个输入int k 6; int rightpj-1;for(left0; leftright; left){int mid left (right-left)/2;if(arr[mid]k){left mid 1;}if(arr[mid] k){right mid - 1;}else{printf(找到了下标为:%d\n, mid);}}return 0;
}
嗯就是正确的下标应该是5但是打印的下标为4,。。。
我知道了
我用的for循环而且我每次循环都将left加1了导致就是计算结果不准至于为什么等于4我就没有深究了
所以这个还是用for循环比较好当然我把第三个表达式删掉了也可以得到正确的值就这样 for(left0; leftright; )
这里也是会造成死循环因为把left去掉了left和right不变了 修改的代码
#include stdio.h
int main()
{int arr[] {1,2,3,4,5,6,7,8,9,10};int left 0;int pj sizeof(arr)/sizeof(arr[0]); //就是那个sizeof计算字符串整型都可以用全部元素都计算了//定义一个输入int k 6; int rightpj-1;while(left right){int mid left (right-left)/2;if(arr[mid]k){left mid 1;}if(arr[mid] k){right mid - 1;}else{printf(找到了下标为:%d\n, mid);break;}}return 0;
}
为啥这个要加break不然会造成死循环因为这个while循环找到了之后并不会变化里面的right和left值所以while循环的表达式永远为真就造成循环 第三题编写代码演示多个字符从两端移动向中间汇聚
strlen函数这个是统计 \0 之前的元素适合用于计算字符串的长度
sizeof函数统计所有元素包括\0
strlen如果需要使用这个函数需要加上头文件就是这个#include string.h
sleep函数需要使用#include windows.h这个是头文件
systemctl函数包含 #include stdlib.h执行系统命令dev c好像不用包含额外头文件
源代码
//编写代码演示多个字符从两端移动向中间汇聚//welcome to bit!!!!
//##################
//we##############!!
//...........
//welcome to bit!!!!int main()
{char arr1[] welcome to bit!!!!;char arr2[] ##################;int right strlen(arr2) - 1; //strlen比较好算字符串的长度因为不计算/0在里面字符串数组里默认有\0. int left 0;while(left right){arr2[left] arr1[left];arr2[right] arr1[right];left ;right --;Sleep(1000); system(cls);printf(%s\n, arr2);}}编写代码实现模拟用户登录情景并且只能登录三次。 如果密码正确则提示登录成功(只允许输入三次密码如果三次均输入错误则退出程序。
字符串比较不能直接这样写 if(password abcdef)
嗯.....别问问就是会报错然后就是要利用函数
strcmp函数用于对比字符串是否一致一致返回0
代码
int main()
{int i 0;char password[100] {0}; //这里需要指派空间大一点while(i 3){printf(请输入密码:);scanf(%s, password); if (strcmp(password, abcdef) 0){printf(登录成功\n);break;}else{printf(登录失败请重试\n);}i;} return 0;} 数组那里的空间需要给大一点嗯不指名空间大小的话就只能存一次
然后我有问题的是
为啥需要将输入函数放到循环里面放到循环外面就不起作用了也就是程序不能正常运行