撰寫程式,用自定義函式對主函式中的陣列求最小值最大值,最小值與首元素對換,最大值與尾元素對換,并把最小值最大值分別保存在主函式的2個變數中。 #include <stdio.h>
void exchange(int *q,int n);
int main()
{
int a[5]={2,7,4,6,9};
int i;
exchange(a,5);
for(i=0;i<5;i++)
{ printf("%3d",a[i]);
}
return 0;
}
void exchange(int *q,int n)
{
int *max=q,*min=q,*k=q,temp;
for(;k<k+n;k++)
{ {if(*k>*max){max=k;};} {if(*k<*min){min=k;};}
}
temp=*q;
*q=*min;
*min=temp;
temp=*(q+n-1);
*(q+n-1)=*max;
*max=temp;
}
uj5u.com熱心網友回復:
求大佬看看指標出了什么問題uj5u.com熱心網友回復:
你的邏輯混亂,自己對比一下。void exchange(int *pArray,int nLen, int* pMax, int* pMix)
{
if (pArray == NULL || nLen <= 0) return;
int nMax,nMin;
nMax = nMin = 0;
for(int i=1; i<nLen; i++)
{
if (pArray[i] > pArray[nMax]) nMax = i;
else if (pArray[i] < pArray[nMin]) nMin = i;
}
if (pMax != NULL) *pMax = pArray[nMax];
if (pMix != NULL) *pMix = pArray[nMin];
if(nMin != 0)
{
pArray[0] = pArray[0] + pArray[nMin];
pArray[nMin] = pArray[0] - pArray[nMin];
pArray[0] = pArray[0] - pArray[nMin];
}
if (nMax != nLen-1)
{
pArray[nLen-1] = pArray[nLen-1] + pArray[nMax];
pArray[nMax] = pArray[nLen-1] - pArray[nMax];
pArray[nLen-1] = pArray[nLen-1] - pArray[nMax];
}
}
uj5u.com熱心網友回復:
void exchange(int *q,int n, int * nMin, int * nMax); // 需要多兩個引數來回傳最大和最小給主函式int main()
{
int nMax, int nMin;
int a[5]={2,7,4,6,9};
int i;
exchange(a,5, &nMin, &nMax);
for(i=0;i<5;i++)
{ printf("%3d",a[i]);
}
return 0;
}
void exchange(int *q,int n, int *nMin, int* nMax)
{
int k=1;
int iMax=0, iMin=0; // 表示最小和最大值在陣列中的下標,初始化為陣列第一個
if ( n<=0) return;
if ( n==1 ) { *nMax = *nMin = *p; return; }
// 找到最小和最大值所在的位置
for(; k<n; k++ ) {
if ( p[k]<p[iMin] ) iMin = k;
else if ( p[k]>p[iMax] iMax = k;
}
// 交換最小的
*nMin = p[iMin];
p[iMin] = p[0];
p[0 ]=*nMin;
// 交換最大的
*nMax = p[iMax];
p[iMax] = p[n-1];
p[n-1] = *nMax;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/117300.html
標籤:C++ 語言
上一篇:二叉樹的相關問題
下一篇:求 程式框圖和N-S流程圖
