|
发表于 2024-9-27 21:05:58
|
显示全部楼层
您的代码中存在几个问题,包括变量定义、逻辑错误以及语法错误。下面是修改后的代码,并附上简明解释:
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdio.h>
- #include <stdlib.h>
- //函数声明
- void Input10num(int *arr, int num);
- void make(int *arr, int num);
- void printf10num(int *arr, int num);
- int main(void)
- {
- int a[10] = {0}; // 修改数组定义
- int *p = a;
-
- printf("Please input 10 integer num:\n");
- Input10num(p, 10);
- make(p, 10);
- printf10num(p, 10);
-
- system("pause");
- return 0;
- }
- //输入10个整数
- void Input10num(int *arr, int num)
- {
- for (int i = 0; i < num; i++) {
- scanf("%d", arr + i);
- }
- }
- //最小的和第一个数换,最大的和最后一个换
- void make(int *arr, int num)
- {
- int minIndex = 0, maxIndex = 0;
- // 找到最小值的索引
- for (int i = 1; i < num; i++) {
- if (arr[i] < arr[minIndex]) {
- minIndex = i;
- }
- }
-
- // 交换最小值和第一个数
- int temp = arr[0];
- arr[0] = arr[minIndex];
- arr[minIndex] = temp;
- // 找到最大值的索引
- for (int j = 1; j < num; j++) {
- if (arr[j] > arr[maxIndex]) {
- maxIndex = j;
- }
- }
- // 交换最大值和最后一个数
- temp = arr[num - 1];
- arr[num - 1] = arr[maxIndex];
- arr[maxIndex] = temp;
- }
- //输出10个整数
- void printf10num(int *arr, int num)
- {
- for (int i = 0; i < num; i++) {
- printf("%d ", arr[i]);
- }
- printf("\n");
- }
复制代码
### 关键点修正:
1. **数组定义**:`int a = {0};` 应定义为 `int a[10] = {0};`,否则无法存储10个整数。
2. **索引逻辑**:`*(arr + i)=0; j--`这句存在语法错误,实际应为 `if (arr[i] < arr[minIndex])...`。
3. **最大值索引**:对最大值的查找应该独立进行。
4. **交换逻辑**:添加了最小值和第一个数,最大值和最后一个数的交换逻辑,并确保交换操作不会出错。
确保代码符合逻辑后,再次尝试输入数据进行测试,确认结果正确。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|