C 数组中的最大值

C 数组中的最大值,c,arrays,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 t

我被要求编写一个程序,接受一个数字列表,直到遇到一个非数字(最多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;
}
#包括
int main()
{
常量int输入=30;
整数大小[输入];
int i,大;
printf(“键入整数,后跟q以退出:”);
而(scanf(“%d”,&size[INPUT])!='q')
{
对于(i=0;i):

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

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

const int SIZE = 30 ;
int input[SIZE];
因此while循环应该如下所示:

while (scanf("%d", &input[some_index]) == 1)
当然,这是错误的:

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

除了这些问题,我还在评论中列出了。你似乎被各种各样的名字迷住了~不管怎样,我给你写了一些代码

#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;
}
#包括
int main()
{
const int MAX_输入=30;
整数输入[最大输入];
int size=0,大;
printf(“键入整数,后跟q以退出:”);
while(大小<最大输入){
如果(scanf(“%d”),&input[size])!=1){
打破
}
++大小;
}
如果(大小==0){
返回0;
}
大=输入[size-1];
而(大小-->0)
{

如果(big1.while循环是错误的;2.滥用scanf的返回值。@Shane,你能帮我一下吗?他帮了。看看scanf返回的是什么,并评估你的循环条件。请问一个特定的问题,不要只是发布代码,问它有什么问题。但我之所以输入q,是因为1st是一个数组,所以我将输入多个数字,我想要当我输入q时,它将停止循环。q将停止循环,因为它无法成功地分配给整数。非常感谢,现在我将再次处理此问题,并尝试找出如何处理while循环,以便我可以反复处理。另一个问题是,当我单独输入q而不是退出时,会给我一个最大值,而e循环没有循环。是我的错。忘了检查它。我更新了代码。