求助一下
本题要求编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。注意:题目保证最大和最小值都是唯一的。
输入格式:
输入在第一行中给出一个正整数N(≤10),第二行给出N个整数,数字间以空格分隔。
输出格式:
在一行中顺序输出交换后的序列,每个整数后跟一个空格。
输入样例:
5
8 2 5 1 4
输出样例:
1 2 5 4 8
这个题怎么做
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int arr;int i;int max;
int min;int temp;
for(int i=0;i<n;i++)
{
cin>>arr;
}
for(int i=0;i<n;i++)
{
max=arr>=arr?i:i+1;
min=arr<=arr?i:i+1;
temp=arr;
arr=arr;
arr=temp;
cout<<arr<<" ";
}
}
我的代码哪里错了,要怎么改 你的代码有几个问题。首先,你在循环中使用了两个相邻元素进行比较,但是在最后一次循环时, arr 是越界的,会导致程序崩溃。其次,你没有正确交换最小值和第一个数,以及最大值和最后一个数。最后,你应该在循环结束后输出整个交换后的序列,而不是在每次循环中输出一个元素。
下面是修改后的代码:
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int arr;
int maxIndex = 0;
int minIndex = 0;
for(int i=0;i<n;i++)
{
cin>>arr[ i];
if(arr[ i] > arr)
{
maxIndex = i;
}
if(arr[ i] < arr)
{
minIndex = i;
}
}
int temp = arr;
arr = arr;
arr = temp;
temp = arr;
arr = arr;
arr = temp;
for(int i=0;i<n;i++)
{
cout<<arr[ i]<<" ";
}
return 0;
}
这样修改后的代码会正确地交换最小值和第一个数,以及最大值和最后一个数,并且输出交换后的整个序列。
希望对你有所帮助!如果你还有其他问题,请随时提问。 问题分析:
这个题目需要对输入的整数序列进行处理,获取最大值和最小值,然后将它们与序列的第一个数和最后一个数交换位置,最终输出交换后的序列。
在你的代码中,有一些问题需要解决:
1. max=arr>=arr?i:i+1; 这行代码会导致数组越界,当 i=n-1 时,arr 就越界了。所以需要在循环中让 i<n-1。
2. min=arr<=arr?i:i+1; 同样也会导致数组越界,同样需要在循环中让 i<n-1。
3. cout<<arr<<" "; 必须要等到全部交换完成后再输出序列,否则会输出不正确的序列。
4. 没有交换第一个数和最小值。需要在第一次循环结束后再进行交换。
5. 没有交换最后一个数和最大值。需要在第二次循环结束后再进行交换。
6. 需要在循环结束后输出交换后的序列。
解决方案:
下面是修改后的代码,已经添加了注释说明修改的地方。
++
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int arr, max, min, temp;
for (int i = 0; i < n; i++)
{
cin >> arr;
}
// 循环中让i<n-1,防止数组越界
for (int i = 0; i < n - 1; i++)
{
max = arr >= arr ? i : i + 1;
min = arr <= arr ? i : i + 1;
temp = arr;
arr = arr;
arr = temp;
// 每次交换不要输出序列
}
// 交换第一个数和最小值
temp = arr;
arr = arr;
arr = temp;
// 循环中让i<n-1,防止数组越界
for (int i = 0; i < n - 1; i++)
{
max = arr >= arr ? i : i + 1;
min = arr <= arr ? i : i + 1;
temp = arr;
arr = arr;
arr = temp;
// 每次交换不要输出序列
}
// 交换最后一个数和最大值
temp = arr;
arr = arr;
arr = temp;
// 输出交换后的序列
for (int i = 0; i < n; i++)
{
cout << arr << " ";
}
return 0;
}
希望这个解释对你有所帮助!如果还有其他问题,请随时提问。
球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}
页:
[1]