编写程序从用户那里输入 10 个数字并打印最大的一个

Write a programme to input 10 numbers from the user and print greatest of all

我已经编写了程序,但我猜其中存在某种编码错误。 输入部分工作正常但查找和打印最大数字不是。

#include<stdio.h>
int main()
    {
    int i, arr[10],c=0;
    for(i=1;i<=10;i++)
    {
        printf("enter 10 nos. for arr[%d] :",i);
        scanf("%d",&arr[i]);
    }
    for(i=1;i<=10;i++)
    {
        while(arr[i]>c)
        {
            c=arr[i];
        }
        printf("Greatest number in a given array is:%d",c);
    }
    return 0;
} 

这是代码

#include <stdio.h>
  int main() {
    // Taking Variables
    int a[10];
    int i;
    int greatest;

    //Taking exactly 10 inputs in an array by using for loop
    printf("Enter ten values:");
    for (i = 0; i < 10; i++) {
      scanf("%d", &a[i]);
    }

    //Iterating through the array and comparing all the values, the one which is the greatest of all is printed
    greatest = a[0];
    for (i = 0; i < 10; i++){
      if (a[i] > greatest){
        greatest = a[i];}
      }
    printf("Greatest of ten numbers is %d", greatest);
    return 0;
  }

在 C 中索引从 0 开始,因此 for(i=1;i<=10;i++) 条件在两个方面是错误的:您从第二个数组项开始(缺少 arr[0]),然后您将退出当 i 为 10 时,与 arr[i] 边界。

您也应该将 while 更改为 if,因为您实际上并不打算在那里设置循环。您只需要执行一次条件下的代码。您还应该考虑当您的输入中有负值时会发生什么。

最后但同样重要的是 - 如果您想打印出最终结果,printf 可能应该在 for 循环之外。

首先,数组索引从零开始,arr[10]越界
二、将最小整数值赋给c.
第三,将 while 更改为 if 并将第二个 printf() 放在第二个 for 语句之外。

如果你有一个像

这样声明的数组
int a[N];

其中 N 是某个正整数值,那么访问数组元素的索引的有效范围是 [0, N)

表示例如这个for循环

for(i=1;i<=10;i++)
{
    printf("enter 10 nos. for arr[%d] :",i);
    scanf("%d",&arr[i]);
}

必须看起来像

for ( i = 0; i < 10; i++ )
{
    printf("enter 10 nos. for arr[%d] :",i);
    scanf("%d",&arr[i]);
}

这个while循环

    while(arr[i]>c)
    {
        c=arr[i];
    }

只是没有意义,可能是一个无限循环。

另外这个printf的调用

    printf("Greatest number in a given array is:%d",c);

放在for循环中。

程序可以这样看

#include <stdio.h>

int main( void )
{
    enum { N = 10 };
    int arr[N];

    printf( "Enter %d numbers:\n", N );
 
    for ( int i = 0; i < N; i++ )
    {
        printf("\t%d: ", i + 1 );
        scanf( "%d", arr + i );
    }

    int max = 0;

    for ( int i = 1; i < N; i++ )
    {
        if ( arr[max] < arr[i] ) max = i;
    }

    printf( "The greatest number in the given array is: %d\n", arr[max] );

    return 0;
}