请教杭电OJ的题,C语言,题目如题,代码如下,杭电OJ上一直提示时间超时T^T,请问怎么改?
#include<stdio.h>intmain(){inta,i,j;intsum=0;intnum[50];while(scanf("%d",&a)&&(a!=0))...
#include <stdio.h>
int main()
{
int a,i,j;
int sum=0;
int num[50];
while(scanf("%d",&a)&&(a!=0)){
num[0]=a;
i=1;
while(scanf("%d",&num[i])&&(num[i]!=a)){
i++;}
for(j=0;j<i;j++){
sum=sum+num[j];
}
printf("%d\n",sum);
sum=0;
}
return 0;
} 展开
int main()
{
int a,i,j;
int sum=0;
int num[50];
while(scanf("%d",&a)&&(a!=0)){
num[0]=a;
i=1;
while(scanf("%d",&num[i])&&(num[i]!=a)){
i++;}
for(j=0;j<i;j++){
sum=sum+num[j];
}
printf("%d\n",sum);
sum=0;
}
return 0;
} 展开
1个回答
展开全部
我觉得你把题目意思理解错了,每一行的第一个数据是代表求和的数据的个数为N,后面的数据个数为N,所以:
while(scanf("%d",&num[i])&&(num[i]!=a)){
i++;}
应该变为:
while((i<=a)&&scanf("%d",&num[i])){
i++;}
并且,
for(j=0;j<i;j++){
sum=sum+num[j];
}
j的起始值应该从1开始
while(scanf("%d",&num[i])&&(num[i]!=a)){
i++;}
应该变为:
while((i<=a)&&scanf("%d",&num[i])){
i++;}
并且,
for(j=0;j<i;j++){
sum=sum+num[j];
}
j的起始值应该从1开始
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询