C语言数组精典案例
c语言数组经典例题及详解
C语言数组经典例题及详解包括以下几个经典问题:12
一维数组的循环左移和右移:
循环右移:例如,数组元素为1, 2, 3, 4, 5,经过循环右移后数组元素将会变成 2, 3, 4, 5, 1。实现方法是先将第一个元素保存,然后将数组中的元素逐个向左移动,最后将保存的第一个元素放到数组的末尾。
1. 循环右移数组
#include <stdio.h>
#include <string.h>
void rightRotate(int arr[], int n, int k) {
k = k % n; // 处理k大于n的情况
int first = arr[0];
for (int i = 0; i < n - 1; i++) {
arr[i] = arr[i + 1];
}
arr[n - 1] = first;
// 如果需要右移k次,可以取消上面的直接右移一次,使用下面的循环
/*
for (int i = 0; i < k; i++) {
int first = arr[0];
for (int j = 0; j < n - 1; j++) {
arr[j] = arr[j + 1];
}
arr[n - 1] = first;
}
*/
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
int k = 1; // 右移1位
rightRotate(arr, n, k);
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
查找数组元素:前提是原数组元素必须是有序的(升序或降序),使用折半查找法可以高效地查找元素。算法通过不断缩小查找范围来逼近目标值。
2. 折半查找法(二分查找)
#include <stdio.h>
int binarySearch(int arr[], int n, int target) {
int left = 0, right = n - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1; // 未找到
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
int target = 3;
int index = binarySearch(arr, n, target);
if (index != -1) {
printf("Element found at index: %d\n", index);
} else {
printf("Element not found.\n");
}
return 0;
}
二维数组的最大元素及其位置:
题目:有一个3×4的二维数组,求该二维数组中的最大元素及其所在的行和列。
解析:首先定义并初始化一个3×4的二维数组。然后使用嵌套的for循环遍历整个数组,对于每个元素,如果它大于当前的最大元素,则更新最大元素的值为该元素的值,并记录其行和列索引。最后输出最大元素及其位置。
3. 二维数组的最大元素及其位置
#include <stdio.h>
int main() {
int arr[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
int max = arr[0][0];
int maxRow = 0, maxCol = 0;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
if (arr[i][j] > max) {
max = arr[i][j];
maxRow = i;
maxCol = j;
}
}
}
printf("Maximum element: %d\n", max);
printf("Position: Row %d, Column %d\n", maxRow, maxCol);
return 0;
}
计算数组元素的和、查找最大值和最小值:
计算和:编写程序计算给定数组中所有元素的和。使用sizeof运算符计算数组的总大小,然后遍历数组计算和。
查找最大值和最小值:编写程序查找给定数组中的最大值和最小值。同样使用sizeof运算符计算数组的总大小,然后遍历数组找到最大值和最小值。
反转数组元素的顺序:
程序:编写程序反转给定数组的元素顺序。使用一个临时变量来交换首尾元素,然后逐步向中间移动,直到整个数组被反转。
这些例题涵盖了C语言中数组的基本操作,包括定义、初始化、遍历、查找、排序等,是学习C语言数组操作的基础。