C语言数组经典案例:掌握数组操作与算法实现

本文将介绍四个C语言数组经典案例,涵盖查找最大值和最小值、二分查找、插入排序、打印杨辉三角等功能,帮助你深入理解数组的使用、算法实现以及逻辑思维的锻炼。

1. 查找最大值和最小值

功能: 存储10个正整数,找到最大值、最小值以及它们在数组中的序号。

**代码示例:**c#include <stdio.h>

int main() { int nums[10]; int max, min, max_index, min_index;

printf('请输入10个正整数: '); for (int i = 0; i < 10; i++) { scanf('%d', &nums[i]); }

max = nums[0]; min = nums[0]; max_index = 0; min_index = 0;

for (int i = 1; i < 10; i++) { if (nums[i] > max) { max = nums[i]; max_index = i; } if (nums[i] < min) { min = nums[i]; min_index = i; } }

printf('最大值为:%d,序号为:%d ', max, max_index); printf('最小值为:%d,序号为:%d ', min, min_index);

return 0;}

要点解析:

  • 使用循环遍历数组元素,比较大小并记录最大值、最小值及其序号。

2. 二分查找

功能: 在给定的有序数组中查找用户输入的值,并提示相应的查找结果。

**代码示例:**c#include <stdio.h>

int main() { int nums[] = {2, 5, 7, 11, 15, 18, 21, 25, 30}; int len = sizeof(nums) / sizeof(nums[0]); int target, left, right, mid, found = 0;

printf('请输入要查找的值:'); scanf('%d', &target);

left = 0; right = len - 1;

while (left <= right) { mid = (left + right) / 2; if (nums[mid] == target) { found = 1; break; } else if (nums[mid] < target) { left = mid + 1; } else { right = mid - 1; } }

if (found) { printf('找到该值,序号为:%d ', mid); } else { printf('未找到该值 '); }

return 0;}

要点解析:

  • 使用二分查找算法,每次将查找范围缩小一半,提高查找效率。* 注意边界条件和循环终止条件的设置。

3. 插入排序

功能: 在有序的数列中插入一个数,使数列依然有序。

**代码示例:**c#include <stdio.h>

int main() { int nums[] = {2, 5, 7, 11, 15, 18, 21, 25, 30}; int len = sizeof(nums) / sizeof(nums[0]); int insert_num, i, j;

printf('请输入要插入的数:'); scanf('%d', &insert_num);

for (i = 0; i < len; i++) { if (nums[i] > insert_num) { break; } }

for (j = len; j > i; j--) { nums[j] = nums[j - 1]; } nums[i] = insert_num;

printf('插入后的数列为:'); for (i = 0; i <= len; i++) { printf('%d ', nums[i]); } printf(' ');

return 0;}

要点解析:

  • 找到插入位置后,将该位置及之后的元素后移,再将待插入的数插入到该位置。

4. 打印杨辉三角

功能: 打印出10行杨辉三角。

**代码示例:**c#include <stdio.h>

int main() { int rows = 10; int triangle[10][10];

for (int i = 0; i < rows; i++) { for (int j = 0; j <= i; j++) { if (j == 0 || j == i) { triangle[i][j] = 1; } else { triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j]; } printf('%d ', triangle[i][j]); } printf(' '); }

return 0;}

要点解析:

  • 利用杨辉三角的性质:每个数字等于其上方两个数字之和。* 使用嵌套循环控制行数和列数,计算每个位置的数值。

心得体会

通过实现以上功能,我对编程中的一些基本操作和思维方式有了更深的理解:

  • 数组作为数据结构可以方便地存储和操作一组数据。* 算法设计对于程序效率至关重要,例如二分查找相较于线性查找效率更高。* 编程需要严谨的逻辑思维,例如循环条件、边界条件的判断等。* 不断练习和思考是提高编程能力的关键。

希望以上案例能够帮助你更好地理解C语言数组以及相关算法的实现,在编程学习之路上更进一步!

C语言数组经典案例:查找最大值、二分查找、插入排序、打印杨辉三角

原文地址: http://www.cveoy.top/t/topic/f4kV 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录