编写函数void fun(int *x,int n)

功能是:求出长度为n的数组x中的最大数与次最大数,并把最大数和a[0]对调,次最大数与a[1]对调,其余的数保持不变。下面程序运行时若输入:2 4 6 1 3 9 7 0 5 8,则输出:9 8 6 1 3 2 7 0 5 4。

第1个回答  2010-11-30
#include <iostream>
using namespace std;
void fun(int *x, int n)
{
if (n <= 0)
return;
else if (n == 1)
{
cout << x[0] << endl;
return;
}
else if (n == 2)
{
if (x[0] < x[1])
cout << x[1] << " " << x[0] << endl;
return;
}
int max1 = x[0], max2 = x[0];
int t, j = 0, k = 0;
for (int i = 1; i < n; ++i)
{
if (x[i] > max1)
{
max2 = max1;
max1 = x[i];
k = j;
j = i;
}
}
t = x[1];
x[1] = x[k];
x[k] = t;
t = x[0];
x[0] = x[j];
x[j] = t;
for (int i = 0; i < n; ++i)
cout << x[i] << " ";
cout << endl;
}
void main()
{
int *array;
int len;
cout << "请输入数组的长度:(至少>=2,否则没效果)" << endl;
cin >> len;
array = new int[len];
cout << "请输入数组的各个元素:" << endl;
for (int i = 0; i < len; ++i)
cin >> array[i];
fun(array, len);
}
ps:数组长度可由用户来输入确定。
第2个回答  2010-11-30
#include <stdio.h>
void fun(int *x,int n)
{
int i,j,k;
for(i=0;i<n;i++)
for(j=0;j<(n-1-i);j++)
if(*(x+j)>*(x+j+1))
{
k=*(x+j);
*(x+j)=*(x+j+1);
*(x+j+1)=k;
}
for(i=0;i<2;i++)
{
k=*(x+n-1-i);
*(x+n-1-i)=*(x+i);
*(x+i)=k;
}

}
void main()
{
int i, a[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
fun(a,10);
for(i=0;i<10;i++)
printf("%3d",a[i]);
}
希望能帮助你!
第3个回答  2010-11-30
#include <iostream>
using namespace std;

void fun( int *x, int n )
{
int nloop;
int nTmp, nMax = *x, nMaxIndex, nTMax = *x, nTMaxIndex;
for( nloop = 1; nloop < n; nloop++ )
{
if( nMax < *( x + nloop ) )
{
nMaxIndex = nloop;
nMax = *( x + nloop );
}
//if( nTMax >= nMax ) nTMax = *( x + nloop );
if( ( nTMax < *( x + nloop ) ) && ( nMax > *( x + nloop ) ) )
{
nTMaxIndex = nloop;
nTMax = *( x + nloop );
}
}

nTmp = *x;
*x = nMax;
*( x + nMaxIndex ) = nTmp;

nTmp = *( x + 1 );
*( x + 1 ) = nTMax;
*( x + nTMaxIndex ) = nTmp;
}

void main( void )
{
int nloop;
int nSort[] = { 2, 4, 6, 1, 3, 9, 7, 0, 5, 8 };

fun( nSort, 10 );

for( nloop = 0; nloop < 10; nloop++ )
{
cout << nSort[ nloop ] << ", ";
}

cout << endl;

cin.get();

}本回答被网友采纳

编写函数voidfun(int*x,intn),功能是:求出长度为n的数组x中的最大数...
void fun(int *x,int n){ int max=*x; \/*定义个最大*\/ int index1,index2;\/*最大和次最大索引号*\/ int a; \/*交换时空间*\/ int max2; \/*次大*\/ for(i=1;i<=n;i++)if(max<(*(x+i))) \/*从第一个开始往后比较,最终max存着最大值*\/ max=*(x+i);for(i=0...

C程问题,看看我写的fun函数有什么不足的地方啊?
你这程序很“神奇”,设了宏定义N为10,然后fun有个参数n,却在fun函数体里面用直接用10。fun可以如下实现:void fun(int *x, int n){ int i, j, t; for(i=j=0; i<n; i++) { for(t=x[i]; t; t\/=10) \/\/分离各个位 if(t%10 == 6)break; if(!t...

编写函数int fun(int *x,int n,float *w)
int fun(int *x,int n,float *w){ int i,j;float sum;for(i=0;i<n\/5;i++){ sum=0;for(j=0;j<4;j++){ sum+=x[j];w=(float)sum\/5;w++;} } } 差不多就这样了

编写函数fun(int *w, int p, int n
void fun(int *w, int p, int n){ int i;int move = n-1-p;if(move==0) return;for(i=p;i>=0;i--){ (w+i+move)=*(w+i);} return;}

C语言程序设计,填空,编写fun函数,求能整除型参x且不是偶数的各整数,并...
void fun(int x,int *a,int *n){ int i,count=0;for(i=1;i<=x;i++){ if(x%i==0&&i%2!=0)a[count++]=i;} n=count;} int main(){ int x,a[1000],n,i;printf("please enter an integer number:\\n");scanf("%d",&x);fun(x,a,&n);for(i=0;i<n;i++)printf(...

求教C语言 大佬 void fun(int a[],int n) 这段代码啥意思?
void fun(int a[],int n)这是一个函数的头部,函数名是fun,这个函数没有返回值(void),需要一个数组参数(int a[])和一个整数参数(int n)。

编写函数fun(int *a,int n,int *odd,int *even),函数功能分别求出数组...
void fun ( int *a, int n, int *odd, int *even ){ int i; int tmp; *odd = *even = 0; for(i = 0;i< n;i++) { tmp = *(a+i); if( tmp % 2) *odd = *odd + tmp; else *even = *even + tmp; }} ...

c语言 请编写函数fun
void fun(int *a,int *n){ int i,j=0;for(i=2;i<100;i++)if((i%7==0||i%11==0)&&i%77!=0)\/\/应该改为&&,&是二进制的与操作 a[j++]=i;n=j;} void main(){ int a[50];int n;fun(a,&n);for (int i=0;i!=n;++i){ if (i%5==0&&i!=0){ printf("\\n...

急求!!!全国计算机等级考试二级C机考题库 附答案的最好 !急!!!_百度...
void fun(int *a, int *n){int i,j=0;for(i=2;i<1000;i++)if ((i%7==0 || i%11==0) && i%77!=0)a[j++]=i;*n=j;}3: 第3题 请编写函数void fun(int x,int pp[],int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个...

void Func(int *x,int *y) {*x^=*y; *y^=*x; *x^=*y; } 这个函数的功能...
x = t;x = y;y = t;} 我们可以通过三次异或运算完成变量的交换,而不使用中间变量,即:x = x xor y;y = y xor x;x = x xor y;xor运算满足交换律和结合律,上面的步骤可写为下面的等式 y' = y xor (x xor y) = y xor y xor x = 0 xor x = x x' = (x xor y...

相似回答