输入10个数,找出其中绝对值最小的数,将它和最后一个数交换,然后 输出这10个数

#include
#include
using namespace std;

int main()
{
int min,x,i,j;
int arr[10]={0};
for(i=0;i<10;i++)
cin>>arr[i];
min=arr[0];
for(i=0;i<10;i++)
if(fabs(min)>fabs(arr[i]))
min=arr[i];
j=i;
x=arr[9];
arr[9]=arr[j];
arr[j]=x;
for(i=0;i<9;i++)
cout<
cout<
return 0;
}
为什么输出的最后一个数是一个很奇怪的数字?

你第二个for循环要找的应该是最小数的序号,不是最小数
j=i,这里的i并不是最小数的序号,所以不对的

改动处见注释,供参考:

#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
    int min, x, i, j;
    int arr[10] = { 0 };
    for (i = 0; i < 10; i++)
        cin >> arr[i];

    min = arr[0]; j = 0; //修改
    
    for (i = 0; i < 10; i++)
        if (abs(min) > abs(arr[i])) {  //修改
            min = arr[i];
            j = i;
        }               //修改
    
    x = arr[9];
    arr[9] = arr[j];
    arr[j] = x;
    for (i = 0; i < 9; i++)
        cout << arr[i] << " ";
    cout << arr[9];
    return 0;
}

你的if(fabs(min)>fabs(arr[i]))后面没有大括号,导致j=i在循环外面,此时i==10,j恒等于10