为什么以下程序在获取数组中的输入后停止工作?

时间:2018-09-11 15:00:08

标签: c arrays max scanf min

我编写了以下程序来查找数组的最大和最小元素。该程序获取数组的输入,但随后停止工作。其背后的原因是什么?

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n,i,l,s,t;
    printf("Enter number of inputs.\n");
    scanf("%d",&n);
    int a[n];
    printf("Enter inputs.\n");
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    l=a[0];
    s=a[0];
    for(i=0;i<n;i++)
    {
        if(a[i]>l)
        {
            l=a[i];
        }
        if(a[i]<s)
        {
            s=a[i];
        }
    }
    printf("max = %d , min = %d\n",l,s);
    return 0;
}

4 个答案:

答案 0 :(得分:0)

在cpp中,动态数组应使用此语法。

int *a = new int[n] ;

如果您想使用cpp并希望拥有动态列表,则可以使用vector

std::vector<int> a;

答案 1 :(得分:0)

首先,您的代码在下面的printf语句中缺少结尾的结束符。您的代码运行正常。

printf("Enter of inputs.\n");

还有另一种可能性,您可能正在使用某些IDE在程序结束时关闭结果窗口,您可以尝试将getchar()放在return之前以保持屏幕。

答案 2 :(得分:0)

您在这里缺少一个"符号:

printf("Enter of inputs.\n);

此后,它对我(在Linux上)运行良好,只有一个肯定无害的警告:

$ gcc -Wall -Wextra t.c
t.c: In function ‘main’:
t.c:6:17: warning: unused variable ‘t’ [-Wunused-variable]
     int n,i,l,s,t;

$ ./a.out
Enter number of inputs.
1
Enter of inputs.
1
max = 1 , min = 1
$ ./a.out
Enter number of inputs.
10
Enter of inputs.
20
21
23
24
25
26
27
28
29
2023
max = 2023 , min = 20

可能您输入了错字并重新编译了它,但又继续运行一个旧的可执行文件(因为它无法重新编译)?

答案 3 :(得分:0)

好吧,找到它们后,您没有提供最大和最小数字的输出(printf语句)。程序应该是这样的:-

int main()
{
int n,i,l,s,t;
printf("Enter number of inputs.\n");
scanf("%d",&n);
int a[n];
printf("Enter of inputs.\n");
for(i=0;i<n;i++)
{
    scanf("%d",&a[i]);
}
l=a[0];
s=a[0];
for(i=0;i<n;i++)
{
    if(a[i]>l)
    {
        l=a[i];
    }
    if(a[i]<s)
    {
        s=a[i];
    }
}
printf("Largest no : %d and smallest no : %d",l,s);
return 0;
}