你这个函数会一直调用自己,因为你的函数的返回值还是这个函数,会陷入死循环。然后我建议你不用另外的数组去存储排好序后的数组,而是采用指针传递参数的形式传入arr数组,最后不用返回值,main()函数中的arr数组就会改变为为排好序后的数组,因为指针传递的是地址,而你的值传递是复制了一下arr数组再进行排序操作。你可以参考一下我下面的代码:
#include <cstdio>
void stb(int* arr,int size){
for (int i = 0;i < size;i++){
for (int j = 0;j < size-1-i;j++){
if (arr[j] > arr[j+1]){
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
return;
}
int main(){
int arr[10]={12,15,99,80,1,0,33,66,88,55};
int size=10;
stb(arr,size);
for (int i = 0;i < sizeof(arr)/4;i++){
printf("%d ",arr[i]);
}printf("\n");
}
你直接将数组返回再赋值给一个新数组,然后遍历打印数组不就行了,你这返回的啥呀,像个递归一样
把return换成for循环打印吧,返回值也改成void
【以下回答由 GPT 生成】
要调用这个函数并打印出返回值,你可以按照以下步骤进行操作:
int arr[] = {5, 2, 8, 3, 1};
。sizeof(arr)/sizeof(arr[0])
来计算数组长度,将结果存储在一个变量 size
中。stb(arr, size)
,将返回值存储在一个变量中,例如 int largest = stb(arr, size);
。printf
函数打印返回值,例如 printf("数组中最大的元素是: %d\n", largest);
。下面是完整的示例代码:
#include<stdio.h>
int stb(int arr[], int size) {
for (int i = 0; i < size; i++) {
for (int j = 0; j < size - 1 - i; j++) {
if (arr[j] > arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
return arr[size-1];
}
int main() {
int arr[] = {5, 2, 8, 3, 1};
int size = sizeof(arr)/sizeof(arr[0]);
int largest = stb(arr, size);
printf("数组中最大的元素是: %d\n", largest);
return 0;
}
当你运行上述代码时,将会输出数组中最大的元素。
【相关推荐】