刚学C语言,一个关于指针的程序问题,求大神帮看看 谢谢!!!!

2024-12-01 14:59:31
推荐回答(4个)
回答1:

用//注释并且修改:

#include
int main()
{
 int maxn,minn,num[6],i;      //这儿*maxn,*minn
 printf("Please type in 6 whole numbers: ");
 for(i=0;i<6;i++)
  scanf("%d",&num[i]);
 int findex(int *minnum,int *maxnum,int num[6]);//这儿加句函数声明
 findex(&minn,&maxn,num);//这儿num[6]

 printf("The max is %d \nThe min is %d",minn,maxn);

 return 0;
}

int findex(int *minnum,int *maxnum,int num[6])
{
 int i;
 *maxnum = num[0];
 *minnum = num[0];

 //for(i=1;i<6;i++)
  //if(num[i]>num[i-1])
  //{*maxnum = num[i];
 //*minnum = num[i-1];
 //}
 for(i=1;i<6;i++)
 {
    if(*maxnum     *maxnum=num[i];
    if(*minnum>num[i])
     *minnum=num[i];
 }
 return 0;
}

结果:

回答2:

没看你的算法对不对,不过int *maxn,*minn,num[6],i; 这里你定义的就是指针啊。是不是应该写成int maxn,minn,num[6],i;。还有findex(&minn,&maxn,num[6]); 这个应该是 findex(&minn,&maxn,num); 这样吧。

回答3:

在main函数里,指针maxn,minn都没有初始化啊。他们是一个随机的值被传替到子函数里。其实没必要定义2个指针,一个就够了。

回答4:

很明显这个算法不对。findex(int *minnum,int *maxnum,int num[6])函数中传递的参数中第三个应该是个数组,num[6]这貌似是一个具体的整数值,所以应该改为 int num[]表示一个数组。后面在加一个参数,int n,用来表示数组的长度。还有你的输出有问题printf("The max is %d \nThe min is %d",minn,maxn);输出的是地址,前面应该加上* !