新手求教! acmer1004,求大神帮看看代码错哪了
新手求教!!! acmer1004,求大神帮看看代码哪里错了。
输入的第一行是一个正数N,表示后面有N行。每一行的第一个数是M,表示本行后面还有M个数。
样例输入
2
4 1 2 3 4
5 1 2 3 4 5
样例输出
10
15
我的代码:
#include <stdio.h>
int main()
{
int n,m,k;
int s1[50]={0};
int c=0;
scanf("%d\n",&n);
while(scanf("%d\n",&m)&&n>0)
{
int s=0;
if(m==0)
break;
else
for(int i=0;i<m;i++)
{
scanf("%d",&k);
s=s+k;
}
s1[c]=s;
c++;
n--;
}
for(int i=0;i<c;i++)
{
printf("%d\n",s1[i]);
}
return 0;
}
运行结果:
2
4 1 2 3 4 5
5 1 2 3 4 5
6 1 2 3 4 5
10
15
不明白为什么我能多输入6开头那一行。弄了一个早上也没找出问题,求大神赐教啊!
------解决方案--------------------
step by step debug
------解决方案--------------------
------解决方案--------------------
输入的第一行是一个正数N,表示后面有N行。每一行的第一个数是M,表示本行后面还有M个数。
样例输入
2
4 1 2 3 4
5 1 2 3 4 5
样例输出
10
15
我的代码:
#include <stdio.h>
int main()
{
int n,m,k;
int s1[50]={0};
int c=0;
scanf("%d\n",&n);
while(scanf("%d\n",&m)&&n>0)
{
int s=0;
if(m==0)
break;
else
for(int i=0;i<m;i++)
{
scanf("%d",&k);
s=s+k;
}
s1[c]=s;
c++;
n--;
}
for(int i=0;i<c;i++)
{
printf("%d\n",s1[i]);
}
return 0;
}
运行结果:
2
4 1 2 3 4 5
5 1 2 3 4 5
6 1 2 3 4 5
10
15
不明白为什么我能多输入6开头那一行。弄了一个早上也没找出问题,求大神赐教啊!
C
------解决方案--------------------
step by step debug
------解决方案--------------------
while(scanf("%d\n",&m)&&n>0) //把n>0放在前面,代码如下行
while(n>0 && scanf("%d\n",&m)) //这样就可以了
------解决方案--------------------
#include <stdio.h>
int main()
{
int n,m,k;