1)
3)由于您将值存储在变量中,
#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.