求解:分别编写求数组a中最大值max(int a[],int n)和最小值min(int a[],int n)的函数,其中n是数组a的大小

分别调用max()和min()函数求出a中的最大值和最小值,并返回给main()函数输出。

int max(int a[], int n)
{
   int tmp = a[0];
   for (int i = 0; i!=n; ++i)
       if (tmp < a[i])
           tmp = a[i];
   return tmp;
}
int min(int a[], int n)
{
   int tmp = a[0];
   for (int i = 0; i!=n; ++i)
       if (tmp > a[i])
           tmp = a[i];
   return tmp;
}


整个程序:

#include <stdio.h>
#include<stdlib.h>
int max(int a[], int n)
{
    int tmp = a[0];
    for (int i = 0; i!=n; ++i)
        if (tmp < a[i])
            tmp = a[i];
    return tmp;
}
int min(int a[], int n)
{
    int tmp = a[0];
    for (int i = 0; i!=n; ++i)
        if (tmp > a[i])
            tmp = a[i];
    return tmp;
}
int main()
{
    int *num = 0, len=0;
    printf("请输入数的个数:");
    scanf("%d",&len);
    num = (int *)malloc(sizeof(int)*len);
    printf("请输入所有的数:");
    for (int i = 0; i!=len; ++i)
        scanf("%d",&num[i]);
    printf("最大值为%d\n",max(num, len));
    printf("最小值为%d\n",min(num, len));
    return 0;
}

如果是C++,就这样:

#include <iostream>
using namespace std;
int max(int a[], int n)
{
    int tmp = a[0];
    for (int i = 0; i!=n; ++i)
        if (tmp < a[i])
            tmp = a[i];
    return tmp;
}
int min(int a[], int n)
{
    int tmp = a[0];
    for (int i = 0; i!=n; ++i)
        if (tmp > a[i])
            tmp = a[i];
    return tmp;
}
int main()
{
    int *num = 0, len=0;
    cout << "请输入数的个数:";
    cin >> len;
    num = new int[len];
    cout << "请输入所有的数:";
    for (int i = 0; i!=len; ++i)
        cin >> num[i];
    cout << "最大值为" << max(num, len) << endl;
    cout << "最小值为" << min(num, len) << endl;
    delete [] num;
    return 0;
}

追问

那有没有流程图啊

追答

流程图……这么简单的东西还要画流程图啊……
我前几天重装系统了,visio没装,你自己画不行吗……
就是先让tenp等于数组第一个元素,然后从数组第二个元素开始往后找,如果比temp大就把它赋给temp

追问

我不懂怎嘛安排流程,可以大概讲解一下吗

追答

首先是开始,往下是temp = a[0];

然后是判断,就是四边形,里面写i<n

右边直接一根箭头指向下面的结束,线上写N;

往下一根箭头指向另一个判断,里面写temp>a[i],往下走是Y,下面i++;

往右跳过I++的是N,最后都回到上面的判断i<n处就行了……

表达能力欠佳……

你试试这个……

大概就是这样……

追问

VisualC++ 6.0的c语言软件怎么运行不出来,有好几个错误

追答

我都截图给你看了……说明代码是没问题的啦,你看看什么错误噻,不会是"弄成了“吧,还是,弄成了, ???

追问

追答

你把代码的截图遮住了……你没改我写的就绝对没错!

肯定是你乱改了,又没改对……

追问

没改,复制过去的,可能是软件问题吧,谢啦

追答

.c………….cpp会死啊……

要不你改成cpp吧……

你们学校难道交的全是.c文件吗,就算是学C一般也是写.cpp啊


这是c文件的问题……

改成这样就行了:

#include <stdio.h>
#include<stdlib.h>

int Max(int a[],int n)
{
    int tmp = a[0],i;
    for (i = 0; i!=n; ++i)
        if (tmp < a[i])
            tmp = a[i];
    return tmp;
}
int Min(int a[], int n)
{
    int tmp = a[0],i;
    for (i = 0; i!=n; ++i)
        if (tmp > a[i])
            tmp = a[i];
    return tmp;
}
int main()
{
    int *num = 0, len=0,i;
    printf("请输入数的个数:");
    scanf("%d",&len);
    num = (int *)malloc(sizeof(int)*len);
    printf("请输入所有的数:");
    for (i = 0; i!=len; ++i)
        scanf("%d",&num[i]);
    printf("最大值为%d\n",Max(num, len));
    printf("最小值为%d\n",Min(num, len));
    return 0;
}

这下总行了吧。。。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-06-01

/*

38 45 21 8 90 32 46 10 66

max = 90

min = 8

Press any key to continue

*/

#include <stdio.h>

int max(int a[], int n) {
int i,max = a[0];
for(i = 1; i < n; ++i)
if(max < a[i]) max = a[i];
return max;
}

int min(int a[], int n) {
int i,min = a[0];
for(i = 1; i < n; ++i)
if(min > a[i]) min = a[i];
return min;
}

int main() {
int a[] = {38,45,21,8,90,32,46,10,66};
int i,n = sizeof(a)/sizeof(a[0]);
for(i = 0; i < n; ++i)
printf("%d ",a[i]);
printf("\nmax = %d\n",max(a,n));
printf("min = %d\n",min(a,n));

return 0;
}

相似回答