1. 指針數組應用:查找最長字符串
用指針數組存儲若干字符串,編寫函數找出其中最長的字符串(若有多個,返回第一個)。
#include <stdio.h>
#include <string.h>// 函數原型:找出最長字符串
const char* findLongestString(const char* arr[], int size);int main() {// 定義并初始化指針數組const char* strings[] = {"apple","banana","cherry","date","elderberry"};int size = sizeof(strings) / sizeof(strings[0]); // 計算數組大小// 調用函數查找最長字符串const char* longest = findLongestString(strings, size);// 輸出結果if (longest != NULL) {printf("最長的字符串是: %s\n", longest);} else {printf("數組為空!\n");}return 0;
}// 函數實現:找出最長字符串
const char* findLongestString(const char* arr[], int size) {if (size <= 0) return NULL; // 處理空數組const char* longest = arr[0]; // 初始化最長字符串為第一個元素for (int i = 1; i < size; i++) {if (strlen(arr[i]) > strlen(longest)) {longest = arr[i]; // 更新最長字符串}}return longest;
}
題目2、
數組指針應用:二維數組求和
題目:用數組指針作為函數參數,求一個M行N列二維數組的所有元素之和。
#include <stdio.h>// 函數聲明:使用數組指針計算二維數組元素之和
int sumArray(int (*arr)[5], int rows);int main() {// 定義并初始化一個3行5列的二維數組int arr[3][5] = {{1, 2, 3, 4, 5},{6, 7, 8, 9, 10},{11, 12, 13, 14, 15}};// 調用函數計算總和int total = sumArray(arr, 3);// 輸出結果printf("二維數組所有元素之和為: %d\n", total);return 0;
}// 函數定義:通過數組指針訪問二維數組元素并求和
int sumArray(int (*arr)[5], int rows) {int sum = 0; // 初始化累加和為0// 外層循環遍歷每一行for (int i = 0; i < rows; i++) {// 內層循環遍歷當前行的每一列元素for (int j = 0; j < 5; j++) {// 累加當前元素的值到總和sum += arr[i][j]; // 等價于 *(*(arr+i)+j)}}return sum; // 返回計算結果
}