69,751
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
int main()
{
long n,k;
scanf("%ld%ld",&n,&k);
long a[1100];
long long sum;
for(int i=1;i<=n;i++)
{
scanf("%ld",&a[i]);
}
for(int i=1;i<=k;i++)
{
int l,r;
l=0;r=0;
scanf("%d%d",&l,&r);
sum=0;
while(l<=r)
{
while(a[l]==0)
{
l=l+1;
if(l>r)
break;
}
if(l>r)
break;
sum=sum+a[l];
l=l+1;
}
printf("%lld\n",sum);
}
return 0;
}
同学,我修改了部份代码,你看改成这样是不是更好:
#include <stdio.h>
int main() {
long n, k;
scanf("%ld%ld", &n, &k);
// long a[1100]; // 原式:没有必需啊,重量怎么可能是长整数呢?
int a[1100];
// long long sum; // 原式:没有必需啊,重量怎么可能是长整数呢?
int sum;
for (int i = 1; i <= n; i++) {
// scanf("%ld", &a[i]); // 原式
scanf("%d", &a[i]);
}
for (int i = 1; i <= k; i++) {
int l, r;
l = 0;
r = 0;
scanf("%d%d", &l, &r);
sum = 0;
// while (l <= r) { // 直接用for循环不是更好吗
// while (a[l] == 0) { // 原式:不明白想表达什么意思?
// l = l + 1;
// if (l > r)
// break;
// }
// if (l > r) // 这个退出条件也是多余的
// break;
// sum = sum + a[l];
// l = l + 1;
// }
for (; l <= r && r < n; l++) { // 使用for循环,同时也要检测是否越界
sum += a[l];
}
// printf("%lld\n", sum); // 原式
printf("%d\n", sum);
}
return 0;
}
同学,这一段想表达什么呢?跟题意没一点关系,如果a很大,它就是个死循环无异?
while(a[l]==0)
{
l=l+1;
if(l>r)
break;
}
数组改成a[11000]也是运行错误