❶ 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;
}