我目前正在学习C语言入门入门课程,因此我的大部分学习都来自于留言板和在线资源。我在输出代码时遇到麻烦,我认为问题出在我的swap_array上。
大家好,我已经删除了原始代码(不知道是否鼓励这样做,只是为了清楚起见)。感谢您的评论。这是一团糟,所以我想编辑并发布更新的代码,但不确定如何在主菜单下格式化swaparray函数。基本上,我希望函数在主调用时能够交换列表1和2中的值。
#include<stdio.h>
void fillarray(int list[], int size);
void printarray(int list1[], int list2[]);
void swaparray(int list1[], int list2[], int size);
int main()
{
int a[5], b[5];
int size = 5;
fillarray(a, size);
fillarray(b, size);
printf("List1 and List2 before the swap\n");
printf("List1\t\t\t\List2\n");
printarray(a, b);
swaparray(a, b, size);
printf("List1 and List2 before the swap\n");
printf("List1\t\t\t\List2\n");
printarray(a, b, size);
return 0;
}
//////FUNCTIONS////////
void fillarray(int list[], int size)
{
printf("Please enter 5 values for the array\n");
for (int i = 0; i < 5; i++)
{
scanf_s("%d", &list[i]);
}
}
void printarray(int list1[], int list2[])
{
for (int i = 0; i < 5; i++)
{
printf("%d\t\t\t %d", list1[i], list2[i]);
}
}
void swaparray(int list1[], int list2[], int size)
{
for (int i = 0; i < 5; i++)
{
}
}
答案 0 :(得分:0)
我将尝试逐步提供帮助,并说明如何将其编译和运行,并尝试帮助您了解正在发生的事情。
在第4行,您要声明swap_array
函数,该函数当前将3个int变量作为输入。但是,您想使用[]
表示法(例如int array1[]
)为前两个参数传递数组(以便您可以交换它们)。下方的print_array
函数也是如此。您还需要在这些函数的定义中执行此操作(第21和34行)。
现在让我们看一下主要功能。您当前正在主要功能中创建array
。大。没关系。但是,紧接着,您将使用参数swap_array
和array1
调用array2
。您尚未在主函数中声明和初始化这两个变量,因此您的程序不知道该怎么做。
因此,您主要需要做的是创建两个数组array1
和array2
(类似于您对数组的处理方式),然后将它们输入swap_array函数中。
最后,您正在使用参数print1
和print2
调用print_array。同样,这些变量在您的主目录中无处可见。您到底要打印什么?您要打印刚刚交换的两个数组:array1
和array2
。因此,这些必须是您输入到打印函数中的参数,而不是print1
和print2
。
我认为您对参数和参数之间的区别感到困惑。在第3、4、5、21、34和47行上,您已经声明/定义了函数。这些功能是参数。这些参数在函数中直接用作计算的一部分。将它们视为真正价值的“占位符”。调用函数时(例如在main中),可以将这些参数值设置为所需的值(例如value或变量的值),这些参数称为参数(如在第15、16和17行中所做的那样)。
我希望这会有所帮助。您应该能够编译并运行这些更改。
答案 1 :(得分:-1)
假设交换意味着反向,要完成任务,我将使用堆栈,如下所示:
#include <stdio.h> /* stderr, fprintf, printf */
#include <stdlib.h> /* malloc, abort, free */
int * stack; /* stack array */
int main(void) { /* remember about void! */
int size, i; /* variable holding size and stack pointer, could name it better */
printf("Amount of elements:"); /* ask for amount of elements */
scanf("%d", &size); /* size now contains it */
stack = malloc(sizeof(int) * size); /* allocate enough memory */
if(!stack) { /* succeed? */
fprintf(stderr, "Out of memory."); /* no, print error */
abort(); /* bail out */
}
for(i = 0; i < size;) { /* now, read stack */
scanf("%d", &stack[i++]);
}
printf("Reversed:\n");
for(i = size; i > 0;) { /* and print it from the back */
printf("%d\n", stack[--i]);
}
free(stack);
}
请记住要验证用户的输入(我没有包括在内;这可能是您的练习)。