萌新求大佬帮助

Eldeidge 2018-03-17 09:03:17
描述

有一个长度为n的整数序列。请写一个程序,把序列中的最小值与第一个数交换,最大值与最后一个数交换。输出转换好的序列。

输入

输入包括两行。

第一行为正整数n(1≤n≤10)。
第二行为n个整数组成的序列。



输出

输出转换好的序列。数据之间用空格隔开。

样例输入
5
2 1 5 4 3

样例输出

1 2 3 4 5
在下的代码
#include <stdio.h>
int main()
{
int n,a,b,c,d,e,f,min,max,i;
int str[11];
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
{
scanf("%d",&str[i]);
}
max=str[0];
min=str[0];
for(i=0;i<n;i++)
{
if(str[i]<min)
{
min=str[i];
a=i;
}
if(str[i]>max)
{
max=str[i];
b=i;
}
}
c=str[0];
d=str[n-1];
str[0]=min;
str[n-1]=max;
str[a]=c;
str[b]=d;
for(i=0;i<n;i++)
{
if(i==n-1)
printf("%d",str[i]);
else
printf("%d ",str[i]);
}
printf("\n");
}
return 0;
}
请问大佬哪错了
...全文
1055 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2018-04-04
  • 打赏
  • 举报
回复
好多坑!
Eldeidge 2018-04-03
  • 打赏
  • 举报
回复
引用 10 楼 yu6daddy的回复:
第一个错误是 定义数组不能 int n,array[n];
不对呀大佬,在下没这么写啊
Eldeidge 2018-04-03
  • 打赏
  • 举报
回复
引用 10 楼 yu6daddy的回复:
第一个错误是 定义数组不能 int n,array[n];
大佬是说不用int而用array?我发现我的代码和别人的不一样在于她们输入相同的数时都会排列过去,而我只换了4个数的位置
Eldeidge 2018-04-03
  • 打赏
  • 举报
回复
引用 8 楼 yu6daddy的回复:
上面的人们 我都不忍吐槽了 “不会就学啊”这句话最没营养了 要是都会谁还问你啊 呵呵 不用指针就不能做了?? c语言的指针是c语言最渣的一部分 于是后来做了java 摒弃了指针这些东西 所以具体的我来教楼主 先吐个槽。
你是一个亲切的大佬
jhams 2018-04-03
  • 打赏
  • 举报
回复
引用 8 楼 yu6daddy 的回复:
上面的人们 我都不忍吐槽了 “不会就学啊”这句话最没营养了 要是都会谁还问你啊 呵呵 不用指针就不能做了?? c语言的指针是c语言最渣的一部分 于是后来做了java 摒弃了指针这些东西 所以具体的我来教楼主 先吐个槽。
用c语言很难绕开指针,不喜欢可以去搞别的语言没问题
y6d 2018-04-01
  • 打赏
  • 举报
回复
第一个错误是 定义数组不能 int n,array[n];
赵4老师 2018-03-19
  • 打赏
  • 举报
回复
5 3 2 1 3 1
赵4老师 2018-03-19
  • 打赏
  • 举报
回复
好多坑!
Eldeidge 2018-03-19
  • 打赏
  • 举报
回复
引用 5 楼 赵4老师的回复:
好多坑!
我也发现好多坑,一样的数字好像也要排过去
自信男孩 2018-03-17
  • 打赏
  • 举报
回复
引用 3 楼 Eldeidge 的回复:
[quote=引用 2 楼 自信男孩的回复:]
#include <stdio.h>

void find_keys(int *arr, int len, int *max, int *min);
void swap(int *a, int *b);

