-1

我被要求编写一个程序,该程序接受一个数字列表,直到遇到非数字(最多 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;
}
4

2 回答 2

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 测试。

于 2013-04-02T01:12:30.003 回答
0

scanf 的返回值

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

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

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

所以while循环应该是这样的:

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

当然这是错误的:

scanf("%d",&INPUT[i]);  // should be ==> &input[i]
于 2013-04-02T01:01:07.050 回答