c 编程 10 个数字中的最大值 .我的代码有什么问题?我没有得到输出


#include <stdio.h>
#include <stdlib.h>
int main()
{      
    int a[10], greatest = 0, i;     
    a[0] = greatest;
    for (i = 0 ; i < 10 ; i++)
    {
        scanf("%d", a[i]);
    } 
    for (i = 0 ; i < 10 ; i++)
    {
        if (a[0] < a[i])
        {
            greatest = a[i];
        }    
    }
    printf("%d", a[i]);
    return 0;
}

对于初学者(除了其他逻辑错误)此语句

a[0] = greatest;

没有意义。

该程序可能看起来像

#include <stdio.h>
#define N 10
int main( void )
         ^^^^^
{      
    int a[N];
    int greatest;
    int i;     
    for ( i = 0 ; i < N ; i++ ) scanf( "%d", &a[i] );
                                             ^^^^^ 
    greatest = a[0];
    ^^^^^^^^^^^^^^^^
    for ( i = 1 ; i < N ; i++ )
    {
        if ( greatest < a[i] ) greatest = a[i];
             ^^^^^^^^^^^^^^^   ^^^^^^^^^^^^^^^
    }
    printf( "%dn", greatest );
                  ^^^^^^^^
    return 0;
}

您的代码存在许多问题。让我们一一看


1) scanf()需要一个地址。
scanf("%d", &a[i]);
            ^

添加与号。


2)在上一次printf()中使用 i 的值之前,不要重置该值。

printf("%d", a[i]);

因此,i = 10 ,这是数组a[]的越界,因此导致未定义的行为。


3)由于您将值存储在变量中,greatest在此处的for循环中,
for (i = 0 ; i < 10 ; i++)
{
    if (a[0] < a[i])
    {
        greatest = a[i];
    }    
}

在比较最大数字时,还应与变量 greatest 进行比较。因为它将始终包含更新的最大值。在开始此循环之前,最好将第一个值存储在变量greatest

greatest = a[0];
for (i = 1 ; i < 10 ; i++)
{
    if (greatest < a[i])
    {
        greatest = a[i];
    }    
}

稍后,打印 greatest 变量中的值。

printf("%d", greatest);

注意:使用main()的标准定义

int main(void) //if no command line arguments.