我编写了以下程序来查找数组的最大和最小元素。该程序获取数组的输入,但随后停止工作。其背后的原因是什么?
#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;
}
答案 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;
}