#includestdio.h
公司主营业务:网站设计制作、成都网站设计、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联推出裕民免费做网站回馈大家。
#define N 5 //输入数据量
int Find_Max(const arr[], int n);
int main(void)
{
int i;
int arr[N];
printf("请输入一组数据\n");
for(i = 0; i N; i++)
{
scanf("%d",arr[i]);
}
printf("max = %d\n", Find_Max(arr, N));
return 0;
}
int Find_Max(const arr[] , int n)
{
int i;
int max;
max = arr[0];
for(i = 1; i n; i++)
{
if(max arr[i])
max = arr[i];
}
return max;
}
//随手写的,算法可能不是最佳
#include stdio.h
#include stdlib.h
#include "string.h"
int* num;
char s[100]={"\0"};
void get_max(int len)
{
int max=num[0];
int i;
for(i=1;ilen;i++)
{
if(maxnum[i])
{
max=num[i];
}
}
printf("\n最大数为:%d",max);
}
void char2num()
{
int n=0;
char c[10]={"\0"};
int i;
int j=0;
s[strlen(s)]=',';
for(i=0;istrlen(s);i++)
{
if(s[i]==',')
{
n++;
}
}
num=(int*)malloc(sizeof(int)*n); //动态定义int数组
int n_pos=0;
for(i=0;istrlen(s);i++)
{
if(s[i]==' ')
{
continue;
}
if(s[i]!=',')
{
c[j++]=s[i];
}
else
{
num[n_pos++]=atoi(c);
j=0;
memset(c,'\0',10);
continue;
}
}
get_max(n_pos); //寻找最大数
}
int main(int argc, char *argv[]) {
printf("请输入n个数(用逗号分隔):");
scanf("%s",s); //初始输入的数据接收为字符数组
char2num(); //把字符数组转化为int数组
return 0;
}
第一个错误for(i=1;i=n;i++) scanf("%d",b[i]); C语言的下标是从0到n-1的,这里错了 应该是
for(i=0;in;i++) scanf("%d",b[i]);
第二个错误
int A(int a,int b[])
这个函数你想实现什么功能?嵌套返回最大值吗?
如果不是有要求必须采用嵌套 建议这样做
int A(int a,int b[]) //输入a: 数组容量;输入b:数组序列
{
int j, max_pos = 0;
MAX = b[0];
for(j = 1; j a; j ++)
if(b[j] MAX) MAX= b[j], max_pos = j;
return max_pos;
}
如果一定要嵌套的话 可以这样做
int A(int a, int b[])//输入a: 数组容量;输入b:数组序列
{
int max_pos;
if(a == 1) {MAX = b[0]; return 0;}
max_pos = A(a - 1, b);
if(MAX b[a - 1]) {MAX = b[a - 1]; max_pos = a - 1;}
return max_pos;
}
最后一个问题是打印
由于是通过全局变量传递max值 所以要这样做
i = A(n, b);
printf("%d %d",i,MAX);
不然会出现打印max的时候 A(n,b)还没有执行的情况
#include "stdio.h"
int findmax(int x[],int m)
{if(m==1)return x[0];
else if(m1)
return x[m-1]findmax(x,m-1)?x[m-1]:findmax(x,m-1);
else return 0;
}
main()
{int x[8]={75,34,26,78,100,98,24,19};
int n;
printf("input the 'n':\n");
scanf("%d",n);
printf("%d\n",findmax(x,n));
}
功能说明:返回数组中前n个数中的最大值,findmax使用了递归调用方式
#includestdio.h
int max(int n)
{int i,x,f;
scanf("%d",f);
for(i=1;in;i++)
{scanf("%d",x);
if(xf)f=x;
}
return f;
}
int main()
{int n;
printf("有几个数:");
scanf("%d",n);
printf("其中最大的数是:%d\n",max(n));
return 0;
}
#includestdio.h
int min;
int maxmin(int n)
{int i,x,f;
scanf("%d",f);
min=f;
for(i=1;in;i++)
{scanf("%d",x);
if(xf)f=x;
else if(xmin)min=x;
}
return f;
}
int main()
{int n,mm;
printf("有几个数:");
scanf("%d",n);
mm=maxmin(n);
printf("其中最大的数是:%d\n最小的数是:%d\n",mm,min);
return 0;
}
思路:首先设置最大最小的值都是数组第一个数,然后遍历数组,出现比当前最大值大的,修改最大值为这个数。出现比最小值小的,修改最小值为这个数。
代码
#include stdio.h
//为了方便返回,使用结构体存储最大值和最小值
typedef struct {
int Max;
int Min;
}MaxMin;
//函数参数array:数组,length:数组长度。
//这里其实可以把最大值最小值作为指针传进去的。
MaxMin GetMaxMin(int *array, int length)
{
int i;
MaxMin maxMin;
if (length = 0)
return maxMin;
//初始化最大值和最小值为数组第一个数
maxMin.Max = array[0];
maxMin.Min = array[0];
for (i = 0; i length; i++) {
if (array[i] = maxMin.Max)
maxMin.Max = array[i]; //比当前最大值大,修改最大值
if (array[i] = maxMin.Min)
maxMin.Min = array[i]; //比当前最小值小,修改最小值
}
return maxMin;
}
//主函数测试
int main() {
int length;
int i;
int *array;
printf("input length of array:");
scanf("%d", length);
array = (int *)malloc(sizeof(int)*length);
for (i = 0; i length; i++) {
printf("input data of array(index %d):", i + 1);
scanf("%d", array + i);
}
MaxMin maxMin = GetMaxMin(array, length);
printf("Max:%d,Min:%d", maxMin.Max, maxMin.Min);
return 0;
}
3. 运行结果