C语言 输入10个整数存入一维数组,将其中的最大值与最后一个数交换,最小数与第1个数交换

这是我的代码#include<stdio.h>intmain(){inta[10];inti,t,max,min;for(i=0;i<10;i++)scanf("%d",... 这是我的代码
#include<stdio.h>
int main()
{
int a[10];
int i, t, max, min;
for (i = 0; i < 10; i++)
scanf("%d", &a[i]);
min = max =0;

for (i = 0; i < 10; i++)
{
if (a[i] > max)
{
max = i;
}
if (a[i] < min)
{
min = i;
}
}
t = a[min];
a[min] = a[max];
a[max] = t;
for (i = 0; i < 10; i++)
printf("%d\t", a[i]);
return 0;
}

输入
10 8 34 45 67 78 42 43 89 3

输出的是
89 8 34 45 67 78 42 43 10 3 我的答案
而要求却是
3 8 34 45 67 78 42 43 10 89
展开
 我来答
xuzhouliuying
高粉答主

推荐于2017-12-26 · 繁杂信息太多,你要学会辨别
知道顶级答主
回答量:5.4万
采纳率:86%
帮助的人:2.4亿
展开全部
逻辑非常混乱。

1、按你程序的意思,max、min应该是下标吧。但是又有if (a[i] > max)、if (a[i] < min)这样的语句,直接拿下标和数组元素比较大小?
2、t = a[min];a[min] = a[max];a[max] = t;的作用是将最大值和最小值互换,而不是题目要求的最大值与最后一个数交换,最小数与第1个数交换。
荀瑰7i
2017-12-26
知道答主
回答量:1
采纳率:0%
帮助的人:892
展开全部
#include<stdio.h>
void cc(int a[])
{
int max, min, t, MAX, MIN, i, k;
max = a[0]; min = a[0]; MAX = 0; MIN = 0;
for (i = 1; i < 10; i++)
{
if (a[i] > max)
max = a[i], MAX = i;
if (a[i] < min)
min = a[i], MIN = i;
}
if (MAX == 0 && MIN == 9)
t = a[0], a[0] = a[9], a[9] = t;
else
{
t = a[0]; a[0] = a[MIN]; a[MIN] = t;
t = a[9]; a[9] = a[MAX]; a[MAX] = t;
}
}
int main(void)
{
int a[10], i;
for (i = 0; i < 10; i++)
scanf("%d", &a[i]);
cc(a);
for (i = 0; i < 10; i++)
printf("%d ", a[i]);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式