当前位置:首页 » 编程语言 » c语言最大值交换
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言最大值交换

发布时间: 2023-01-14 18:46:35

c语言 最大值、最小值及其交换

n个数为n1,n2,n3...
流程伪代码
for(0:n)
{
if(max<n1)
{
max=n1;
temp++;
}
}
printf(max,temp);即可得到最大数和最大数的位置

最大最小排序,使用冒泡排序法即可得到。

❷ 关于C语言用指针来交换一个数组中最大值与最小值的问题。

max=&a[i];是把指针max指向数组最大值,没有改变数组

而*max=a[i];改变了数组,把max指针指向的值变为a[i]

在进行
t=*max;
*max=*min;
*min=t;
交换之前,数组的值已经发生了变化

❸ C语言数组将最小值与第一个数交换,最大值与最后一个数交换

不对,思路似乎有些乱。
第一个for循环,写出的功能是:只要遇到比a[0]小的值例如a[i],a[0]就会被替换,而a[i]则会被a[0]覆盖。那么试问,如果数组有多个数值比a[0]小,那么那些值统统都会被赋值为a[0]的值么?
例如:
5
4
3
2
1
你的代码在最小值替换那里已经变成了:
1
5
5
5
5
在最大值与最后一个数交换那里,用变量j记录最大值的位置,这个想法就蛮好的。
不过,第二for循环那里问题是,找到一个为什么就要把值换掉呢?
不是应该是查询完整个数组后,找到最大的是哪一个值,最后再进行替换。不是应该这样么?
主要问题是:不要一找到就进行替换。先找,整个数组找完后,既for循环结束后,再进行替换。

❹ c语言数组最大值与最小值交换

两个for循环里面的数组赋值把数组的数据搞得乱起八糟的,for里面为啥要赋值?第二,max和min最后永远等于n-1,if不用大括号根本作用不到max=i、min=i。如果只是简单的最大和最小值交互,非常的简单,循环一遍,直接记住最大和最小值所在下标,最后再做交换。两遍循环浪费时间。

❺ C语言最值交换的编程

这道题只要求把最小值和最大值交换到首尾,所以只要求最小值和最大值就可以了,不用排序。
#include
<stdio.h>
int
main()
{
int
n,
a[10];
int
i,
max
=
0,
min
=
0;
scanf("%d",
&n);
for(i
=
0;
i
<
n;
i++)
{
scanf("%d",
&a[i]);
if(a[max]
<
a[i])
max
=
i;
if(a[min]
>
a[i])
min
=
i;
}
i
=
a[0];
a[0]
=
a[min];
a[min]
=
i;
if(max
==
0)
max
=
min;
i
=
a[n
-
1];
a[n
-
1]
=
a[max];
a[max]
=
i;
for(i
=
0;
i
<
n;
i++)
printf("%d
",
a[i]);
return
0;
}

❻ 在c语言中如何将数组的最大值与最小值互换位置,求大神解答!!!

最简单的方法:先扫描一遍整个数组,记录最大值和最小值的下标,最后将这两个下标的值互换一下即可。

❼ 在c语言中如何将数组的最大值与最小值互换位置,求大神解答!!!

找到最大和最小值的下标,然后交换,例如:
#include <stdio.h>
main()
{
int a[10]={10,2,3,4,5,6,7,8,9,10},n=10;
int i1,i2,i;
i1=0;
for (i=0;i<n;i++)if (a[i]<a[i1]) i1=i;
i2=0;
for (i=0;i<n;i++)if (a[i]>a[i2]) i2=i;
i=a[i1]; a[i1]=a[i2];a[i2]=i;
for (i=0;i<n;i++) printf("%d ",a[i]);
return 0;
}

❽ C语言最大值最小值交换

#include<stdio.h>

intmain(void){
intarr[3][4];
intmax,min;/*记录最大值与最小值*/
intmini=0,minj=0,maxi=0,maxj=0;/*记录最大值与最小值的坐标*/
inti,j,temp;

printf("请输入矩阵内容(3行4列): ");
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf("%d",&arr[i][j]);

max=arr[0][0];
min=arr[0][0];
for(i=0;i<3;i++){
for(j=0;j<4;j++)
if(arr[i][j]>max){
maxi=i;
maxj=j;
}
if(arr[i][j]<min){
mini=i;
minj=j;
}
}

printf("原矩阵最小值为arr[%d][%d]=%d;最大值为arr[%d][%d]=%d。 ",mini,minj,arr[mini][minj],maxi,maxj,arr[maxi][maxj]);
temp=arr[mini][minj];/*交换最小值与最大值*/
arr[mini][minj]=arr[maxi][maxj];
arr[maxi][maxj]=temp;
printf("最小值与最大值交换后矩阵: ");
for(i=0;i<3;i++){
for(j=0;j<4;j++)
printf("%d ",arr[i][j]);
printf(" ");
}

return0;
}

运行结果

❾ c语言交换最大最小值,希望帮忙看看我的代码

题目只要求 把最小值交换到最前面,把最大值交换到最后面。而不是按大小对所有的数排队。
所以,你可以先找出最小值的数值和位子,交换最小值到a[0],把a[0]换到那个位子上。
然后,找出最大值的数值和位子,交换最大值到a[n-1],把a[n-1]换到那个位子上。
程序如下:
#include <stdio.h>
void myswap(int a[],int n);
int main()
{
int i,N;
int a[10],t,k;
printf("input: 5\n8 2 5 1 4\n");
scanf("%d",&N);
for (i=0;i<N;i++)scanf("%d",&a[i]);
myswap(a,N);
for (i=0;i<N;i++)printf("%d ",a[i]);
return 0;
}

void myswap(int a[],int n)
{
int min,max,i,j,k;
min=a[0];j=0;
for (i=0;i<n;i++) if (a[i]<min){min=a[i];j=i;}
min=a[0]; a[0]=a[j]; a[j]=min;
max=a[n-1]; k=n-1;
for (i=1;i<n-1;i++) if(a[i]>max){max=a[i];k=i;};
a[k]=a[n-1];a[n-1]=max;
}