news 2026/8/9 9:09:46

【C习题】第二章 算法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【C习题】第二章 算法

1

思路:

  1. 先接收第一个输入数值,预设为当前最大值
  2. 循环读取剩下 9 个数字,每输入一个就和当前最大值对比
  3. 如果新数字更大,则更新最大值
  4. 循环结束之后输出保存好的最大值

方法1:数组存储全部 10 个数字

int main() { //先输入10个数,将第一个数设为最大值, // 再用第一个数跟后面的九个数比较,跟新最大值 int arr[10], i, max; for (i = 0; i < 10; i++) { scanf("%d", &arr[i]); } max = arr[0]; for (i = 1; i < 10; i++) { if (arr[i] > max) { max = arr[i]; //更新最大值 } } printf("max: %d\n", max); return 0; }

方法2:for循环

int main() { //先输入10个数,将第一个数设为最大值, // 再用第一个数跟后面的九个数比较,跟新最大值 int max, num, i; //先读取一个数作为最大值 scanf("%d", &max); //再读取后面的九个数 for (i = 1; i < 10; i++) { scanf("%d", &num); if (num > max) { max = num; } } printf("max: %d\n", max); return 0; }

求 1+2+3+…+100

思路

  • 循环方式:设置累加变量sum初始值为 0,逐个把 1‑100 的数值加到 sum;
  • 数学公式:等差数列求和公式,不需要循环,一步算出结果,执行速度最快。

for 循环

//int main() //{ // int i, sum; // sum = 0; //sum初始值为0 // for (i = 1; i <= 100; i++) // { // sum += i; // } // printf("%d\n", sum); // return 0; //}

while 循环

//int main() //{ // //方法2 while循环 // int i=1, sum; //变量要初始化 // sum = 0; // while (i <= 100) // { // sum += i; // i++; // } // printf("%d\n", sum); // return 0; //}

等差数列公式

公式:(首项 + 末项)* 项数 / 2

int main() { //方法3:等差数列公式 int sum; sum = (1 + 100) * 100 / 2; printf("%d\n", sum); return 0; }

判断一个数 n 能否同时被 3 和 5 整除

  • && 是逻辑与运算符,代表两个条件必须全部成立;
  • 一个整数同时被 3 和 5 整除 → 该数是 15 的倍数;
  • a%b 代表求 a 除以 b 之后的余数,余数等于 0 即代表可以整除。
int main() { int n; scanf("%d", &n); if (n % 15 == 0 ) { printf("%d能同时被3和5整除\n", n); } else { printf("%d不能同时被3和5整除\n", n); } return 0; }
//判断一个数 n 能否同时被 3 和 5 整除 //int main() //{ // int n; // scanf("%d", &n); // if (n % 3 == 0 && n % 5 == 0) // { // printf("%d能同时被3和5整除\n", n); // } // else // { // printf("%d不能同时被3和5整除\n", n); // } // // return 0; //}

输出 100~200 之间所有素数

素数(质数):大于 1,除 1 和它自身之外,不能被其他整数整除的数字。

优化技巧:

  • 只需循环试探至 sqrt(n),节省运算;
  • 100‑200 全部为大于 2 的整数,偶数一定不是素数,可以直接只遍历奇数。

思路:

  • flag 作为判断标记,一开始默认该数是素数;一旦发现可以被整除,就修改标记并跳出内层循环。
  • sqrt(n):若 n 存在大于其平方根的因数,则必然存在对应的小于平方根的因数,因此只需要检测到平方根即可。
//输出 100~200 之间所有素数 int main() { int n, i, flag; for (n = 100; n <= 200; n++) { flag = 1; for (i = 2; i <= sqrt(n); i++) { if (n % 2 == 0) { flag = 0; break; } } if (flag == 1) { printf("%d ", n); } } return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/9 9:09:20

镜像安全与合规:扫描漏洞、签名与供应链安全

系列导读 你现在看到的是《Docker 高级实践与镜像优化:从入门到精通的工程化指南》的第 5/10 篇,当前这篇会重点解决:提供一套完整的镜像安全实践,从扫描到签名,确保生产环境镜像可信。 上一篇回顾:第 4 篇《构建缓存的高级玩法:如何让 Docker 构建速度提升 10 倍》主…

作者头像 李华
网站建设 2026/8/9 9:06:01

DFRC系统Matlab仿真:波束成形与通信雷达融合技术

1. 项目背景与核心价值 双功能雷达与通信系统&#xff08;Dual-Function Radar and Communication, DFRC&#xff09;是当前无线感知与通信融合领域的前沿研究方向。传统上雷达和通信系统需要独立部署硬件设备&#xff0c;导致频谱资源紧张、设备成本高昂。而DFRC系统通过共享硬…

作者头像 李华
网站建设 2026/8/9 9:05:37

非母语写作者英文论文被Turnitin误判为AI生成的原因及解决方案

非母语写作者英文论文被Turnitin误判为AI生成的原因及解决方案对于撰写英文学位论文、Essay 以及投递 SCI/SSCI 期刊的国内科研人员来说&#xff0c;英文 Turnitin 的 AIGC 检测是一个巨大的门槛。很多同学大惑不解&#xff1a;“我这篇英文手稿明明是自己逐字手写的&#xff0…

作者头像 李华
网站建设 2026/8/9 9:04:48

Flutter+鸿蒙全球导航方案:跨平台性能优化实践

1. 项目背景与核心价值在移动应用开发领域&#xff0c;跨平台导航功能一直是技术难点&#xff0c;特别是当需要处理海量地理数据并适配不同操作系统时。这个项目通过Flutter框架结合open_route_service库&#xff0c;实现了在鸿蒙系统上的高性能全球导航解决方案。我花了三个月…

作者头像 李华
网站建设 2026/8/9 9:04:28

Linux内核slab内存池设计与性能优化解析

1. 从Linux内核slab源码看内存池设计的极致优化 第一次看到Linux内核的slab分配器源码时&#xff0c;我被Linus Torvalds在20多年前的设计深深震撼。这个诞生于1996年的内存管理系统&#xff0c;至今仍是操作系统领域的经典之作。有趣的是&#xff0c;当我将其与C17引入的std::…

作者头像 李华