这个应用程序应该使用下面的函数交换数组的前三个数字。当我交换1 2 3 4 5之类的数字时,代码有效,但当我尝试使用此数字5 3 4 9 8 7 2时,它不会显示正确的输出。我真的找不到代码有什么问题。
#include <stdio.h>
int main(void){
int a_lenth, i,a_content;
printf("Enter the lenth of the array:");
scanf("%d", &a_lenth);
int arr[a_lenth];
int arr2[a_lenth];
for(i = 0; i < a_lenth; i++){
printf("Enter the elements of the array:");
scanf("%d", &a_content);
arr[i] = a_content;
arr2[i] = a_content;
};
roll(arr, a_content, arr2);
return 0;
}
void roll(int *a1, int n, int *a2){
int e;
a2[0] = a1[2];
a2[1] = a1[0];
a2[2] = a1[1];
for(e = 0; e < n; e++){
printf("%d\n", a2[e]);
}
}
答案 0 :(得分:1)
根据我的评论:
对函数roll的调用需要第二个参数是int数组的元素数,但是你要发送的是roll(arr, a_lenth, arr2);
(我想是一个微不足道的错误)
将其更改为:Enter the lenth of the array:7
Enter the elements of the array:5
Enter the elements of the array:3
Enter the elements of the array:4
Enter the elements of the array:9
Enter the elements of the array:8
Enter the elements of the array:7
Enter the elements of the array:2
输入:(问题中指定的那个)
4
5
3
9
8
7
2
输出:
each_serializer
我希望这会有所帮助
答案 1 :(得分:0)
这可以满足您的需求。正如前面所指出的那样,不正确地调用roll,因为a_content不是输出数组的长度。
int main(void){
int a_length;
int a_content;
printf("Enter the lenth of the array:");
scanf("%d", &a_length);
int arr1[a_length];
int arr2[a_length];
for(int i = 0; i < a_length; i++){
printf("Enter the elements of the array:");
scanf("%d", &a_content);
arr1[i] = a_content;
arr2[i] = a_content;
};
//void roll(int *a1, int n, int *a2) where n == a_length
arr2[0] = arr1[2];
arr2[1] = arr1[0];
arr2[2] = arr1[1];
for(int e = 0; e < a_length; e++){
printf("%d\n", arr2[e]);
}
return 0;
}