编写一个交换数组内值的程序
Write a program that swaps values within an array
这是作业
这是我的程序
#include <stdio.h>
void swap (int *a , int *b , int *c , int *d , int *e ) {
int temp1 = a;
a = b;
b = temp1;
int temp2 = b;
c = d;
d = temp2;
int temp3 = e
e = a;
a = temp3;
}
void swap (int *a , int *b , int *c , int *d , int *e );
int main(void)
{
int arr[15] = {0};
int i;
int a = arr[0], b = arr[7], c = arr[8], d = arr[3], e = arr[14];
printf("Enter 15 integers\n");
for(i = 0; i < 15; ++i) {
scanf("%d" , &arr[i]);
//printf("The ints are %d " , arr[i]); checked if all the ints were recorded
}
swap(a, b, c, d, e);
printf("Swapped array:\n %d" , arr[i]);
return 0;
}
所以程序要求我让用户输入 15 个整数。该函数必须将输入的第一个整数 (arr[0]) 与输入的第七个整数 (arr[7]) 进行交换。然后将第 8 个与第 3 个交换,然后将最后一个与第一个交换。我的程序符合要求,但给出了一些警告,当我尝试打印我的交换数组时,我得到的只是一个值 0。任何帮助将不胜感激!
编辑
抱歉,我从某人那里听到不要担心警告 - 听起来有悖常理。警告是:
[函数中]
赋值从整数生成指针而不进行强制转换
初始化从指针生成整数而不进行转换
主要
swap 的传递参数 [numbers] 从整数生成指针而不进行强制转换
你的代码有几个问题。
首先,swap
功能不起作用。您正在交换作为函数内部局部变量的指针的值,而不是交换它们指向的数组元素。您需要通过指针间接获取值。
int temp1 = *a;
*a = *b;
*b = temp1;
对于您要交换的所有其他对也类似。
其次,swap
需要指针作为参数,但您要从 main()
传递 int
个变量。您需要使用指针变量,将其设置为数组元素的地址:
int *a = &arr[0], *b = &arr[7], *c = &arr[8], *d = &arr[3], *e = &arr[14];
您可以考虑更改 swap()
函数,使其只需要两个指针,并调用它 3 次以完成所有 3 次交换。
最后,要打印数组,需要循环打印元素:
printf("Swapped array: ");
for (i = 0; i < 15; i++) {
printf("%d ", arr[i]);
}
printf("\n");
这是作业
这是我的程序
#include <stdio.h>
void swap (int *a , int *b , int *c , int *d , int *e ) {
int temp1 = a;
a = b;
b = temp1;
int temp2 = b;
c = d;
d = temp2;
int temp3 = e
e = a;
a = temp3;
}
void swap (int *a , int *b , int *c , int *d , int *e );
int main(void)
{
int arr[15] = {0};
int i;
int a = arr[0], b = arr[7], c = arr[8], d = arr[3], e = arr[14];
printf("Enter 15 integers\n");
for(i = 0; i < 15; ++i) {
scanf("%d" , &arr[i]);
//printf("The ints are %d " , arr[i]); checked if all the ints were recorded
}
swap(a, b, c, d, e);
printf("Swapped array:\n %d" , arr[i]);
return 0;
}
所以程序要求我让用户输入 15 个整数。该函数必须将输入的第一个整数 (arr[0]) 与输入的第七个整数 (arr[7]) 进行交换。然后将第 8 个与第 3 个交换,然后将最后一个与第一个交换。我的程序符合要求,但给出了一些警告,当我尝试打印我的交换数组时,我得到的只是一个值 0。任何帮助将不胜感激!
编辑
抱歉,我从某人那里听到不要担心警告 - 听起来有悖常理。警告是:
[函数中]
赋值从整数生成指针而不进行强制转换
初始化从指针生成整数而不进行转换
主要
swap 的传递参数 [numbers] 从整数生成指针而不进行强制转换
你的代码有几个问题。
首先,swap
功能不起作用。您正在交换作为函数内部局部变量的指针的值,而不是交换它们指向的数组元素。您需要通过指针间接获取值。
int temp1 = *a;
*a = *b;
*b = temp1;
对于您要交换的所有其他对也类似。
其次,swap
需要指针作为参数,但您要从 main()
传递 int
个变量。您需要使用指针变量,将其设置为数组元素的地址:
int *a = &arr[0], *b = &arr[7], *c = &arr[8], *d = &arr[3], *e = &arr[14];
您可以考虑更改 swap()
函数,使其只需要两个指针,并调用它 3 次以完成所有 3 次交换。
最后,要打印数组,需要循环打印元素:
printf("Swapped array: ");
for (i = 0; i < 15; i++) {
printf("%d ", arr[i]);
}
printf("\n");