看一道C语言的题 谢谢帮助

2.输入8个数字放入一堆数组W中,输出交换前数组;找出其中最小的和最大的数,并将它们分别与数组中的第一个元素和最后一个元素交换位置;输出交换后数组.
请写出具体的编程

对数据空间和比较次数有要求吗?
如果没有要求你可以设两个常量MAX和MIN用于保留最大和最小值,然后八次循环输出八个数再把八个数输入
其它的就很easy啦
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-02-21
for(i=0; i<8; i++){
printf("Enter number > ");
scanf("%d", &w[i]);
}

da = xiao = w[0];
for(i=1; i<8; i++){
if(w[i] > da)
da = w[i];
if(w[i] < xiao)
xiao = w[i];
}

temp = w[0];
w[0] = da;
for(i=1; i<8; i++){
if(da = w[i])
w[i] = temp;
}
temp = w[7];
w[7] = xiao;
for(i=0; i<7; i++){
if(xiao = w[i])
w[i] = temp;
}
第2个回答  2008-02-21
#include <stdio.h>
#define MAX(A,B) ((A)>(B)?(A):(B))
#define MIN(A,B) ((A)<(B)?(A):(B))

int mian(void)
{

int i,tmp,max,min;
int a[8];

printf("Please input 8 numbers:\n");
for(i=0;i<8;i++)
scanf("%d",a[i]);

/* output numbers before exchange */
printf("before exchange:\n");
for(i=0;i<8;i++)
printf("%3d",a[i]);

/* find max and min number */
tmp=a[0];
for(i=1;i<8;i++){
if(MAX(a[i],tmp))
max=a[i];
else if(MIN(a[i],tmp))
min=a[i];
}

printf("max:\tmin:\t\n",max,min);

/* exchange */
tmp=a[0];
a[0]=a[7];
a[7]=tmp;

/* output numbers after exchange */
printf("after exchange:\n");
for(i=0;i<8;i++)
printf("%3d",a[i]);

return 0;
}

英语不好,所以说明性的文字写得很简单。
第3个回答  2008-03-05
可以很好的实现题目中的要求
#include <stdio.h>

void main(void)
{
int num[8] ;
int min; //用于存放数组中的最小值
int max; //用来存放数组中的最大值
int x; //用于存放最小值对应的下标
int y; //用于存放最大值对应的下标
int i ; //用于循环

printf("请输入八个整数 ");

for(i=0;i<8;i++)
scanf("%d", num[i]);

min=num[0];
max=num[0];

for(i=1;i<8;i++)
{
if(num[i] < min)
{
min = num[i] ;
x = i ;
}

else if (num[i] >= max )
{
max = num[i] ;
y = i;
}

} //本循环执行完之后,min中存放的是数组的最小值,max中存放的是数组的最大值

num[x] = num[0] ;
num[0] = min ;

num[y] = num[7];
num[7] = max ;

printf("修改后数字排列为:");

for(i=0;i<8;i++)
{
printf("%3d",num[i]);
printf(" ");
}
printf("\n");
}
相似回答
大家正在搜