当前位置: 首页 > news >正文

c语言学习(days08)

二分查找的实现

二分查找要求数组必须是有序的。基本思想是通过比较中间元素与目标值,缩小查找范围至左半部分或右半部分,直到找到目标或范围为空。

int main()
{int a[] = {1,2,3,4,5,6,7,8,9};int len = sizeof(a) / sizeof(a[0]);int begin = 0;int end = len - 1;int mid;int n = 5;while(begin <= mid){mid = (begin + end) / 2;if(a[mid] > n){end = mid - 1;}else if(a[mid] < n){begin = mid + 1;}else{break;}}if(begin <= end){printf("found index = %d\n",mid);}else{printf("not found\n");}return 0;
}

字符数组与字符串的区别

字符数组可以存储字符串,但字符串必须以空字符 \0 结尾。例如:

char s[100] = "atd18888888888"; // 自动补充\0

字符数组的输入输出方法

输出方式:

        puts(s):输出字符串并自动换行。

   printf("%s", s):输出字符串,不自动换行。

输入方式:

   gets(s):不推荐,存在缓冲区溢出风险。

   fgets(s, sizeof(s), stdin):安全输入,会保留换行符。

   scanf("%s", s):遇到空格或换行停止,不读取空格。

计算字符数组容量与有效字符数

   sizeof(s):返回数组总容量(字节数)。

   strlen(s):返回有效字符数(不包括 \0)。

char s[100] = "hello";
printf("Capacity: %d\n", sizeof(s)); // 100
printf("Length: %d\n", strlen(s));  // 5

字符串拷贝与续接

拷贝:

strcpy(dest, src):将 src 拷贝到 dest,包括 \0。手动实现:

int main()
{char s1[100] = "Hello";char s2[100];int i = 0;while(s1[i] != 0){s2[i] = s1[i];++i;}s2[i] = '\0';puts(s2);return 0;
}

续接:

   strcat(dest, src):将 src 追加到 dest 末尾。

        手动实现:

int main()
{char s1[100] = "Hello ";char s2[100] = "world";int i = 0;while(s1[i] != '\0'){++i;}int j = 0;while(s2[j] !='\0'){s1[i++] = s2[j++];}s1[i] = '\0';puts(s1);return 0;
}

字符串比较

strcmp(s1, s2) 按字典序比较:

        返回值 > 0:s1 大于 s2.

  返回值 = 0:s1 等于 s2

        返回值 < 0:s1 小于 s2

 手动实现:

int main()
{char s1[100] = "Hello";char s2[100] = "World";int i = 0;while(s1[i] == s2[i] && s1[i] != '\0' && s2[i] != '\0'){++i;}printf("%d\n",s1[i] - s2[i]);return 0;
}

字符数组逆序

手动实现逆序:

int main()
{char s[100] ="Hello";int len = strlen(s);int i;for(i = 0;i < len / 2;++i){char t = s[i];s[i] = s[len -i-1];s[len-i-1] = t;}puts(s);return 0;
}
http://www.dtcms.com/a/292907.html

相关文章:

  • 对比学习 | 软标签损失计算
  • 安科瑞工商业光储充新能源电站ACCU-100M微电网协调控制器
  • MyBatis-Plus 分页实战
  • 目前主流的AI深度学习框架对Windows和Linux的支持哪个更好
  • 单细胞转录组学+空间转录组的整合及思路
  • 一个不起眼的问题,导致插件加载失败
  • python中 tqdm ,itertuples 是什么
  • 学习软件测试的第十九天
  • ​Eyeriss 架构中的访存行为解析(腾讯元宝)
  • Java学习----Redis集群
  • SHAP的升级版:可解释性框架Alibi的相关介绍(一)
  • L1与L2正则化:核心差异全解析
  • RabbitMQ03——面试题
  • DOM/事件高级
  • haprox七层代理
  • 医院如何实现节能降耗?
  • <另一种思维:语言模型如何展现人类的时间认知>读后总结
  • 【上市公司变量测量】Python+FactSet Revere全球供应链数据库,测度供应链断裂与重构变量——丁浩员等(2024)《经济研究》复现
  • Day28| 122.买卖股票的最佳时机 II、55. 跳跃游戏、45.跳跃游戏 II、1005.K次取反后最大化的数组和
  • Spring AI Alibaba + JManus:从架构原理到生产落地的全栈实践——一篇面向 Java 架构师的 20 分钟深度阅读
  • MSTP实验
  • 深入理解 Qt 中的 QImage 与 QPixmap:底层机制、差异、优化策略全解析
  • 集训Demo5
  • 代码检测SonarQube+Git安装和规范
  • 从FDTD仿真到光学神经网络:机器学习在光子器件设计中的前沿应用工坊
  • Matlab学习笔记:界面使用
  • 【数据结构初阶】--栈和队列(二)
  • CanOpen--SDO 数据帧分析
  • vscode不识别vsix结尾的插件怎么解决?
  • sysbench对linux服务器上mysql8.0版本性能压测