数组中最大的值

时间:2013-04-02 00:41:03

标签: c arrays

我被要求编写一个程序,接受一个数字列表,直到遇到非数字(最多30个数字),将数字放入数组,并跟踪插入的数字。然后它应该扫描数组以找到最大的数字,并打印最大的数字。

这就是我想出来的:

#include<stdio.h>
int main()

{
    const int INPUT = 30 ;
    int size [INPUT];
    int i, big;


  printf("Type integer numbers, followed by q to quit: ");
  while (scanf("%d", &size[INPUT]) != 'q')
 {

    for(i=0;i<size;i++)
      scanf("%d",&INPUT[i]);
  big = INPUT[0];


  for(i=1;i<size;i++)

  {
      if(big<INPUT[i])
           big=INPUT[i];
  }

  printf("The largest number is %d",big);
  return 0;
}

2 个答案:

答案 0 :(得分:1)

除了问题,我在评论中列出。你似乎对变量名称感到困惑〜无论如何,我为你做了一些代码。

#include<stdio.h>

int main()
{
    const int MAX_INPUT = 30 ;
    int input[MAX_INPUT];
    int size=0, big;


    printf("Type integer numbers, followed by q to quit: ");
    while(size < MAX_INPUT){
        if(scanf("%d", &input[size]) != 1){
            break;
        }
        ++size;
    }

    if(size ==0){
        return 0;
    }

    big = input[size-1];

    while( size-- > 0)
    {
        if(big<input[size]){
            big=input[size];
        }
    }

    printf("The largest number is %d\n",big);
    return 0;
}

使用GCC 4.1.2和Linux进行测试。

答案 1 :(得分:0)

Return value of scanf

  

成功完成后,这些函数返回   已成功匹配和分配的输入项目的数量

此外,您正在混合大小和输入,您实际上希望大小为常量并输入为数组:

const int SIZE = 30 ;
int input[SIZE];

所以while循环应该如下所示:

while (scanf("%d", &input[some_index]) == 1)

当然这是错误的:

scanf("%d",&INPUT[i]);  // should be ==> &input[i]