gpt4 book ai didi

c - 交换C中最大和最小的数

转载 作者:行者123 更新时间:2023-11-30 15:02:14 25 4
gpt4 key购买 nike

我想编写一个程序,从用户那里读取 10 个 int 值,并交换第一个和第二个值上的最大和最小数字,然后其余数字应该按顺序排列。

请检查代码并帮助我解决问题。

例如:

1
9
4
5
6
7
8
2
4
5

新顺序应为9 1 4 5 6 7 8 2 4 5

    #include <stdio.h>

int main() {

int a[10],i,min,max=0,pos=0;

printf("Please enter 10 int values :\n");
do{
scanf("%d", &a[pos++]);
} while (pos<10);

for (i=0; i<10;i++) {
printf("%i\n",a[i]);

if (max<a[i])
{
max=a[i];
}

if (min>a[i])

{
min=a[i];
}

for (i=0;i<10;i++) {

if (a[i]==max)
a[i]=max;

if (a[i] == min) a[i] = min;

}

printf("The new order is : %d %d %d ", max, min, ...);

return 0;
}

编辑:

It is the new form

#include <stdio.h>

int main() {

int a[10],i,pos,temp,min = 0,max = 0;

printf("Please enter 10 int values :\n");

do {

scanf("%d", &a[pos++]);

} while (pos < 10);

for ( =1; i<10;i++) {

if (a[i]>a[max])
{
max=i;
}

if (a[i]<a[min])
{
min=i;
}
}

temp=a[max];

a[max]=a[min];

a[min]=temp;

printf("%d %d",a[max],a[min]);

for (i=0;i<10;i++){

if ((i != min) && (i != max)) {

printf("%d ", a[i]);
}

}

printf("\n");

return 0;
}

最佳答案

正如其他人所指出的,您的代码无法正确识别数组中的最大值和最小值,因为您将 minmax 写回数组而不是反过来说。

由于您想要交换这些值,因此您实际需要的是数组的最小值和最大值的索引,然后交换它们。

最好将此代码分解为函数,而不是将所有内容都放在 main 中。这是一个可以满足您要求的解决方案:

#include <stdio.h>

int indexofmax(int *data, int len)
{
int max = 0;
int i;
for(i = 0; i < len; i++)
{
if(data[i]>data[max]) max = i;
}
return max;
}


int indexofmin(int *data, int len)
{
int min = 0;
int i;
for(i = 0; i < len; i++)
{
if(data[i]<data[min]) min = i;
}
return min;
}

void swap(int *a, int *b)
{
int temp = *a;
*a = *b;
*b = temp;
}

int main()
{
// user enters in 10 ints...
int max = indexofmax(a, 10);
int min = indexofmin(a, 10);
int i;
swap(&a[min], &a[max]);
for(i = 0; i < 10; i++)
{
printf("%d ", a[i]);
}
return 0;
}

关于c - 交换C中最大和最小的数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41127692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com