C语言指针实现自定义函数求一维数组中的最大值和最小值

#include<stdio.h>
void main()
{void func(int a[],int *pmax,int *pmin);
int i,max,min,a[10];

printf("input string:\n");
for(i=1;i<=10;i++)
scanf("%d",&a[i]);
func(a, &max, &min);
printf("max=%d,min=%d\n",max,min);

}
void func(int a[],int *pmax,int *pmin)
{int i;

*pmax=a[0];
*pmin=a[0];
for(i=0;i<=10;i++)
{if(*pmax<a[i])
*pmax=a[i];
else if(*pmin>a[i])
*pmin=a[i];
}

} 我想问一下为什么这个程序只能出来最大值 最小值为什么是乱码...

import java.util.Scanner;

public class MaxMin{

public static void main(String[]args){

Scanner scan=new Scanner(System.in);

System.out.println("输入数组的长度:");

int count=scan.nextInt();

System.out.println("输出数组的"+count+"个数:");

int[]arr=new int[count];

for(int i=0;i&lt;arr.length;i++){

arr<i>=scan.nextInt();

}

System.out.println("输出数组:");

for(int i=0;i&lt;arr.length;i++){

System.out.print(arr<i>+"\t");

}

int max=Integer.MIN_VALUE;

int min=Integer.MAX_VALUE;

for(int i=0;i&lt;arr.length;i++){

if(arr<i>&gt;max){//求出最大值

max=arr<i>;

}

if(arr<i>&lt;min){//求出最小值

min=arr<i>;

}

}

System.out.println("\n最大值:"+max);

System.out.println("最小值:"+min);

}

}

扩展资料:

system函数用法:int system(char*command);

system函数已经被收录在标准c库中,可以直接调用

程序例:

#include&lt;stdlib.h&gt;

#include&lt;stdio.h&gt;

int main(void)

{

printf("About to spawn and run a DOS command\n");

system("dir");

return 0;

}

又如:system("pause")可以实现冻结屏幕,便于观察程序的执行结果;system("CLS")可以实现清屏操作。而调用color函数可以改变控制台的前景色和背景,具体参数在下面说明。

例如,用system("color 0A");其中color后面的0是背景色代号,A是前景色代号。各颜色代码如下:

0=黑色1=蓝色2=绿色3=湖蓝色4=红色5=紫色6=黄色7=白色8=灰色9=淡蓝色A=淡绿色B=淡浅绿色C=淡红色D=淡紫色E=淡黄色F=亮白色

(注意:Microsoft Visual C++6.0支持system)

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-01-08
全局变量方式
#include "stdio.h"
#define N 5
int max;//定义在所有函数之外的变量叫全局变量
//全局变量如果在一个函数改变,那么它的值也改变
//影响到其它函数的值,从而达到传值的效果
void find(int *a)
{
int i;
max=a[0];
for(i=0;i<N;i++)
{
if(max<*(a+i))
max=*(a+i);
}
}
void main()
{
int i;
int a[N];
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);
}
find(a);
printf("%d\n",max);
}
指针方式
#include "stdio.h"
#define N 5
int Max(int *a)
{
int max,i;
max=*a;
for(i=1;i<N;i++)
{
if(max<*(a+i));
max=*(a+i);
}
return max;
}
void main()
{
int a[N],max,i;
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);
}
max=Max(a);
printf("%d\n",max);
}
第2个回答  2011-12-13
数组下标越界了,具有10个元素的数组,其下标是从0到9的。
第一处:为数组赋值时
for(i=1;i<=10;i++)
scanf("%d",&a[i]);
应该为
for(i=0;i<=9;i++)
scanf("%d",&a[i]);
第二处:找出最大值、最小值时
for(i=0;i<=10;i++)
{if(*pmax<a[i])
*pmax=a[i];
else if(*pmin>a[i])
*pmin=a[i];
应该为
for(i=0;i<=9;i++)
{if(*pmax<a[i])
*pmax=a[i];
else if(*pmin>a[i])
*pmin=a[i];
第3个回答  2011-12-13
#include<stdio.h>
void main()
{
void func(int a[],int *pmax,int *pmin);
int i,max,min,a[10];
printf("input string:\n");
for(i=1;i<=10;i++)
scanf("%d",&a[i]);
func(a, &max, &min);
printf("max=%d,min=%d\n",max,min);

}
void func(int a[],int *pmax,int *pmin)
{int i;
*pmax=a[1];
*pmin=a[1];//这里都要改成1 你数组从1开始初始化的
for(i=1;i<=10;i++)
{if(*pmax<a[i])
*pmax=a[i];
else if(*pmin>a[i])
*pmin=a[i];
}

}
第4个回答  2011-12-13
#include<stdio.h>
void main()
{void func(int a[],int *pmax,int *pmin);
int i,max,min,a[10];

printf("input string:\n");
for(i=0;i<10;i++) //数组下标是0-9
scanf("%d",&a[i]);
func(a, &max, &min);
printf("max=%d,min=%d\n",max,min);

}
void func(int a[],int *pmax,int *pmin)
{int i;

*pmax=a[0];
*pmin=a[0];
for(i=0;i<10;i++) //数组下标是0-9
{if(*pmax<a[i])
*pmax=a[i];
else if(*pmin>a[i])
*pmin=a[i];
}

}