Ⅰ 在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語言 查找一個一維數組中最大值和最小值的位置,並交換最大值和最
1、打開visual studio,創建一個控制台應用程序,在Main方法中,定義一個整型數組,用於演示數組的最大值、最小值,以及交換他們的位置。
Ⅲ 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語言 交換最小值和最大值 幫忙看看我哪錯了
找最小值和最大值都是單層循環,雙層循環是錯誤的。你這個整個演算法有問題。正確的如下圖所示:
Ⅳ 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語言,12個數,找出最大值最小值,互換位置
修改如下:
1、#include "stdio.h"下加上函數原型,即 void hanshu(int b[]);
2、函數中兩個for循環 i <12 改為 i <11,否則b[i+1]越界
沒有運行過,如果還有問題請追問
Ⅶ 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;
}
Ⅷ C語言編程:找出一個數列中的最大值和最小值,然後將最大值和最小值位置交換
#include <stdio.h>
void main()
{
int a[10],i;
printf("Please enter the ten number:\n"); /*我這里先簡單設為十個數*/
for(i=0;i<10;i++)
scanf("%d",&a[i]);
int max=a[0],min=a[0];
for(i=1;i<10;i++)
{
if(max<a[i])
max=a[i];
}
for(i=1;i<10;i++)
{
if(min>a[i])
min=a[i];
}
int h;
h=max;
max=min;
min=h;
}
Ⅸ c語言數組最大值與最小值交換
兩個for循環裡面的數組賦值把數組的數據搞得亂起八糟的,for裡面為啥要賦值?第二,max和min最後永遠等於n-1,if不用大括弧根本作用不到max=i、min=i。如果只是簡單的最大和最小值交互,非常的簡單,循環一遍,直接記住最大和最小值所在下標,最後再做交換。兩遍循環浪費時間。