赞
踩
目录
编程实现:程序功能是用起泡法对数组中n个元素按从大到小的顺序进行排序。
编程实现:将a所指4×3矩阵中第k(k=2)行的元素与第0行元素交换。
编程实现,输入5位学生的三门课程的考试成绩,将成绩存放在5行三列的二维数组中,计算每门课程的平均成绩、最高分与最低分。
程序运行结果:排序前的数据: 12 34 4 7 9 6 8 3 53 -1
排序后的数据: 53 34 12 9 8 7 6 4 3 -1
使用起泡排序算法对数组中的元素进行从大到小的排序,可以遵循以下步骤:
void bubbleSort(int arr[], int n) {
int i, j, temp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (arr[j] < arr[j + 1]) {
// 交换 arr[j] 和 arr[j + 1]
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
有些复杂,还是慢慢来:
在内层循环的条件中,
j < i - 1
应该是j < 9
(或j < i
) 因为想在每次外层循环迭代时,都检查当前元素arr1[i]
与它前面的所有元素。使用j < i - 1
实际上会导致最后一次外层循环时内层循环不执行,虽然在这个特定情况下不影响最终结果,但这是一个逻辑上的不一致。
内层循环应该是
j < i - 1
而不是j < i
。当进行起泡排序时,我们需要将当前元素arr1[i]
与它前面的所有元素arr1[j]
(其中j
从0
到i - 1
)进行比较。如果arr1[i]
比arr1[j]
小,则交换它们的位置。使用j < i
会导致不必要的比较,并且当i
是最后一个元素时,会产生数组越界的错误。
for (int i = 1; i < 10; i++) { // 外层循环从第二个元素开始
for (int j = 0; j < i; j++) { // 内层循环比较当前元素与它前面包括它自己的所有元素
- #include<stdio.h>
- int main()
- {
- int arr1[10] = { 12,34,4,7,9,6,8,3,53,-1 };
- for (int i = 1; i <10; i++)
- for (int j = 0; j < i ; j++)
- {
- if (arr1[i]<arr1[j])
- {
- int t = arr1[i]; arr1[i] = arr1[j]; arr1[j] = t;
- }
- }
- printf("排序完成的数组为:");
- for (int i = 0; i < 10; i++)
- {
- printf("%d ", arr1[i]);
- }
- return 0;
- }
- 提供的代码的中文注释:
-
- c
- #include<stdio.h> // 引入标准输入输出库,用于printf等函数
-
- int main() // 主函数入口
- {
- int arr1[10] = { 12,34,4,7,9,6,8,3,53,-1 }; // 定义一个包含10个整数的数组arr1,并初始化
-
- // 外层循环,从数组的第二个元素开始(i=1),到最后一个元素的前一个位置(i<10)
- for (int i = 1; i < 10; i++)
- {
- // 内层循环,从数组的第一个元素开始(j=0),到当前外层循环元素的前一个位置(j<i)
- for (int j = 0; j < i; j++)
- {
- // 如果当前外层循环的元素arr1[i]小于内层循环的元素arr1[j]
- if (arr1[i] < arr1[j])
- {
- // 交换arr1[i]和arr1[j]的值,确保大的数在前面,小的数在后面
- int t = arr1[i]; // 使用临时变量t保存arr1[i]的值
- arr1[i] = arr1[j]; // 将arr1[j]的值赋给arr1[i]
- arr1[j] = t; // 将保存在t中的arr1[i]的原值赋给arr1[j]
- }
- }
- }
-
- // 打印排序完成的数组
- printf("排序完成的数组为:");
-
- // 遍历数组并打印每个元素
- for (int i = 0; i < 10; i++)
- {
- printf("%d ", arr1[i]); // 打印数组元素,并在每个元素后添加一个空格
- }
-
- return 0; // 主函数返回0,表示程序正常结束
- }
- 这段代码实现了起泡排序算法,用于对数组arr1进行从大到小的排序。外层循环遍历数组的每个元素,内层循环则用于比较当前元素与其前面的所有元素,并根据比较结果交换位置。最终,数组将以从大到小的顺序排列,并通过循环打印出排序后的结果。
注意⚠️注意⚠️注意⚠️注意⚠️
今天早上打开来才发现有问题, 真实情况,还好,当时没有发进去,排序的顺序排反了:】
以下是修正过的:
改了一下符号,换了一下赋值顺序;⬆️
编程实现:将a所指4×3矩阵中第k(k=2)行的元素与第0行元素交换。
测试数据: 1 2 3
4 5 6
7 8 9
10 11 12
程序运行结果:
The array before moving:
1 2 3
4 5 6
7 8 9
10 11 12
The array after moving:
7 8 9
4 5 6
1 2 3
10 11 12
第3个的一部分:
第1阶段的输出:
用一个简单的交换:
- for ( j = 0; j < 3; j++)
- {
- int t= arr1[0][j];
- arr1[0][j] = arr1[2][j];
- arr1[2][j] = t;
- }
for (int j = 0; j < 3; j++) { int t = arr1[0][j]; // 保存第0行的元素 arr1[0][j] = arr1[2][j]; // 第0行元素替换为第k行(第3行)对应元素 arr1[2][j] = t; // 第k行(第3行)元素替换为之前第0行的元素 }
代码如下
- #include<stdio.h>
- int main()
- {
- int arr1[4][3] = { {1,2,3},{4,5,6},{7,8,9},{10,11,12} };
- printf("The array before moving:\n");
- int i=0, j=0;
- for (int i = 0; i <4; i++)
- {
- for (int j = 0; j <3; j++)
- printf("%5d", arr1[i][j]);
- printf("\n");
- }
- for ( j = 0; j < 3; j++)
- {
- int t= arr1[0][j];
- arr1[0][j] = arr1[2][j];
- arr1[2][j] = t;
- }
- printf("The array after moving:\n");
- for (int i = 0; i < 4; i++)
- {
- for (int j = 0; j < 3; j++)
- printf("%5d", arr1[i][j]);
- printf("\n");
- }
- return 0;
- }
编程实现,输入5位学生的三门课程的考试成绩,将成绩存放在5行三列的二维数组中,计算每门课程的平均成绩、最高分与最低分。
输入测试数据: 45 87 90
76 84 84
71 85 97
56 67 89
82 65 56
程序运行结果:每门课程的最高分
82.00 87.00 97.00
每门课程的最低分
45.00 65.00 56.00
每门课程的平均成绩
66.00 77.60 83.20
进行一个数组排序,先来一个列排序:
- for (int j = 0; j < 3; j++)
- {
- max[j] = arr1[0][j];
- }
- for (int i = 1; i < 5; i++)
- {
-
- for (int j = 0; j < 3; j++)
- {
- if (max[j] < arr1[i][j])
- {
- max[j] = arr1[i][j];
- }
- }
- }
- for (int j = 0; j < 3; j++)
- {
- min[j] = arr1[0][j];
- }
- for (int i = 1; i < 5; i++)
- {
- for (int j = 0; j < 3; j++)
- {
- if (min[j] > arr1[i][j])
- {
- min[j] = arr1[i][j];
- }
- }
- }
OK,干了半个小时,也没搞出多少东西来;
后面再加一个平均。
然后这里现先一个补充,求数组列的平均值⬇️
for (int col = 0; col < COLS; col++) {
double sum = 0.0;
for (int row = 0; row < ROWS; row++) {
sum += matrix[row][col]; // 累加当前列的所有元素
}
averages[col] = sum / ROWS; // 计算当前列的平均值并存储
}
为啥子都能报错?我那个乖乖。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。