为什么我的这个程序的CL函数不能实现形参共享实参而达到改变实参的目的??

来源:百度知道 编辑:UC知道 时间:2024/06/15 13:15:21
程序如下:

#include<stdio.h>
int sr(int *p,int k)
{
scanf("%d",&p[k]);
return p[k];
}
void cl(int *p)
{
int i,temp1,temp2,min,max,k;
min=max=p[0];
for(i=0;i<10;i++)
if(min>=*(p+i))
min=p[i];
temp1=min;
min=*(p+0);
*(p+0)=temp1;
temp2=max;
max=p[9];
p[9]=temp2;
printf("%d%d",min,max);
}
void sc(int *p)
{
int i;
for(i=0;i<10;i++)
printf("%4d",p[i]);
}
void main()
{
int number[10],i=0;
do{
number[i]=sr(number,i);
i++;
}while(i!=10);
cl(number);
sc(number);
}
掉了一句话 在cl()幻术里面的内容是这样
void cl(int *p)
{
int i,temp1,temp2,min,max,k;
min=max=p[0];
for(i=0;i<10;i++)
if(min>=*(p+i))
min=p[i];
if(max<=*(p+i))
max=p[i];
temp1=min;
min=*(p+0);
*(p+0)=temp

#include<stdio.h>
int sr(int *p,int k)
{
scanf("%d",&p[k]);
return p[k];
}
void cl(int *p)
{
int i,min,max,pmin,pmax,temp;
min=max=p[0];
for(i=0;i<10;i++)
{
if(min>=*(p+i))
{
min=p[i];
pmin=i;
}
if(max<=*(p+i))
{
max=p[i];
pmax=i;
}
}
temp=*(p+0);
*(p+0)=min;
*(p+pmin)=temp;
temp=*(p+9);
*(p+9)=max;
*(p+pmax)=temp;
}
void sc(int *p)
{
int i;
for(i=0;i<10;i++)
printf("%4d",p[i]);
}
void main()
{
int number[10],i=0;
do{
number[i]=sr(number,i);
i++;
}while(i!=10);
cl(number);
sc(number);
printf("\n");
}
我按你的要求调试好了,运行结果:
输入:12 13 11 10 9 15 17 18 14 16
输出:9 13 11 10 12 15 17 16 14 18