m0_67795459 2022-04-08 14:30 采纳率: 50%
浏览 60
已结题

求N个集合元素S[]中的最大值,其中集合元素的类型为自定义的ElementType。

//已给的代码
#include <stdio.h>

#define MAXN 10
typedef float ElementType;

ElementType Max( ElementType S[], int N );

int main ()
{
ElementType S[MAXN];
int N, i;

scanf("%d", &N);
for ( i=0; i<N; i++ )
    scanf("%f", &S[i]);
printf("%.2f\n", Max(S, N));

return 0;

}

/* 你的代码将被嵌在这里 */
//我写的:
ElementType Max(ElementType S[],int N){
ElementType max;
for(int i=0;i<N;i++){
max=S[0];
if(S[i]>=max){
max=S[i];
}else max=max;
}
return max;
}
//运行显示部分正确
//完全正确的代码:
ElementType Max(ElementType S[],int N){
ElementType max=S[0];
for(int i=0;i<N;i++){
if(S[i]>=max){
max=S[i];
}else max=max;
}
return max;
}
//关键就在max的赋值是在循环里面还是外面,我试了好几次觉得应该是一样的吧,问题出在哪里?

  • 写回答

4条回答 默认 最新

  • 关注

    你的代码在每次循环的时候,都把max重置为S[0]了,也就是把前面得到的max的值给覆盖掉了,你的代码需要加一个if语句就可以了,如下:

    ElementType Max(ElementType S[], int N) {
        ElementType max;
        for (int i = 0; i < N; i++) {
            if(i==0) //增加这个if语句
                max = S[0];
            if (S[i] >= max) {
                max = S[i];
            }
            else max = max;
        }
        return max;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 5月27日
  • 已采纳回答 5月19日
  • 创建了问题 4月8日