acm简单c语言问题QAQ【编程实现从键盘任意输入20个整数,统计非负数个数,并计算非负数之和。】

/*

题目描述

编程实现从键盘任意输入20个整数,统计非负数个数,并计算非负数之和。
输入格式

首先输入一个整数K ,表示下面有K行。

接下来的K行,每行输入20个整数。

输出

输出和和个数。以空格分隔。
样例输入

1
28 49 -31 -11 39 -8 33 26 19 36 -14 -39 -31 -43 25 37 25 -43 -36 -2

317 10
*/

#include<stdio.h>
int main()
{
int i, l, k;
int a[20][20];
int n = 0;
int sum = 0;

while(scanf("%d", &k)!=EOF)
{
for(l=0;l<k;l++)
{
for(i=0; i<20; i++)
{
scanf("%d", &a[l][i]);
}
}

for(l=0;l<k;l++)
{
for(i=0;i<20;i++)
{
if(a[l][i]<0)
{
n++;
}
else
{
sum += a[l][i];
}
}
printf("%d %d\n", sum,n);
sum = 0;
n = 0;
}
}
return 0;
}
自已输入答案无误,但是平台提交一直出错,我不知道是不是自己代码有问题,求大神看一看

我说三个注意点,第一,除数不能为零,第二,题目没有要求多实例,第三,输入第一个数(K)如果是大于20的你的数组纵向会越界。
一个建议,输入时候已经可以判断,无需数组存储可以直接判定,追问

第一:我这里没有除法运算
第二:没有要求那么多实例是什么意思?

第三:我该怎么改,放大吗?
建议:但是我这里可能需要计算多行数啊

追答

哦,没注意不用求平均数
你没理解题目,题目是单实例,也就是只会有一次输入k,然后接下来是k行,题目要求是每行结束直接输出结果,不是全部完成才输结果。
二十个数字不需要存储,题目只是要求统计功能,控制输入20次,计算一次输出即可。
给你一段我的代码

int k,sum,cun,a;
cun = 0;
sum = 0;
scanf("%d",&k);
while(k--){
int temp = 20;
while(temp--){
scanf("%d",&a);
if(a<0)cun++;
else sum += a;
}
printf("%d %d",sum,cun);
}

追问

so sad,我提交了你的,但是也是不成功嗷嗷嗷泪目

追答

提示什么错误,?你吧题目给我我可以给你看看,那个OJ

温馨提示:答案为网友推荐,仅供参考
相似回答