在StackOverflow上的第一篇文章。我应该创建一个函数:
int sumsort(int *a, int *b, int *c)此函数应将a、b和c指向的内存位置中的3个值按升序排列,并返回内存位置a、b和c的内容总和。
下面是我的函数:
int sumsort(int *a, int *b, int *c) {
int sum = *a + *b + *c;
int sorted[] = {*a, *b, *c};
for (int i = 0; i <= 2; i++) {
if (sorted[0] > sorted[1])
{
int temp = sorted[1];
sorted[1] = sorted[0];
sorted[0] = temp;
} // end if
if (sorted[1] > sorted[2])
{
int temp2 = sorted[2];
sorted[2] = sorted[1];
sorted[1] = temp2;
} // end if
} // end for
return sum;
} // end sumsort function如何在main中访问sorted[]数组?我需要按升序打印3个变量,但我并不知道如何做到这一点,因为sumsort函数必须返回sum,并且实际的排序也必须在sumsort函数中进行。
我尝试在main中创建一个新的数组变量,并在调用sumsort函数后将其赋值为sorted[],但是因为它超出了作用域,所以不起作用?
发布于 2019-03-01 15:56:24
您可以在main外部将sorted[]声明为全局变量:
int sorted[3];
main()
{
int a=20, b=15, c=22, sum;
sum= sumsort(&a,&b,&c);
printf("%d",sum);
printf("%d", sorted[0]);
printf("%d", sorted[1]);
printf("%d", sorted[2]);
}在你的函数中,你可以使用它,如下所示:
int sumsort(int *a, int *b, int *c) {
int sum = *a + *b + *c;
sorted[0] = *a;
sorted[1] = *b;
sorted[2] = *c;
for (int i = 0; i <= 2; i++) {
if (sorted[0] > sorted[1])
{
int temp = sorted[1];
sorted[1] = sorted[0];
sorted[0] = temp;
} // end if
if (sorted[1] > sorted[2])
{
int temp2 = sorted[2];
sorted[2] = sorted[1];
sorted[1] = temp2;
} // end if
} // end for
return sum;
} // end sumsort function你可能需要检查你的排序逻辑。
希望这能有所帮助:)
https://stackoverflow.com/questions/54938644
复制相似问题