#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