int main(void)
{

	int num_list[10];
	int i, n, max, min;
	while (scanf("%d", &n) != EOF) {
		if (n > 10 || n < 0) {
			printf("n is invalid!\n");
			continue;
		}
		for(i = 0; i < n; i++)
			scanf("%d", &num_list[i]);
		find_keys(num_list, n, &max, &min);
		//printf("Max = %d, min = %d\n", max, min);

		swap(&num_list[0], &num_list[min]);
		swap(&num_list[n-1], &num_list[max]);
		
		for(i = 0; i < n; i++)
			printf("%d ", num_list[i]);
		putchar(10);
	}
	return 0;
}

void find_keys(int *arr, int len, int *max, int *min)
{
	int i;

	*max = *min = 0;
	for (i = 1; i < len; i++) {
		if (arr[*max] < arr[i])
			*max = i;
		if (arr[*min] > arr[i])
			*min = i;
	}
}

void swap(int *a, int *b)
{
	int c;
	c  = *a;
	*a = *b;
	*b = c;
}
参考一下吧 首先先找到最大值和最小值的位置,即对应的数组的下表;然后就是交换;
大佬,在下不会指针[/quote] 不会不能学吗?学习C语言不学好指针有啥用? 不要害怕,只要用C语言编程,总要跟指针打交道的,避免不了。
Eldeidge 2018-03-17
  • 打赏
  • 举报
回复
引用 2 楼 自信男孩的回复:
#include <stdio.h>

void find_keys(int *arr, int len, int *max, int *min);
void swap(int *a, int *b);

int main(void)
{

	int num_list[10];
	int i, n, max, min;
	while (scanf("%d", &n) != EOF) {
		if (n > 10 || n < 0) {
			printf("n is invalid!\n");
			continue;
		}
		for(i = 0; i < n; i++)
			scanf("%d", &num_list[i]);
		find_keys(num_list, n, &max, &min);
		//printf("Max = %d, min = %d\n", max, min);

		swap(&num_list[0], &num_list[min]);
		swap(&num_list[n-1], &num_list[max]);
		
		for(i = 0; i < n; i++)
			printf("%d ", num_list[i]);
		putchar(10);
	}
	return 0;
}

void find_keys(int *arr, int len, int *max, int *min)
{
	int i;

	*max = *min = 0;
	for (i = 1; i < len; i++) {
		if (arr[*max] < arr[i])
			*max = i;
		if (arr[*min] > arr[i])
			*min = i;
	}
}

void swap(int *a, int *b)
{
	int c;
	c  = *a;
	*a = *b;
	*b = c;
}
参考一下吧 首先先找到最大值和最小值的位置,即对应的数组的下表;然后就是交换;
大佬,在下不会指针
自信男孩 2018-03-17
  • 打赏
  • 举报
回复
#include <stdio.h>

void find_keys(int *arr, int len, int *max, int *min);
void swap(int *a, int *b);

int main(void)
{

	int num_list[10];
	int i, n, max, min;
	while (scanf("%d", &n) != EOF) {
		if (n > 10 || n < 0) {
			printf("n is invalid!\n");
			continue;
		}
		for(i = 0; i < n; i++)
			scanf("%d", &num_list[i]);
		find_keys(num_list, n, &max, &min);
		//printf("Max = %d, min = %d\n", max, min);

		swap(&num_list[0], &num_list[min]);
		swap(&num_list[n-1], &num_list[max]);
		
		for(i = 0; i < n; i++)
			printf("%d ", num_list[i]);
		putchar(10);
	}
	return 0;
}

void find_keys(int *arr, int len, int *max, int *min)
{
	int i;

	*max = *min = 0;
	for (i = 1; i < len; i++) {
		if (arr[*max] < arr[i])
			*max = i;
		if (arr[*min] > arr[i])
			*min = i;
	}
}

void swap(int *a, int *b)
{
	int c;
	c  = *a;
	*a = *b;
	*b = c;
}
参考一下吧 首先先找到最大值和最小值的位置,即对应的数组的下表;然后就是交换;
Eldeidge 2018-03-17
  • 打赏
  • 举报
回复
在下提交一直wrong

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