交换最小值和最大值
本题要求编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。注意:题目保证最大和最小值都是唯一的。
输入格式:
输入在第一行中给出一个正整数N(≤10),第二行给出N个整数,数字间以空格分隔。
输出格式:
在一行中顺序输出交换后的序列,每个整数后跟一个空格。
输入样例:
5
8 2 5 1 4
输出样例:
1 2 5 4 8
麻烦各位大佬,看看我的出错在哪了
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int len,i;
int num;
int min,max,min_index,max_index;
scanf("%d",&len);
for(i=0;i<len;i++)
{
scanf("%d",&num);
}
min = num;
max = num;
min_index = 0;
max_index = 0;
for(i=0;i<len;i++)
{
if(min>num)
{
min = num;
min_index = i;
}
if(max<num)
{
max = num;
max_index = i;
}
}
//最小值和第一个值互换
int t;
t = num;
num = num;
num = t;
//最大值和最后一个互换
int k;
k = num;
num = num;
num = k;
for(i=0;i<len;i++)
{
printf("%d",num);
}
printf("\n");
printf("%d %d\n",min_index,max_index);
printf("%d %d\n",num,num);
system("pause");
return 0;
} #include <stdio.h>
#include <stdlib.h>
int main(void)
{
int len, i;
int num;
int min, max, min_index, max_index;
scanf("%d", &len);
for(i = 0; i < len; i++)
{
scanf("%d", &num);
}
min = num;
max = num;
min_index = 0;
max_index = 0;
for(i = 0; i < len; i++)
{
if(min > num)
{
min = num;
min_index = i;
}
if(max < num)
{
max = num;
max_index = i;
}
}
//最小值和第一个值互换
int t;
t = num;
num = num;
num = t;
max_index = min_index;
//最大值和最后一个互换
int k;
k = num;
num = num;
num = k;
for(i = 0; i < len; i++)
{
printf("%d", num);
}
printf("\n");
printf("%d %d\n", min_index, max_index);
printf("%d %d\n", num, num);
system("pause");
return 0;
} 人造人 发表于 2020-1-9 22:02
不行呀,还是有错>--< 最后的魁拔 发表于 2020-1-9 22:08
不行呀,还是有错>--
在说错之前,请先说明你期望的结果以及现在的结果
我不是你,我不知道你在想什么,所以需要你说出来
人造人 发表于 2020-1-9 22:10
在说错之前,请先说明你期望的结果以及现在的结果
我不是你,我不知道你在想什么,所以需要你说出来
6 输入
123 232 345 567 111 666 输入
输出 111232345567666123 。。。错的 最后的魁拔 发表于 2020-1-9 22:14
6 输入
123 232 345 567 111 666 输入
输入
6
123 232 345 567 111 666
输出
111232345567666123
对,输出的确是错的,那么正确的输出是什么样的呢?学会提问题
对,我再从上面走一次就可以走出正确结果
上面的过程比较短,我还愿意走一遍,如果过程很长呢?
你都走过一次了,把正确的结果也贴上来不好吗?
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int len, i;
int num;
int min, max, min_index, max_index;
scanf("%d", &len);
for(i = 0; i < len; i++)
{
scanf("%d", &num);
}
min = num;
max = num;
min_index = 0;
max_index = 0;
for(i = 0; i < len; i++)
{
if(min > num)
{
min = num;
min_index = i;
}
if(max < num)
{
max = num;
max_index = i;
}
}
//最小值和第一个值互换
int t;
t = num;
num = num;
num = t;
if(num == num)
max_index = min_index;
//最大值和最后一个互换
int k;
k = num;
num = num;
num = k;
for(i = 0; i < len; i++)
{
printf("%d", num);
}
printf("\n");
printf("%d %d\n", min_index, max_index);
printf("%d %d\n", num, num);
system("pause");
return 0;
} 另外,学会调试程序
本帖最后由 jackz007 于 2020-1-9 22:42 编辑
楼主试试这个代码呢?
#include <stdio.h>
void swap(int & a , int & b)
{
int e ;
e = a ;
a = b ;
b = e ;
}
main(void)
{
int k , n ;
scanf("%d" , & n) ;
int d ;
for(k = 0 ; k < n ; k ++) scanf("%d" , & d) ;
if(d > d) swap(d , d) ;
for(k = 1 ; k < n - 1 ; k ++) {
if(d < d) swap(d , d) ;
else if(d > d) swap(d , d);
}
printf("%d" , d) ;
for(k = 1 ; k < n ; k ++) printf(" %d" , d) ;
}
编译、运行实况:
C:\Bin>g++ -o x x.c
C:\Bin>x
5
8 2 5 1 4
1 4 5 2 8 人造人 发表于 2020-1-9 22:31
另外,学会调试程序
好的谢谢 jackz007 发表于 2020-1-9 22:41
楼主试试这个代码呢?
编译、运行实况:
他这个应该是C语言
C语言用gcc编译,后缀为 .c
g++编译C++代码
本帖最后由 jackz007 于 2020-1-9 22:56 编辑
人造人 发表于 2020-1-9 22:48
他这个应该是C语言
C语言用gcc编译,后缀为 .c
g++编译C++代码
是的,我总是用 g++ 编译 C 代码,请问,这样做有什么问题和不妥吗? jackz007 发表于 2020-1-9 22:53
是的,我总是用 g++ 编译 C 代码,请问,这样做有什么问题和不妥吗?
C++不是100%兼容C,有可能出问题
人造人 发表于 2020-1-9 22:59
C++不是100%兼容C,有可能出问题
谢谢提醒,迄今为止,我还没有遇到过任何的问题。
页:
[1]