c语言数组题目
时间: 2025-03-10 21:02:00 浏览: 40
### C语言数组练习题示例
#### 计算数组元素之和
计算给定整型数组所有元素的总和。通过`sizeof`运算符来获得数组长度,并利用`for`循环遍历整个数组完成累加操作[^2]。
```c
#include <stdio.h>
int main() {
int arr[] = {33, 5, 22, 44, 55, 45, 86, 15, 32, 57};
int num = 0;
int len = sizeof(arr) / sizeof(int);
printf("len = %d\n", len);
for (int i = 0; i < len; i++) {
num += arr[i];
}
printf("num = %d\n", num);
}
```
此段代码展示了如何初始化一个整形数组,求其长度以及使用循环结构对各成员求和的过程。
#### 处理非递减顺序数组中的平方值
对于按照非递减排列的整数序列,当这些数值被取平方后可能会改变原有的排序关系。考虑到这一点,采用双指针策略能够有效地构建一个新的按降序排列的结果集,其中包含了原始数据经过处理后的平方项[^3]。
```c
#include <stdio.h>
#define MAX_SIZE 100 // 假设输入数组不会超过这个尺寸
void squareSort(int *arr, int n, int result[]) {
int start = 0;
int end = n - 1;
int pos = n - 1;
while (start <= end) {
if ((arr[start] * arr[start]) >= (arr[end] * arr[end])) {
result[pos--] = arr[start] * arr[start++];
} else {
result[pos--] = arr[end] * arr[end--];
}
}
}
// 测试函数
int main() {
int input[MAX_SIZE], output[MAX_SIZE];
int size;
scanf("%d", &size); // 输入数组大小
for (int i = 0; i < size; ++i){
scanf("%d",&input[i]); // 输入数组元素
}
squareSort(input, size, output);
for (int j = 0; j < size; ++j){
printf("%d ",output[j]);
}
}
```
上述例子说明了怎样接收用户自定义的一维数组作为参数,并对其进行特定逻辑转换的方法。
#### 实现矩阵转置功能
针对二维表格形式的数据集合(即矩阵),可以通过交换行与列的位置达到所谓的“转置”。下面给出了一种简单的方式来进行这样的变换工作[^4]:
```c
#include <stdio.h>
void transposeMatrix(int matrix[][3], int m, int n, int transposed[][m]);
int main(){
int original[3][3]={
{1,2,3},
{4,5,6},
{7,8,9}};
int transposed[3][3];
transposeMatrix(original, 3, 3, transposed);
for(int row=0;row<3;++row){
for(int col=0;col<3;++col){
printf("%d ",transposed[row][col]);
}
putchar('\n');
}
}
void transposeMatrix(int matrix[][3], int rows, int cols, int transposed[][rows]){
for(size_t r=0;r<rows;++r){
for(size_t c=0;c<cols;++c){
transposed[c][r]=matrix[r][c];
}
}
}
```
这段源码片段解释了一个基本的矩阵转置算法及其应用实例。
阅读全文
相关推荐


















