我编写了以下代码,但它生成了荒谬的输出值。我无法弄清楚代码中有什么问题。
#include <stdio.h>
int main(void)
{
int t, n, i, count;
scanf("%d", &t);
while(t--)
{
scanf("%d", &n);
long long a[n], limit;
for(i = 1; i <= n; i++)
scanf("%lld", &a[i]);
count = 1;
limit = a[1];
for(i = 2; i <= n; i++)
{
if(a[i] < limit)
{
count++;
limit = a[i];
}
}
printf("%lld\n", count);
}
return 0;
}
输入:-
3
1
10
3
8 3 6
5
4 5 1 2 3
输出:-
-4621320042389176319
4615368115365085186
-4621320334446952446
请解释我的代码中的任何问题。
最佳答案
至少有两个问题: 首先,在 C 中,数组索引从 0 开始,而不是 1。所以它必须是
for(i = 0; i < n; i++)
scanf("%lld", &a[i]);
count = 1;
limit = a[0];
for(i = 1; i < n; i++)
{
if(a[i] < limit)
{
count++;
limit = a[i];
}
}
其次,您调用 printf("%lld\n", count);
但是 count
是一个“普通 int”,所以它应该是 printf ("%d\n", 计数);
关于c - 产生荒谬的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41465129/