改成
*P1max = str[0];
*P1min = str[0];
你题目的解答代码如下:
#include <stdio.h>
void maxandmin(int a[],int *Plmax,int *Plmin,int n) {
*Plmax = a[0];
*Plmin = a[0];
int *p = a;
for (int i = 1; i < n; i++){
if (*Plmax<*(p+i))
*Plmax = *(p+i);
if (*Plmin>*(p+i))
*Plmin = *(p+i);
}
}
void main() {
int i,max,min;
int a[10];
for(i=0; i<10; i++)
{
scanf("%d",&a[i]);
}
maxandmin(a,&max,&min,10);
printf("max=%d\n", max);
printf("min=%d\n", min);
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
数组是int类型的,在maxandmin函数中,for循环的 *(p+i) != '\0'没什么用啊
而且,你的参数n和m也没有用到。代码修改如下:
#include <stdio.h>
void maxanmin(int str[],int *pmax,int* pmin,int n)
{
int i;
int *p=str;
*pmax = p[0];
*pmin = p[0];
for (i=1;i<n;i++)
{
if( *(p+i) > *pmax)
*pmax = *(p+i);
if( *(p+i) < *pmin)
*pmin = *(p+i);
}
}
int main()
{
int a[100],i,max,min;
for (i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
maxanmin(a,&max,&min,10);
printf("max=%d\n",max);
printf("min=%d\n",min);
return 0;
}
p又不是char*,你怎么能用!='\0'判断int数组结束呢?
你要么把数组大小传递进去,要么函数内for循环结束条件改成i<10
然后最大最小值也不能默认为NULL,应该默认等于str[0]